Video demo below: a walkthrough of the website and our privacy-layer app, with the @AskVenice agent integrated.
Privacy on the chain, paired with best-in-class agentic support.
0x9287ece030f3c3ef13505d721648e90108872310
Why every ZKVENICE note is the same size.
Amounts are the easiest way to match a withdrawal to a deposit: a 0.4 in and a 0.4 out pair themselves.
So there are no amounts. There are notes: 0.01, 0.1 or 1 ETH, all alike. 0.4 ETH becomes four 0.1 notes, spent whenever you like.
Less convenient. Much more private. That trade is the point.
This line is your money.
When you deposit into ZKVENICE, your browser writes a note: one line of text. It never leaves your device.
With it, any browser in the world can withdraw. Without it, nobody can. Not us, not the relayer, not the chain.
Save it somewhere that is not the browser. That is the only rule.
The address that receives your swap needs nothing.
No ETH: the relayer pays the gas. No history: a brand-new address works. No trust: the proof binds where the money goes, so the relayer cannot redirect it, raise its fee, or lower your minimum without the proof failing.
0.1% of the note, paid in ETH. That is the whole deal.
What the chain sees.
A normal swap: your wallet → your wallet. One transaction. Anyone can read what you held, what you bought, when, and for how much. Forever.
With ZKVENICE: your wallet → the pool. Later, the pool → a fresh address. Two transactions that nothing on chain ties together.
That is the whole product, in one picture.v
First withdrawal on ZKVENICE, on chain.
Deposit at block 60299118, withdrawal at 60303999, proof verified against the published key. Check it yourself: paste the hash at https://t.co/mMjyt8qkA4.
0x02d2ed6bc37ed6bc47d7ff46d72b50d916f3e5e37594d496a1b901ea3e091766
Update: the ZKVENICE agent now thinks inside a Venice TEE.
The planner picks its model at runtime from @AskVenice's catalogue, hardware-isolated models first. Before it answers, it fetches the enclave's remote attestation from Venice with a fresh nonce and checks it.
Powered by Venice. https://t.co/DjAdsyhvjA
Make a zero-knowledge proof in your browser. No wallet, nothing sent.
https://t.co/NYH0DSLR41 drops your deposit into a pretend pool of 21, proves you own one of them without saying which, and verifies it with the same circuit and key ZKVENICE runs in production.
Verify any withdrawal yourself.
Paste a transaction hash at https://t.co/5iaipTPdyp. Your browser decodes the call, rebuilds the seven public inputs exactly as the contract does, and re-runs the Groth16 verifier with the published key.
You see what the proof bound: recipient, relayer, fee, token, minimum. You do not see which deposit it came from. Nobody does.
Trust the maths, not us.
Update: the crowd and the clock.
Fixed amounts and ZK proofs stop the chain pairing a withdrawal with a deposit. What remains is timing, and how many deposits you hide among.
So before every withdrawal, the app and the MCP tool now tell you both: the size of the crowd and the age of your note. Under 10 deposits or under six hours, they warn you. The MCP tool stops unless you insist.
https://t.co/z7Aysynqgk
ZkVenice now ships as an agent skill, in the same format @AskVenice uses for its own.
npx skills add https://t.co/yJ5wKeWuPY
One file teaches any agent the rules of a private swap: the note is a secret, the recipient must be fresh, the proof binds where the money goes. Plus the MCP tools, the routes and the contract addresses.
https://t.co/0St3AiJvzz
$ZKVENICE has been submitted to https://t.co/RCTjxbC4M0, @AskVenice's directory of projects powered by its API.
Shielded pool on Robinhood Chain, route planned by an agent on Venice inference, MCP server for agents. All live.
Listing pending review.
Major update: we are now an MCP server.
Any agent that speaks MCP (@AskVenice, @claudeai, @cursor_ai) can plan, deposit, and withdraw privately through six tools. It runs on your machine, so notes and proofs never leave it. The agent only ever sees calldata and hashes.
One file, no repo needed:
https://t.co/rBQEt4wH7H
ZK hides the trade. @AskVenice hides the thinking.
The pool breaks the link between your wallet and the swap. The agent that plans it runs on Venice: nothing stored, no policy layer, only the sentence you typed.
Fix one and you still leak through the other. $ZKVENICE fixes both.
Why does $ZKVENICE plan on @AskVenice and not on any other API?
Because privacy on the chain is useless if the model that planned the trade remembers it.
Venice stores no prompts. Its open-weight models have no policy layer, so a task about private swaps never gets refused halfway.
The only thing Venice ever receives from us is the sentence you typed. Never your wallet.
How $ZKVENICE works, in four steps.
1. You type what you want. An agent on Venice plans the route and keeps nothing.
2. Your wallet deposits a fixed amount into a shielded pool.
3. Your browser proves you own a note, without saying which.
4. A relayer swaps it on Uniswap to a fresh address.
The chain sees a deposit and a swap it cannot pair. The model never sees your wallet.
https://t.co/DjAdsyhvjA