Claude Code · Cursor · OpenHands · Cline · Zed
Right now you paste the same context into Claude Code, then Cursor, then Slack. Drop it here once instead and get a link. Everyone opens the same living document — and can change it. Encrypted in your browser, so vnsh never sees it. Gone 24 hours after the last edit.
The key rides in the URL fragment, which is never sent to a server — so the workspace is hosted by a party that can never read it.
No account, no install. It encrypts before anything leaves this tab.
Paste this one line into any agent. That’s the entire setup.
Claude Code — writes the MCP config for you:
$ curl -sL vnsh.dev/claude | sh
Or register the server only:
$ claude mcp add vnsh -- npx -y vnsh-mcp
Anything else takes the standard MCP JSON:
$ npx vnsh
$ kubectl logs pod/app | vn
Pipe anything to vn; read one back with vn read "URL".
Encrypted sharing from any page: ⌘D bundles a screenshot, console errors and the URL into one link. Hover any vnsh link for an inline preview.
Install extensionEncrypted in your browser before upload. The key lives in the URL fragment, which is never transmitted. The server only ever holds opaque bytes.
24 hours after the last edit, the content is gone, and every edit restarts that clock — a workspace written to daily stays alive. What remains either way is ordinary request metadata: times, sizes, addresses. Never the content.
The worker, the CLI and the MCP server are MIT-licensed and readable. The crypto is 200 lines; the server is a dumb pipe by design.
Two things we won’t oversell. Handing someone a link hands the key to whatever reads it — including that agent’s model provider. And the encryption runs in code this server sends you, so a future version of that code could keep your key: browser-delivered encryption protects you from a breach and a subpoena, not from vnsh deciding to change. Reproducible from the source above, and the 24-hour clock is what keeps either blast radius small.