$VEIL·Contract launching soon

Shielded pools on Robinhood Chain · routes planned by an agent that forgets

Swap behind the veil. The agent forgets you asked.

You deposit into a shielded pool on Robinhood Chain. Later, a relayer pays a fresh wallet in the token you asked for. The Veil agent plans the route and keeps none of the chat.

Open the appSee the route
  • No accounts
  • No analytics
Inference
Zero retention
Withdrawals
Groth16 proof, relayed
Routes
Uniswap v3 + v4 on 4663
Pools
0.05 · 0.5 · 5 ETH, launching soon

Live · Robinhood Chain

  • ETHreading
  • USDGreading
  • TSLAreading
  • PONSreading

Live prices, fetched by your browser

01The public tape

#tape

A normal swap signs your name under the trade.

Your wallet sends ETH into a pool and gets TSLA back in the same transaction. Anyone with an explorer can read the buy, with your whole balance printed next to it.

With Veil you send two transactions instead: a deposit from your wallet, and an exit that a relayer submits later to a fresh address. The explorer shows both, and no field in either one points to the other.

  • A normal swap

    One transaction ties your wallet to TSLA in public.

  • A Veil swap

    Two transactions: a deposit now and a relayed exit later.

A normal swap draws one line from your wallet to the trade. A Veil swap leaves a deposit and, later, a relayed exit.

02Two layers

#layers

Two layers. Your wallet stops at the deposit.

Hiding a trade from the chain and hiding a conversation from an AI provider are separate problems. Veil uses a shielded pool for the first and a zero-retention agent for the second. Your address signs one deposit and drops out of the rest of the flow.

Layer 1 · The chain

The pool

You deposit a fixed amount together with a commitment, a hash of two secrets that live in your browser. To leave, you prove you own one of the pool's commitments without revealing which, and the pool swaps on the way out to an address you choose. The chain records the deposit and, later, an exit that carries a proof and your fresh address.

  • Notes of 0.05, 0.5 and 5 ETH, one pool per size
  • A relayer submits the exit and pays the gas without learning the depositor
  • Exits swap through Uniswap v3 and v4 pools on chain 4663

Layer 2 · The model

The agent

The planning runs on a zero-retention host: open-weight models, nothing stored, over a hundred models behind one key. The agent reads your sentence, quotes the route on chain and writes the plan. The host says it discards the exchange once it answers.

  • The host stores no prompts or answers
  • Open-weight models, with no moderation layer added on top
  • Your sentence reaches the model through Veil's key, so no API key points to you

03The proof

#proof

Your browser proves the note is yours and reveals nothing else.

Veil builds a Groth16 proof in your tab in a few seconds. The proof shows that one leaf of the pool's Merkle tree belongs to you, and it publishes a nullifier hash so you can't spend that leaf twice. It also binds the recipient, the relayer fee, the exit token and the minimum output, so a relayer who edits one of them gets a reverted transaction.

Proof system
Groth16 · BN254
Hash
Poseidon
Tree
20 levels · 1,048,576 notes
Prover
WASM, in your tab
Your browser proves a note sits in the tree and publishes its nullifier hash. The proof hides which note.

04The route

#route

Five steps. The chain sees two of them.

The agent writes the plan off chain and throws it away. The chain gets a deposit and, some time later, a withdrawal that shares no field with it.

Say it, Plan, Shield, Relay, Exit. The chain sees two of them: the deposit and the exit.
  1. 01Off chain

    Say it

    Type the trade in your own words: “1.5 ETH into USDG, quietest route.” The agent turns the sentence into fields you can check before anything moves.

  2. 02Off chain

    Plan

    The agent quotes the Uniswap v3 and v4 pools for the pair on Robinhood Chain, picks the best output and splits the amount into notes. The agent drops the conversation once it answers.

  3. 03On chain

    Shield

    Your wallet deposits each note along with its commitment. The chain now holds a deposit and a hash, and your wallet has signed its last transaction in the flow.

  4. 04Off chain

    Relay

    Your browser builds a proof for one note and hands it to a relayer. The relayer pays the gas and can't tell which deposit the note came from.

  5. 05On chain

    Exit

    The pool checks the proof, swaps through Uniswap and pays a fresh address. The relayer keeps its fee in ETH, and the rest of the note reaches you in the token you asked for.

05The case for the agent

#agent

An agent with no memory of you.

Any model can plan a swap. The planning runs on an API that keeps nothing on its servers, and the agent funds its own inference without an account.

The agent writes the plan, then redaction bars cover every line. The host keeps none of it.
  1. 01

    Keeps nothing

    The host stores no prompts or responses. The chat about your trade lives in your tab until you close it. Attested inference modes make that claim checkable, and the Veil planner calls a standard model today.

  2. 02

    No filter layer

    The host adds no moderation layer to the open-weight models it serves. A five-step plan about a private swap won't hit a filter at step three over the word “private”, and no reviewer reads the queue.

  3. 03

    DIEM on the roadmap

    Staked VVV mints DIEM, and each DIEM buys a dollar of inference per day for as long as it exists. Veil plans to fund the planner's key with DIEM. Today Veil pays that key's bill, so no invoice or API key points to you.

Veil pays for the planner's API like any other customer. The host has not partnered with Veil or endorsed it.

06For agents

#mcp

Veil also ships as an MCP server.

The server exposes six stdio tools: pools, quote, plan, deposit, notes and withdraw. It runs on your machine and keeps the note secrets there. Claude Code, Cursor or any other MCP client can drive it.

curl -O https://veiltradexyz.app/mcp/veil-mcp.mjs
claude mcp add veil -- node "$PWD/veil-mcp.mjs"

Setup guide

Two commands install the server. Then an agent quotes a swap and dry-runs a withdraw with a local proof.
  • pools

    Pool sizes, notes deposited, relayer status

  • quote

    The note split and the minimum the proof binds

  • plan

    A sentence to an intent, through the zero-retention planner

  • deposit

    A fresh note and the unsigned deposit transaction

  • notes

    Notes on this machine and their state on chain

  • withdraw

    A local Groth16 proof, relayed or returned unsigned

07$VEIL

#token

The token launches soon.

$VEIL will trade on Robinhood Chain. We haven't published a contract yet. Treat any address you see before we post it on X as fake.

Contract
Launching soon
Chain
Robinhood Chain · 4663
Follow on X@veiltradexyZ

08Status

#status

The build, piece by piece.

We update this board first when a piece ships.

  1. 01Site, docs and appBuilt
  2. 02Live quotes from chain 4663Built
  3. 03Circuit · Groth16, Poseidon, 20 levelsBuilt
  4. 04Browser proverBuilt
  5. 05Zero-retention plannerBuilt
  6. 06MCP serverBuilt
  7. 07Pool contractsWritten, tested on chain 4663 bytecode
  8. 08RelayerBuilt · switches on with the pools
  9. 09Trusted setupKeys generated, hashes in the docs
  10. 10Pools on chainLaunching soon
  11. 11$VEIL tokenLaunching soon

09Questions

#faq

Asked before you asked.

Is this a mixer?

Veil is a shielded pool that can swap your ETH as it leaves. It uses the commitment-and-nullifier design that shielded pools on Ethereum share, and it can pay a different asset to an address that never funded the deposit. The contracts hold no admin keys, so no operator can freeze or redirect a note.

What does the agent see?

The agent host sees the sentence you typed, for the seconds it takes to answer. Veil strips anything that looks like an address before the call, and the quotes stay in your browser. The host says it stores neither prompts nor completions, and that claim rests on its word's word.

What does the chain see?

The chain sees your wallet deposit a fixed amount into a pool. Later it sees a relayer withdraw the same amount, swapped, to a fresh address. Thin pools leak timing, so the app shows how many notes sit in a pool before you spend one.

Who pays the agent?

Veil pays for the planner's calls today, so no invoice or API key points to you. You pay two fees, the 0.15% relayer fee and the Uniswap pool fee, and the app shows both before you sign.

Why fixed amounts?

Odd amounts give you away. Deposit 1.37 ETH, withdraw 1.37 ETH an hour later, and the pool hid nothing. Veil pools take 0.05, 0.5 and 5 ETH, and the app splits a larger trade into those notes before you sign.

Is any of this deployed?

The app, the circuit, the browser prover, the planner and the MCP server run today, and you can build a real proof in the app now. The pool contracts pass their tests against Uniswap bytecode from chain 4663 and deploy with the launch. The $VEIL contract launches soon, and we will post the address on X first.

The app is open

Build the proof in your tab, then leave as someone else.

The app gives you live prices, the agent's plan and a real Groth16 proof today. The pools open for deposits at launch.