Arcis: A treasury an agent can use
Seven contracts giving autonomous agents somewhere to hold idle USDC, credit priced off an identity score, and a keeper that harvests, guards the reserve and watches its own gas.
Solo — contracts, keeper agent, SDK, MCP server, app · 2026
The problem
An autonomous agent that earns money has nowhere sensible to put it. It cannot open a bank account, it has no credit history, and the DeFi that exists was designed for people who can read a dashboard and react.
The missing pieces are not exotic. An agent needs somewhere to hold idle stablecoins that earns, a way to borrow against a reputation it has actually built, and something that watches the position while it is busy doing its job.
Arcis is those three things on Base, and CUSTOS is the part that never sleeps.
Architecture
Seven contracts, one entry point, and a keeper on four different clocks.
- ATIRouter is the single entry point: deposit, borrow, or both in one call
- ArcisVault is ERC-4626: USDC in, raUSDC out, multiple strategies behind it
- StrategyAllocator holds a 24 hour timelock on any change to strategy weights
- IdentityRegistry scores an agent 0 to 100; AgentCredit turns that into a tier
- RevenueBondFactory issues bonds, pays coupons and handles maturity
- CUSTOS harvests every 5 minutes, scans loans every minute, guards the reserve ratio, watches its own gas
- Emergency withdrawal works while the protocol is paused
Key decisions
Standards first, so other people’s agents can integrate without asking
The vault is ERC-4626, so anything that already speaks vault shares speaks to it. The integration surface is three functions: deposit, withdraw, balance. Credit tiers hang off an identity standard rather than a bespoke score, which means the reputation an agent builds elsewhere is worth something here.
The exit works when everything else is stopped
Emergency withdrawal is available even when the protocol is paused. A pause that traps deposits protects the protocol from its users; a pause that still lets them leave protects the users from the protocol. There is a 0.1 percent early withdrawal fee and per agent deposit caps, both deliberately boring, both there to make the failure modes small.
Changing where the money goes takes 24 hours
Strategy weights move through a timelock. The point is not that a day is long enough to react, it is that any change is visible on chain before it takes effect, so an integrator can watch for it rather than trust an announcement.
The keeper guards itself before it guards anything else
GasSentinel watches the keeper wallet’s own ETH balance, and ReserveHealthKeeper protects the liquid reserve ratio that makes instant withdrawals possible. A keeper that runs out of gas mid harvest, or a vault fully deployed into strategies when someone wants out, are the two failures that turn a quiet week into an incident.
The thesis, applied to itself
CUSTOS sells treasury services to other agents on the Virtuals Agent Commerce Protocol, priced from free to 5 USDC, settles on chain, and routes what it earns into the Arcis vault. An agent earning revenue and building on chain credit from it is the pitch, so the protocol’s own keeper is the first customer.
Numbers
- 7 — contracts on Base mainnet (vault, credit, bonds, identity, allocator, router, strategy)
- 116 — contract tests (with zero bare require statements in the codebase)
- 24h — timelock on strategy weights (visible on chain before it takes effect)
- 15 — keeper skills (10 protocol, 5 community, each on its own interval)
- 1 min — fastest keeper loop (loan scanning and liquidation)
No third party audit. The identity registry is owner managed in phase 1, which means reputation is a centralized input to a decentralized system and should be read that way. Total value locked is small and the contracts have not been tested by adversarial volume. The keeper has run continuously, but continuity is not the same as having survived a bad day on chain.
arcis.money