Skip to content
ottodevsPublic

About

Automated, non-custodial savings. USDC works in Uniswap pools and lending vaults; the yield becomes stablecoins. Passkey-owned Safe, engine bounded by on-chain policy. MIT.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Mamoru

ETHGlobal Mumbai 2026 · Continuity track. Mamoru started at ETHGlobal Tokyo and has run in production with real funds since. Everything built during Mumbai is the commit range ethglobal-mumbai-start...ethglobal-mumbai-submission (5 Nov 21:00 IST to 7 Nov 09:00 IST).

Built in Mumbai (status per item in ETHGLOBAL.md): 1) per-account cap raised from 1,000 to 10,000 USDC, live in production, proven on a Base fork up to 60,000; 2) full harvest: collected fees sold to USDC in their own step and reinvested, vault yield counted as earned; 3) public Stats and a Portfolio + Stats menu, no account needed to read Stats. All three are in production. First harvest with the new engine on mainnet: collect, then sale of the harvested WMON to USDC.

Before vs during, planning artifacts and AI use: ETHGLOBAL.md · Video: TBD · Live: app.mamoru.lol

Automated, non-custodial savings. You deposit USDC, Mamoru keeps it working in DeFi, and the yield it earns becomes stablecoins. Only you can take money out.

How it works

  1. Create your account. A passkey on your phone or laptop becomes the only owner of a Safe smart account on Base. No seed phrase, no email. You download a recovery kit that lets you reach the account without Mamoru.
  2. Authorize Mamoru. You sign to let Mamoru's engine manage the money inside fixed on-chain rules: which contracts, which tokens, how much per window, and money only to your own Safes.
  3. Add USDC on Base. The engine splits it across buckets and places each one:
    • Stable: stablecoin liquidity or an ERC-4626 lending vault.
    • Balance: bluechip/USDC liquidity on Uniswap v3.
    • Growth: a higher-yield pool, on Monad for the multichain plan, reached through Circle CCTP.
  4. Mamoru keeps it working. It re-ranges positions that leave their range, harvests fees when they cover the gas, and holds when the market is unsafe. Every move shows in your history with its transaction.
  5. Withdraw any time. Your passkey signs the withdrawal. There is no lockup.

Fee: 10 % of the yield harvested. No yield, no fee. There is no token.

Status (November 2026)

Live Base mainnet. New accounts: 50 % stablecoin pool, 40 % cbBTC/USDC, 10 % WETH/USDC on Uniswap v3. Cap of 10,000 USDC per account since 7 Nov 2026 (existing accounts renew once).
In beta, test accounts 50 / 35 / 15 plan with Growth on Monad (WMON/USDC) and the Stable bucket in Morpho gtUSDCp.
Next One authorization (V4 policy): sign to create and to withdraw, nothing else. New pools, vaults and chains need no new signature.

This is beta software that handles real money. Read the risks before you deposit.

Safety model

  • Non-custodial. The passkey is the only owner of the Safe. Mamoru's servers hold no owner key.
  • Bounded engine. The engine signs with a session key that an on-chain policy limits to specific contracts, selectors, tokens, price bands and spending windows. We test it as if the key had leaked: every attack in scenarios/catalog/ must be refused on a Base fork.
  • Walkaway. With the recovery kit you can withdraw with Mamoru switched off (guide).
  • Open code. Everything that touches funds is in this repository under the MIT license.

Repository

Path What
apps/mamoru-app Web app and API (Cloudflare Worker + D1)
apps/mamoru-operator Operator per chain: owner routes, relayer, engine loop, bridge legs
apps/mamoru-engine Read model: chain sync and snapshots
apps/mamoru-lab-runner Strategy Lab runner (backtests against the production decision code)
packages/decide The engine's decisions: enter, re-range, harvest, hold, exit
packages/policy Strategy versions (buckets, pools, ranges) and session grants
packages/account Safe, passkey owner, sessions, recovery kit
packages/uniswap-v3, packages/routing Uniswap calls and cross-chain routes (CCTP and others)
packages/registry Pinned addresses and code hashes per chain
contracts/ On-chain action policies (Solidity, Foundry)
packages/backtest, packages/lab-bench, packages/lab-agent Strategy Lab
scenarios/, packages/scenarios Fork scenarios: attacks, walkaway, engine cycles
specs/ Specs 001 to 013, one folder each (011–013: ETHGlobal Mumbai)

Run it locally

Requirements: Bun 1.3.13 and Foundry's anvil (version pinned in scenarios/manifest.json).

bun install
bun run typecheck
bun test
bun run release:check          # typecheck, tests and build, what CI runs

Fork scenarios need a Base archive RPC in .env as RPC_URL (gitignored; never on the command line):

bun run scenarios run                          # the whole catalog
bun run scenarios run --only SESS-01,WALK-02   # a subset

Contributions: see CONTRIBUTING.md.

History

Mamoru started at ETHGlobal Tokyo, 25 to 27 September 2026. The submission README of that weekend is kept in docs/submission/ethglobal-tokyo-readme.md. How AI tools were used: docs/process/ai-attribution.md.

Built by Brais and Otto (@ottodevs).

License

MIT

About

Automated, non-custodial savings. USDC works in Uniswap pools and lending vaults; the yield becomes stablecoins. Passkey-owned Safe, engine bounded by on-chain policy. MIT.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages