Search projects, hackathons, sponsors and tech

    ← All projects

    MANDATEE

    The operating license that gives autonomous AI agents enforceable limits.

    Demo

    About

    MANDATE is built as a modern full-stack TypeScript project with a few specialized layers that work together. The frontend is a Next.js app built with React, and it uses Worldcoin’s IDKit widget to verify a human user before creating a charter. This gives the project a real identity gate instead of relying on wallet ownership alone. The user enters a wallet address, a domain, and a budget, then verifies their identity and triggers the charter minting flow. The on-chain logic lives in a Solidity smart contract deployed on Hedera using Hardhat. That contract stores each charter, tracks its owner, world nullifier, domain, budget, expiration, and usage, and enforces key security constraints. It prevents duplicate active charters per domain, ensures budgets aren’t exceeded, records execution events, and can revoke charters when needed. This is the enforcement layer: even if an agent misbehaves, the chain can still tell whether it has permission. The project then uses The Graph to index charter activity and expose real-time query data to the frontend. This allows the dashboard to show live charter stats, active charters, remaining budget, reputation, and execution history without hardcoding everything in the app. The Graph is effectively the read layer that turns the on-chain state into a usable operational view. The AI part is handled by an Express inference service built in TypeScript. It accepts requests, verifies payment via x402-style payment headers, and checks the charter through the Graph before invoking OpenAI. That gives the project a strong policy enforcement path: no inference without payment and no inference without a valid charter. It also records execution activity to Hedera Consensus Service (HCS) so actions are traceable and auditable. The agent demo itself is a TypeScript script that queries the subgraph, checks whether the charter is valid, discovers services in a given domain, selects the best one based on budget and pricing, and then sends a request to the inference service with the charter ID and payment metadata attached. This makes the system feel like a real protocol stack rather than a toy demo: a human verifies identity, a charter is minted, the system indexes and checks state, and the agent consumes a service under a controlled policy. The stack includes Hedera for smart contracts and event logging, World ID for personhood verification, The Graph for indexing and querying, x402 for payment verification, OpenAI for inference, and Next.js for the app shell. Some parts are intentionally “hacky” in a good way: for example, the project uses a domain-bound nullifier guard to prevent a person from creating multiple active charters for the same domain, and it keeps the demo simple by using a service wallet and payment header pattern to model a real monetized AI request flow. The result is a practical architecture to explore a future where AI agents have identity, budgets, and governance built into the protocol itself.

    How it's made

    MANDATE is built as a modern full-stack TypeScript project with a few specialized layers that work together. The frontend is a Next.js app built with React, and it uses Worldcoin’s IDKit widget to verify a human user before creating a charter. This gives the project a real identity gate instead of relying on wallet ownership alone. The user enters a wallet address, a domain, and a budget, then verifies their identity and triggers the charter minting flow. The on-chain logic lives in a Solidity smart contract deployed on Hedera using Hardhat. That contract stores each charter, tracks its owner, world nullifier, domain, budget, expiration, and usage, and enforces key security constraints. It prevents duplicate active charters per domain, ensures budgets aren’t exceeded, records execution events, and can revoke charters when needed. This is the enforcement layer: even if an agent misbehaves, the chain can still tell whether it has permission. The project then uses The Graph to index charter activity and expose real-time query data to the frontend. This allows the dashboard to show live charter stats, active charters, remaining budget, reputation, and execution history without hardcoding everything in the app. The Graph is effectively the read layer that turns the on-chain state into a usable operational view. The AI part is handled by an Express inference service built in TypeScript. It accepts requests, verifies payment via x402-style payment headers, and checks the charter through the Graph before invoking OpenAI. That gives the project a strong policy enforcement path: no inference without payment and no inference without a valid charter. It also records execution activity to Hedera Consensus Service (HCS) so actions are traceable and auditable. The agent demo itself is a TypeScript script that queries the subgraph, checks whether the charter is valid, discovers services in a given domain, selects the best one based on budget and pricing, and then sends a request to the inference service with the charter ID and payment metadata attached. This makes the system feel like a real protocol stack rather than a toy demo: a human verifies identity, a charter is minted, the system indexes and checks state, and the agent consumes a service under a controlled policy. The stack includes Hedera for smart contracts and event logging, World ID for personhood verification, The Graph for indexing and querying, x402 for payment verification, OpenAI for inference, and Next.js for the app shell. Some parts are intentionally “hacky” in a good way: for example, the project uses a domain-bound nullifier guard to prevent a person from creating multiple active charters for the same domain, and it keeps the demo simple by using a service wallet and payment header pattern to model a real monetized AI request flow. The result is a practical architecture to explore a future where AI agents have identity, budgets, and governance built into the protocol itself.