Nothing moves without your Nod.

The approval layer for AI agents. Your agent proposes a transaction, your phone decodes and simulates it, and only your fingerprint or face lets your wallet sign.

◈Keys stay in
your wallet
⌬Decoded on
your phone
◉Biometric
approval
⬡Mobile Wallet
Adapter
⌘Open source,
MIT
⎔Bring your
own backend

An agent should never hold the strings to your funds.

Nod lets you decide how your agents move money.

The agent proposes. It never signs.

Any script or bot sends Nod a Solana transaction and a one-line reason, through a small SDK or plain HTTP. It holds an API key you can revoke, never the key that moves funds.

Connect an agent →
$ nod.propose({
  agent:  "demo-agent",
  reason: "Weather API credits",
  tx:     "AQAAAAAA…"  // 0.05 SOL
})

Sent. Waiting for the owner's Nod.

Your phone reads what it really does.

The app decodes the transaction itself and simulates it locally. What the agent claimed is compared with what the transaction does, and a mismatch is flagged before you ever reach an approve button.

  • Balance before and after, simulated on the device
  • A countdown, and a fresh check if the quote goes stale

The agent says

“Weather API credits”

Pay 0.05 SOL

The transaction does

Sends 0.05 SOLSends 4.80 SOL

To 7xKX…9fQ2, allowedTo 9bQr…T3mA, never allowed

Matches. Waiting for your Nod. Does not match. Over the hard cap: blocked.

Illustrative example.

You set the limits. Nod enforces them.

Auto-approve small payments to recipients you allowed, require your Nod for the rest, and block anything over the hard cap. A daily cap and a one-tap freeze sit on top.

  • Per-agent limits, set in the app
  • Allowed recipients and a daily spend cap
  • Freeze an agent or revoke its key at any time

0.05 SOL

auto up to 0.1hard cap 35 SOL

Auto

No prompt

Nod

Needs you

Block

Refused

Goes through without a prompt.

Example limits. Yours are set per agent.

You nod. Your wallet signs.

Approve with your fingerprint, face or screen lock, then hold to confirm. Signing happens in your own wallet over Mobile Wallet Adapter, so Nod never sees a key.

  • Phantom, Solflare, or Seed Vault on a Seeker
  • Push notifications carry only a proposal id
demo-agentexpires in 0:42

wants to send

0.05 SOL

To
7xKX…9fQ2
Program
System Program
Your balance
1.2400 → 1.1900 SOL
Reject Hold to approveVerifying…Approved

See Nod at work.

◈

Small, expected payments go straight through.Every swap waits for your Nod.One tap freezes an agent.

⌬

Anything larger or to a new recipient waits for you.The route and amounts are decoded on your phone, not summarised by the agent.Every proposal after that is blocked, and its key can be revoked.

“demo-agent buys 0.03 SOL of weather data. It is under the auto limit, so it goes through and shows up in your feed. At 0.5 SOL it would have waited for you.”

“The agent proposes a swap. Your phone shows what leaves your wallet and what comes back, and nothing is signed until you hold to approve.”

“The agent starts proposing odd transfers. You freeze it from the lock screen notification, and everything it sends is blocked until you unfreeze.”

Illustrative scenario.

For developers

Connect any agent in a few lines.

Run your own backend with one command, pair your agent with a code from the app, and propose transactions through a small SDK or plain HTTP. Nothing is locked to a hosted service.

  • npx nod-server starts a backend with its own data folder and secret
  • --tunnel gives it a public https address through your own cloudflared or ngrok
  • Retry-safe proposals, an OpenAPI spec, and a conformance suite for other implementations
agent.ts
# run your backend
npx nod-server --tunnel
 
// propose a payment from your agent
const nod = new Nod({ apiUrl, agentKey });
const built = await transferSol({ connection, from, to, sol: 0.05 });
 
const result = await nod.proposeAndWait({
  ...built,
  reason: "Weather API credits",
});
 
// your phone buzzes; once you nod:
if (isConfirmed(result)) console.log(result.signature);

Go deeper.

{ }

SDK

Propose, wait for the result, and retry safely. Works from any language over plain HTTP.

▣

Self-host

Run nod-server on your laptop, a VPS or in Docker. Your data folder, your secret, your push credentials.

⌘

Open source

Read the code, the OpenAPI spec and the security model. MIT licensed, and not yet audited.

Nothing moves without your Nod.

Nod is an open-source prototype running on Solana devnet and has not been audited. Do not point it at funds you cannot afford to lose.

For agents

Instructions for AI agents

How to ask a human for permission to move funds with Nod: pair, propose, wait. This page is also available as plain Markdown.

Open agents.md

Loading…