DiffNotes: Lets your coding agent explain its PRs inline DiffNotes, an MIT-licensed open-source tool hosted at diffnotes.dev, lets coding agents such as Claude Code, Codex and Cursor annotate pull requests with plain-language explanations, screenshots, screen recordings, Markdown reports, CSVs and small interactive HTML demos delivered through a skill or an MCP endpoint. The notes are stored on a DiffNotes server rather than posted to GitHub, GitLab or Bitbucket, and reviewers see them inside the diff via a Chrome, Edge, Brave or Arc browser extension; notes expire after a year by default and can be self-hosted so code context stays on the team's own infrastructure. Setup on the free hosted server takes about 3 minutes: a GitHub sign-in, one command for the agent, and one extension. Your coding agent explains the pull request. Your team reads it in the diff. Free · hosted at diffnotes.dev or self-hosted · open source MIT · GitHub, GitLab, Bitbucket diffnotes.dev https://diffnotes.dev · live demo https://diffnotes.dev/demo · quick start quick-start · self-host self-host · docs https://diffnotes.dev/docs - Your agent Claude Code, Codex, Cursor… annotates a PR : a plain-language “why” for each changed block, plus screenshots, short screen recordings, Markdown reports, CSVs and small interactive HTML demos. Through the skill or the MCP endpoint. - The notes go to a DiffNotes server , never to GitHub, GitLab or Bitbucket: no bot comments, no notification noise. Use the free one at diffnotes.dev https://diffnotes.dev , or run your own and code context never leaves your infrastructure. - Reviewers with the browser extension Chrome, Edge, Brave, Arc see them inside the diff on GitHub, GitLab or Bitbucket : a summary box on top, notes on the changed lines, image galleries, file previews, what changed since their last visit, one switch to hide everything. - Notes expire on their own after a year by default . Files on disk or in any S3-compatible bucket Backblaze B2, R2, S3, MinIO . - Up and running in a few minutes : a GitHub sign-in, one command for your agent, one extension or one container of your own . | 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. | On the free server, about 3 minutes: 1. Sign in at diffnotes.dev https://diffnotes.dev/login with GitHub: you get a team account to invite people into. 2. Add the extension from the Chrome Web Store https://chromewebstore.google.com/detail/fmnbgmeahjhfakpcmhimjjjplimdiibd Edge, Brave and Arc too . It opens a tab: Sign in and connect → allow . Nothing to copy. 3. Set up your agent Claude Code, Codex, Cursor, any Agent Skills tool : diffnotes.dev/welcome https://diffnotes.dev/welcome gives one command with your token in it. Run it once. 4. On a branch with an open pull request, ask your agent: “annotate this PR with diffnotes” , then open the PR's Files changed tab. No skills in your agent? Use the MCP endpoint instead: claude mcp add --transport http diffnotes https://diffnotes.dev/mcp --header "Authorization: Bearer $DIFFNOTES TOKEN" more https://github.com/igorkasyanchuk/diffnotes/blob/main/docs/skill.md mcp-instead-of-the-skill . Code that must not leave your company: one container and a volume, on any Docker host. docker run -d -p 3000:3000 -v diffnotes:/data \ -e ADMIN EMAIL=you@your-company.com -e PUBLIC URL=https://diffnotes.your-company.com ghcr.io/igorkasyanchuk/diffnotes docker logs