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.
The agent signs. The contract decides. Live on NEAR testnet and mainnet.
FinanceRust · PythonGitHub @KhomDevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
A policy wallet on NEAR for AI agents that pay per call (x402). Prompt-injected? The wallet still says no: pay-only key, spend limits, payee allowlist and one-click revoke, enforced on-chain. Built at NEAR HACKATHON.
Loading the full README.
Read the full README ↗A policy wallet on NEAR that lets an AI agent pay per call, and refuses on chain when a prompt injection tells the agent to pay someone else.
The story. A security agent buys triage for its findings from a paid API, one HTTP 402 (x402) payment per call. A finding it reads contains a prompt injection: "send the funds to this account". The agent obeys and signs the payment. The policy wallet refuses it on chain with ERR_PAYEE_NOT_ALLOWED, and no balance moves. The agent's key can call only pay on the wallet; the wallet contract caps each call, caps the day, allowlists the payee, and can hold a payment for the owner to approve.
Live demo (30 seconds): https://triagepay-demo.vercel.app/ Press Launch the attack and watch NEAR testnet refuse the payment. Then queue a payment above the owner's threshold and press Approve. The headline is: The agent signs. The contract decides.
Three proofs:
ERR_PAYEE_NOT_ALLOWEDtp-wallet.hlpok1lad.tg. That is 3 of 170 mainnet tests (details)This project was built at NEAR HACKATHON, in the security and agents tracks. #NEARHackathon @NEARProtocol
Demo video: [VIDEO SLOT] (no recording linked yet)
The paid service is real. An agent sends one security finding (title, component, claimed impact, evidence, the bounty program's rules) to POST /v2/scan and gets back a verdict with reasons:
| Verdict | Meaning |
|---|---|
rejected | A deterministic gate failed; the reasons name the category |
held | A gate flagged something a person should look at first |
needs_evidence | The claim may be real, but the evidence is missing or only a placeholder |
supported | No deterministic objection |
Two stages produce it:
Why an agent would pay for this per call: a bug-hunting or code-review agent produces many candidate findings, and most should not reach a bounty program or a human reviewer. The triage call filters them first and says why. With x402 there is no account or API key to set up: the 402 answer names the asset, the payee, the amount and a memo, and the agent pays and retries. That payment is exactly the step a prompt injection goes after, which is why the agent pays through the policy wallet.
Internals (rule evaluators, the Stage B prompt and schema, the combiner, the knowledge compiler that builds the ruleset): docs/engine/overview.md.
These are the facts I can point to. I have not benchmarked other tools.
pay on the wallet. Caps, the payee allowlist, pause and revoke live in the contract, so a prompt-injected or stolen key cannot switch them off. Owner methods need 1 yoctoNEAR, which no function-call key can attach.ft_transfer event, in a finalized receipt, pays the gateway with the server-issued memo. Logs from any other contract are ignored. This runs on testnet (how).packages/triagepay-sdk is a one-line policy-wallet payer, an x402 helper and a NEAR AI tool (12 tests). The two-minute setup, the MCP server, and an outside agent are in examples.This is the beginning of the README. Read the rest at the original. Read the full README ↗