Skip to main content
Source of truth: THREAT-MODEL.md section 3.
Every layer re-checks what the layer before it claims. Three bands: untrusted input, the platform, and Monad. The browser and provider responses are re-validated by the platform, the strategy's proposal is checked by the RiskModule, and the chain re-checks the approved plan and rejects any other address.Every layer re-checks what the layer before it claims. Three bands: untrusted input, the platform, and Monad. The browser and provider responses are re-validated by the platform, the strategy's proposal is checked by the RiskModule, and the chain re-checks the approved plan and rejects any other address.

Trust boundaries: the browser and provider responses are untrusted input (boundaries B10 and B3), the strategy proposes and the RiskModule checks (B1), the chain re-checks the approved plan (B2) and rejects any other address (B4), reallocation is the only path between agents and stays within one owner (B5, B8), and the owner can revoke at any time (B6). The platform operator is trusted for the MVP. Source: THREAT-MODEL.md section 3.

Boundary 10 in practice

The API authenticates the caller itself, re-derives ownership from its own records and the chain, and re-validates every value the frontend sends: a requested spend limit, a funding amount, an agent ID. A request that reaches an agent’s capital also passes the risk engine and the on-chain validator exactly as if the frontend did not exist. The web app’s login-first redirects are UX gating, not access control. Every endpoint that serves data answers 401 without a session, and only GET /health, which reads nothing, is unauthenticated.

Operator trust

The platform operator runs the API, workers, and paymaster, and is trusted for the MVP. A fully adversarial operator is a stated non-goal. Within that scope, the operator’s powers over the reallocation contract are bounded and enumerated on Threat model, and the operator and admin roles are held by a 2-of-3 Safe, never a single key.
Last modified on October 13, 2026