Governance infrastructure for AI agents
Agents don't need keys.
They need permission.
Every credential encrypted. Every call proxied. Every dollar tracked. Open-source middleware that sits between your agents and everything they touch.
The problem
Your agent has the same access as you.
That's the problem.
Keys live in env vars
Private keys and API credentials as plaintext environment variables. One prompt injection away from total compromise.
No boundaries
No spending limits, no rate limits, no approved address lists. Agents sign whatever they want, call whatever they want.
No visibility
No audit trail. No cost attribution. When something goes wrong, you find out from your bank statement.
Architecture
Three layers between your agent
and the real world.
Vault
AES-256-GCM encryption at rest
- Wallet private keys encrypted, never exposed to agents
- API credentials stored and injected at the proxy layer
- Scoped tokens for agent authentication
Policy Engine
Default deny, explicit allow
- Per-agent spending limits — daily, monthly, per-transaction
- Rate limiting with sliding windows per API, per agent
- Approved address and contract allowlists
Proxy Gateway
The only door out
- Every outbound call flows through Steward
- Credentials injected at the edge, stripped from logs
- Full cost attribution and audit trail per agent
SDK
Sign transactions.
Proxy APIs.
Enforce everything.
TypeScript SDK for policy-checked signing and credential-injected API proxying. Works with any agent framework.
npm i @stwd/sdk// Policy-enforced signing// Policy-enforced signing// Policy-enforced signing// Policy-enforced signing// Policy-enforced signing// Policy-enforced signing// Policy-enforced signing-enforced signing
const tx = await steward.signTransaction(agentId, {
to: "0xDEX...",
value: "100000000000000000",
})// Credentials injected — agent never sees the key// Costs tracked, rate-limited, audited// Costs tracked, rate-limited, audited// Costs tracked, rate-limited, audited// Costs tracked, rate-limited, audited// Costs tracked, rate-limited, audited// Costs tracked, rate-limited, audited, rate-limited, auditedawait steward.setPolicies(agentId, [
{ type: "spending-limit",
config: { maxPerTx: "1e18",
maxPerDay: "10e18" } },
{ type: "rate-limit",
config: { window: "1m",
maxRequests: 60 } },
{ type: "approved-addresses",
config: { addresses: [
"0xUniswap...",
"0xTreasury..."] } },
])Works with any agent framework
Multi-tenant by default
One Steward instance for thousands of agents across isolated tenants. Each tenant gets its own policies, credentials, and webhook endpoints. Self-hosted. No per-transaction toll.
Open source
Infrastructure you own, not a dependency you rent.
MIT-licensed. Self-hostable. No per-transaction fees.
