Senso
the autonomous business agent with an Arc wallet and an onchain constitution.
Arc USDC Gas MCP TypeScript Solidity
Give an agent a goal. Give it money. Keep the rules outside its head.
Senso is an open protocol for creating bounded economic agents on Arc, Circle's open EVM-compatible layer 1. It compiles a human mandate into a typed policy, attacks that policy for loopholes, and deploys an Arc policy account that uses USDC for both native gas and settlement.
the idea
Today's agents are given prompts and credentials. Prompts are soft; credentials are absolute. A model can misunderstand a sentence, split one forbidden payment into five permitted payments, or decide that breaking a rule is useful to the larger goal.
Senso separates reasoning from authority. A model may propose any action. Only the policy account can authorize it.
run my site for $500/month. no annual plans. never advertise. ask before any payment over $50.how it works
human mandate
│
▼
intent compiler ──► typed policy ──► breaker agent
│
counterexample search
│
▼
user signs policy root ──► Arc policy account
│ │
▼ ▼
Arc network Circle platform
USDC / contracts Wallets / CCTP / Gateway
architecture
| Package | Responsibility | Trust |
|---|---|---|
@Senso/compiler | Natural language → canonical policy DSL | Untrusted proposal |
@Senso/breaker | Conflict detection and multi-step bypass search | Adversarial |
@Senso/account | Arc policy validation, USDC limits and execution | Onchain enforcement |
@Senso/arc | Circle Wallets, CCTP and Gateway integration | Circle boundary |
@Senso/ledger | Arc receipts, USDC accounting and policy commitments | Auditable |
@Senso/runtime | Planning, simulation, execution and compensation | Replaceable |
repository
Senso/
├── apps/
│ ├── web/ policy builder + activity ledger
│ └── agent/ planner and MCP runtime
├── contracts/
│ ├── SensoAccount.sol Arc policy account
│ ├── SensoPolicy.sol deterministic authorization
│ └── PolicyRegistry.sol versioned policy roots
├── src/
│ ├── compiler/ mandate parser + canonicalizer
│ ├── breaker/ counterexample search
│ ├── runtime/ plan / simulate / execute / compensate
│ ├── arc/ Circle Wallets / CCTP / Gateway
│ └── ledger/ USDC accounting + Arc receipts
├── examples/mandate.yaml
└── test/invariants/ Arc Foundry invariant tests
policy lifecycle
- Draft. The compiler produces a typed policy and explains every inferred value.
- Attack. The breaker searches for split-spend, asset-hop, stale-price and approval bypasses.
- Confirm. The user reviews the canonical policy—not the original prompt—and signs its hash.
- Deploy. A policy account and bounded session key are created on Arc.
- Execute. Every action is simulated and checked against pre-state and expected post-state.
- Reconcile. USDC transfers, fees and contract calls settle into one ledger; policy commitments and execution receipts remain verifiable on Arc.
quick start
git clone https://github.com/TBA/Senso
cd Senso
pnpm install
cp .env.example .env
# compile and attack an example mandate
pnpm Senso compile examples/mandate.yaml
# test with Arc execution semantics and deploy through an Arc RPC
FOUNDRY_PROFILE=arc arc-forge test
FOUNDRY_PROFILE=arc arc-forge script script/Deploy.s.sol --rpc-url $ARC_RPC_URL --broadcast
# start the local agent and policy console
pnpm dev
execution guarantees
- The language model never owns the account or master key.
- Session keys expire and are scoped by target, asset, value and time.
- Limits apply to aggregate spend, preventing transaction splitting.
- Unknown contracts and assets fail closed.
- High-risk operations require an owner signature.
- USDC is used for native gas and settlement, keeping fees denominated in dollars.
- Circle Wallets, CCTP and Gateway routes are checked against the same signed policy before execution.
status
| Mandate DSL | prototype |
| Breaker agent | prototype |
| Arc policy account | deployed |
| Circle platform integration | integration |
| Security audit | not started |
disclaimer
Experimental software. Not audited. Do not use with funds you cannot afford to lose. Arc execution and Circle platform services have distinct trust boundaries; Senso verifies policy before every USDC movement and records the resulting Arc transaction receipt.
rule zero
The model never gets the master key.