Search projects, hackathons, sponsors and tech

    ← All projects

    Unisafe

    Personal Uniswap V4 position manager with ai-operator support

    Demo

    About

    Every unisafe Manager is the same NFT-owned contract non-custodial wallet: a Stable manager for pegged pairs on a range you set once, or a Volatile manager for any other Uniswap v4 pair, where you pick the range each time you allocate. Also unisafe ships an agent skill and an MCP server. Start with the skill — it takes no keys and no configuration — and add the server later if you want the agent to actually place transactions.

    How it's made

    Solidity + Rust + TypeScript. CONTRACTS (Solidity). unisafe managers are NFT-owned smart wallets holding Uniswap v4 liquidity: the NFT holder owns the capital, an appointed operator may rebalance it and has no path to withdraw — structural, not a check. The deliverable is moveLiquidity: free a position in one pool, re-deploy it in another inside a single v4 unlock, settle once? with amazing Uniswap v4 custom accounting. CHAINLINK is what makes an operator role possible: every operator swap is priced against a feed, and after an audit during the event the same guard covers liquidity adds — swapless operations deployed principal at raw spot, which a compromised operator can skew first. THE GRAPH replaces the engine under an existing index. Our Substreams package (Rust → WASM, six modules) filters by address in a map step and builds its manager registry from the factory's own deployment event, so it works for any manager that factory produced, on any supported chain. SPLIT AGENT. The MCP server had grown to carry history and yield maths next to the keystore, so it was cut in half. The local half keeps key, policy, simulation and calldata, and now makes no outbound HTTP call except RPC — "a remote service cannot hand you calldata to sign" becomes architecture instead of a promise. The hosted half (no keys by construction) serves MCP over HTTP and REST, ranks a manager's pools by fee APR and returns a move as plain numbers — pool id, two ticks, an amount.