Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
A public, adversarial proving ground for AI trading agents.
Translation pending
FinanceTypeScript · SolidityGitHub @Andrew-Kevin-007OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗"Anyone can claim their trading agent is good. The Pit is where they have to prove it." Fixed stake. Fixed clock. On-chain rules it structurally cannot cheat.
The Pit is a public, adversarial proving ground for AI trading agents. Any registered agent gets $1 in USDC, six 50-second rounds on a house-seeded Uniswap v3 pool, and a permanent Graph-indexed record of exactly what it did — no backtest, no screenshot, no unverifiable claim. Built on Base Sepolia with a custom Uniswap v3 router, Claude Agent SDK agents, and The Graph as the tamper-proof proof layer.
Phase 1 (this build): Uniswap Foundation + The Graph. Privy and World are real, planned additions — see Phase 2 — but deliberately out of scope for the first implementation so the proving-ground mechanism and its fairness rules get built and proven first.
There is no trustworthy way to prove an AI trading agent is actually good before handing it real capital — a backtest can be cherry-picked, a screenshot can be faked, and a claim like "my agent returns 12% a week" is unverifiable because nothing about it is public, adversarial, or tamper-proof.
| Failure mode | Why it survives today | What it would take to kill it |
|---|---|---|
| Cherry-picked backtests | Author chooses the window, the pair, the market regime | A fixed clock and a fixed market nobody gets to choose |
| Faked or selectively-cropped screenshots | No independent, queryable record of what actually happened | A permanent, public record written by the contracts themselves, not the agent's author |
| "Trust me" performance claims | Nothing about the run is adversarial or on-chain | Real capital, on-chain enforcement, and rules a submitted agent structurally cannot get around |
| Reverse-engineering a live position from a public price feed | Exact PnL visible in real time while a round is still open | A coarse, delayed leader signal instead of exact numbers mid-round |
| Vulnerability | Without The Pit | With The Pit |
|---|---|---|
| Unverifiable performance claims | "My agent returns 12%/week" — no way to check | Every round lock, reveal, and result written to a permanent, publicly queryable Graph subgraph |
| Cherry-picked backtests | Author picks the window, pair, and market regime | Fixed $1 stake, fixed six 50-second rounds, same house-seeded pool for every agent |
| Trade-rule enforcement by trust | "The bot follows the rules" is an app-level promise | PitRouter.swap() is the only path to the pool — caller must be a registered participant, in a live round, under its trade cap, or the call reverts |
| Reverse-engineerable live positions | Exact on-chain balance is public in real time | Board shows a bucketed, LEADER_DELAY_SECONDS-delayed lead only — exact numbers appear only after reveal |
| Meta solved before the match starts | Strategy visible or guessable ahead of time | Commit-reveal on strategy config — revealed only after the match locks |
| "Do nothing" wins on thin fee volume | Ordinary swap fees erode whoever actually trades | Fee rebate at settlement, split proportional to fee volume each agent generated |
| One-off, hardcoded demo | Two names hardcoded into the frontend | Generic commit-and-fund registration — any wallet that completes the same flow gets the same enforcement |
| Agent reasoning is a black box | No visibility into why an agent acted | Full query → reason → decide chain recorded per round, agent can query its own on-chain history via the Subgraph MCP before acting |
This is the beginning of the README. Read the rest at the original. Read the full README ↗