Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
Plain-language notes, screenshots and live demos from your coding agent, inside the diff on GitHub, GitLab and Bitbucket. Free, open source (MIT) and self-hosted.
PluginsTypeScript · JavaScriptGitHub @igorkasyanchukOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Your coding agent explains its pull request; your team reads the notes, screenshots and live demos inside the diff on GitHub, GitLab and Bitbucket. Self-hosted, MIT.
Taken from the repository README
Loading the full README.
Read the full README ↗curl | sh, one extension.| Review faster | Reviewers read why a block changed before reading how. Fewer “what does this do?” round trips. |
| Context from the author | The agent that wrote the code explains it while it still knows the decisions and trade-offs. |
| Screenshots in the diff | UI changes come with before/after or mobile/desktop shots next to the lines that caused them. |
| Zero noise | Nothing is posted to the PR. The conversation stays for humans. |
| Your data | Self-hosted, invite-only (or sign-up with GitHub), per-account access. Code context never leaves your infrastructure. |
| Any agent, any team | One skill for every Agent Skills tool; one extension for several servers (teams, clients). |
| On GitHub | |
|---|---|
| Summary box above the files: the PR's summary, linked reports, a notes on/off switch, expand/collapse all. | |
| Gallery: several images in one note (mobile + desktop), ← → to flip, Esc to close. | |
Previews of attached .md, .csv and .txt files, rendered in place. | |
Live demos: a small .html file runs in a locked sandbox under its note (no network, no access to GitHub); expand it at phone, tablet or desktop width. | |
| Floating dock once you scroll: note count, notes switch, summary popover. Long notes get show more / less. |
| In the app | |
|---|---|
| Every annotated PR, with its notes and attachments. | |
| Accounts with roles (owner, admin, member), invitations, repositories, storage per repository. | |
| Super admin: users, accounts, uploads, disk, and where files are stored. |
# 1. the server (any Docker host: a VPS, Coolify, Dokku…)
git clone https://github.com/igorkasyanchuk/diffnotes && cd diffnotes
docker build -t diffnotes . && docker run -d -p 3000:3000 -v diffnotes:/data \
-e [email protected] -e PUBLIC_URL=https://reviews.example.com diffnotes
docker logs <container> | grep "first admin" # the generated password
# or: docker compose up -d (docker-compose.yml), or Render / Fly.io / Railway / Coolify: docs/deploy.md
# 2. the skill, on every developer machine (Claude Code, Codex, Cursor, other Agent Skills tools)
curl -fsSL https://reviews.example.com/install.sh | sh
export DIFFNOTES_URL=https://reviews.example.com DIFFNOTES_TOKEN=dn_… # token from /settings
# 3. the extension: https://chromewebstore.google.com/detail/fmnbgmeahjhfakpcmhimjjjplimdiibd
# (or chrome://extensions → Developer mode → Load unpacked → extension/)
# then its popup: server + token → Connect
Then ask your agent: “annotate this PR with diffnotes” and open the PR's Files changed tab. No skills in your agent?
Use the MCP endpoint instead: claude mcp add --transport http diffnotes https://reviews.example.com/mcp --header "Authorization: Bearer $DIFFNOTES_TOKEN" (more).
| Install & configure | Docker, environment variables, first admin, password reset, upgrades, backups |
| Deploy | Docker Compose, Coolify, Render (one-click), Fly.io, Railway; one instance only |
| Agent skill | Install, token, how the agent writes notes, payload format, allowed files |
| Browser extension | Install (Chrome, Firefox, Safari), several servers, GitHub / GitLab / Bitbucket, what you see, troubleshooting |
| Accounts & roles | Owner / admin / member, invitations, repository rules, super admin, overview pages |
| File storage | Disk or S3-compatible (Backblaze B2, Cloudflare R2, AWS S3, MinIO), expiry |
| Security | Access model, upload checks, sandboxing, tokens, secrets; report a vulnerability: SECURITY.md |
| API | The HTTP API the skill and the extension use |
| Development | Stack, layout, commands, code rules |
| Changelog |
MIT: use it, change it, host it, sell it; keep the copyright notice.
What changed in each version; releases are tagged vX.Y.Z |
| Privacy | What the extension and a server keep (every server also serves it at /privacy) |