Free Open source · MIT licensed

Read the code.
Run the agent. Same window.

Codeviewer is a fast, read-only code viewer with a real terminal built in. Point your favourite CLI agent at a project and watch every file it touches update live, with git telling you exactly what changed.

Verify your download · SHA-256 and signed build provenance for every file

Codeviewer showing a project's explorer with git status letters, a TypeScript file with git gutter markers and inline blame, and a terminal running git log.

Built for watching code change

Everything an IDE shows you, nothing that lets anything slip in by accident: Codeviewer never edits a file.

A real terminal, built in

A native PTY and a from-scratch xterm-grade emulator: truecolor, mouse, alternate screen, bracketed paste and crisp box drawing. Run Claude Code, Codex, aider, vim or htop right next to the code.

Live while agents work

Files reload in place as they change on disk. Changed lines flash, the explorer marks them, and nothing you are reading jumps.

Git, read-only

Status letters in the explorer, gutter markers against HEAD with a peek at the old lines, inline blame, branch, ahead/behind and merge state. It never writes to your repository.

Fast at any size

Virtualized everything: 100k-line files open instantly, quick-open searches 200k paths as you type, and the terminal streams megabytes per second.

Locked down

The window can only reach its own local server. Header-token auth, DNS-rebinding and CSRF guards, and git hardened against hostile repositories. Reviewed adversarially.

Native and small

A small native Mac app on the system WebKit, with real menus, window tabs and a folder picker. Built with Bun and TypeScript and zero third-party dependencies.

See what HEAD had

Click any gutter marker to peek at the lines as they were in the last commit. Inline blame follows your cursor; the status bar shows the branch, how far ahead or behind you are, and every changed file is one ⌘⇧G away.

  • Explorer letters: M modified, A added, U untracked, D deleted, C conflict
  • Live as you or an agent edit, stage, commit or switch branch
  • Safe on untrusted repositories: no hooks, filters or drivers ever run
Light theme with a peek popup showing the HEAD version of a changed line.

A shell in a window deserves care

Codeviewer serves a real terminal, so it was designed and then attacked by reviewers looking for a way in. Every confirmed finding was fixed and pinned with a test.

Only its own server

The Mac window blocks every request except its own local port. External links open in your browser, never inside the app.

No ambient credentials

A random 256-bit token lives in the URL fragment and a request header. No cookies, no token in process lists, Host and Origin checked on every request.

Hostile repos are fine

Git runs without filters, textconv, signature checks, fsmonitor or submodules, and never writes your index. Read the design and review notes.

Download

The latest release. The apps are self-contained; the CLI binaries serve the viewer to any browser (codeviewer . --no-open).

PlatformFileSHA-256
macOSApple silicon
on GitHub
macOSIntel
on GitHub
Linuxx86-64
on GitHub
LinuxARM64
on GitHub
Command-line only (no window, any browser)
macOS CLIApple silicon
on GitHub
macOS CLIIntel
on GitHub
Linux CLIx86-64 (glibc)
on GitHub
Linux CLIARM64 (glibc)
on GitHub
Linux CLIx86-64 (musl / Alpine)
on GitHub

All files, SHA256SUMS and its signature are on the latest GitHub release.

Verify before you run it

Every release is built by GitHub Actions from a tagged commit, on a clean runner. Independent checks prove the file you have is that build: its checksum, the release signature, and where it was built.

  1. Download the app, the checksum list and its signature

    curl -LO https://github.com/BackendStack21/codeviewer/releases/download/<tag>/Codeviewer-<version>-macos-arm64.dmg
    curl -LO https://github.com/BackendStack21/codeviewer/releases/latest/download/SHA256SUMS
    curl -LO https://github.com/BackendStack21/codeviewer/releases/latest/download/SHA256SUMS.sig

    Intel Mac: use Codeviewer-<version>-macos-x64.dmg.

  2. Check the SHA-256

    shasum -a 256 -c SHA256SUMS --ignore-missing

    Expect Codeviewer-<version>-macos-arm64.dmg: OK. It must also match the hash in the table above.

  3. Check the release signature

    curl -fsSLo codeviewer.pub https://raw.githubusercontent.com/BackendStack21/codeviewer/main/packaging/update-key.pub
    openssl pkeyutl -verify -pubin -inkey codeviewer.pub -rawin -in SHA256SUMS -sigfile SHA256SUMS.sig

    Expect Signature Verified Successfully. Needs OpenSSL 3 or newer (brew install openssl; the built-in one is LibreSSL). This is the same Ed25519 signature the in-app updater checks before installing anything.

  4. Check where it was built

    # GitHub CLI: https://cli.github.com
    gh attestation verify Codeviewer-<version>-macos-arm64.dmg --repo BackendStack21/codeviewer

    This checks a Sigstore-signed provenance statement logged in a public transparency log. It proves the file came out of this repository's release workflow, at a specific commit. It does not depend on this website.

  5. Install

    Open the DMG and drag Codeviewer to Applications. The app is not notarized by Apple, so the first launch needs right-click → Open, or:

    xattr -dr com.apple.quarantine /Applications/Codeviewer.app
Or build it yourself

You need Bun 1.3.5 or newer (and Xcode command line tools for the Mac app). There are no dependencies to install.

git clone https://github.com/BackendStack21/codeviewer.git
cd codeviewer && git checkout <tag>
bun run test
bun run build:local