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_URLand 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 atruntime/.env.example
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.
