snyvi: A viewer for the documents your agents write.

Your coding agent writes a plan and sends it to snyvi over MCP. It opens in the viewer, rendered and filed under the project. Open source, MIT.

  • snyvi
  • v0.21.0 · 16 Sept 2026
  • MIT
  • Rust, one static binary
  • Linux · macOS · Windows
  • snymrova/snyvi
demo.mp4 · 1:16
Claude Code sends a document with send_document. It opens in snyvi.

How it works

Any agent that speaks MCP can send. Setup is one command per agent.

01

The agent sends

The agent calls one MCP tool, send_document. snyvi init <agent> registers it in the agent's settings; snyvi uninstall removes it.

02

The daemon renders and stores

A local daemon on 127.0.0.1:7777 renders the document once and stores it in SQLite under the project it came from.

03

Open pages update

Every open page receives the document over an event stream, about 50 ms after the send. Agents send; snyvi shows.

  • Claude Codesnyvi init claude
  • Codexsnyvi init codex
  • Cursorsnyvi init cursor
  • Claude Desktopsnyvi init claude-desktop
  • Gemini CLIsnyvi init gemini
  • Windsurfsnyvi init windsurf
  • VS Codesnyvi init vscode
  • Zedsnyvi init zed

Inside the viewer

Six things it does. Pick one to see it; click the picture to enlarge.

New documents queue up.1/6
A new document does not replace the one you are reading. It joins a queue at the top; n opens the next. Unread state survives a restart.

Install

One static binary, no dependencies. An optional second package adds a native window. To update, install the new binary and run snyvi restart.

snyvi send PLAN.md
a file, or stdin; prints the link
snyvi watch PLAN.md
send now, and again on every save
snyvi browse [dir]
read a folder from disk, nothing stored
snyvi app
a native window, when snyvi-app is installed
snyvi init <agent>
register with any of the eight agents
snyvi status
what is running, what is registered

Full install guide

From the releases page, download snyvi_<version>_amd64.deb or _arm64.deb. Then:

sudo dpkg -i snyvi_*.debsnyvi send README.md         # starts the daemon, prints a linksnyvi init-claude            # register with Claude Code

No dependencies: the binary is static. The optional snyvi-app package adds a native window.

Keys

Everything works from the keyboard. ? shows the list in the viewer.

⌘K
search everything
n
open the next document waiting
j / k
next / previous document
c
compare with the previous version
/
find in document
f
fill the screen with the diagram
t / \
toggle contents / sidebar
p
pin (kept by prune)
Del
delete (⌘Z undoes it)
?
all of them

Benchmarks

snyvi bench --check runs on every push and fails the build if a number goes over budget. Measured on a Linux dev box; the guide has macOS and Windows.

CaseResultBudget
Binary size, snyvi12.4 MB15 MB
Daemon cold start, to first health11 to 14 ms100 ms
Daemon resident, three documents in40 MB60 MB
Send, 100 KB Markdown, round trip12 to 14 ms100 ms
Document page, time to first byte1 to 2 ms30 ms
Render Markdown, 1 MB108 ms400 ms
Highlight Rust, 10k lines143 ms500 ms

What it does not do

These limits are deliberate and documented in the roadmap.

No editing

snyvi is a viewer. Editing happens in your editor, via “Open in editor”.

One direction only

Agents send, snyvi shows. Nothing is read back into the agent.

No terminal inside

snyvi never runs anything a document says. “Open terminal here” opens your own terminal in the document's directory, with no command.

Nothing phones home

The daemon listens on 127.0.0.1 only. No hosted mode, no account, no telemetry.

Open source, MIT

We built snyvi for our own work with coding agents. The full source is on GitHub.