Skip to main content
Zhentan’s long-term goal is that you run your own agent — the service that screens your transactions and holds the co-signing key answers to you, on your machine, while the Zhentan backend keeps doing what a backend should: canonical state, the Safe Transaction Service mirror, and gas relay. The architecture for this already exists. This page is honest about which parts are real today and which are on the roadmap.

What Exists Today

The agent runtime is a fully separable process with a hard boundary:
  • It talks to the backend exclusively over an authenticated HTTPS API — configure RUNTIME_API_URL and it can run anywhere
  • It has no database credential (enforced by lint, dependency guards, and a boot test) and accepts no inbound connections
  • It holds the signing key (AGENT_PRIVATE_KEY) behind a verifying authority: it recomputes every transaction hash, reads the Safe’s owners and nonce from chain (RUNTIME_RPC_URL), and signs only what its own decision log proves it screened
  • It ships with deployment tooling: ./runtime/run.sh build && ./runtime/run.sh start (PM2), a localhost health endpoint, and an env template at runtime/.env.example
If the runtime is offline, screened transactions wait — nothing executes without a verdict, and your relay-only and backup-key flows continue untouched.

What’s Coming

Today there is one shared agent identity, so running the runtime yourself is an operational split, not yet your agent. The remaining milestones: The signing rules, wire protocol, and verification model shipping today were built for that end state — self-hosting swaps credentials and configuration, not architecture.
Until per-agent credentials ship, the runtime deployment is operated by Zhentan. The security properties above — user-held key majority, screened-only signing, the Safe-app override — hold either way.