Skip to main content
Glama

seam

A side-by-side diff viewer for the terminal that knows your code: hover a symbol in the diff for its type and docs from the language server, and leave review notes at lines for an agent such as Claude Code to answer. One key switches between the changed hunks and the whole file.

seam showing a diff, the whole file and a hover

seam is not a pager like delta or diff-so-fancy, which colour the output of git diff: it reads the repository itself, holds both versions of each file, and lets you move through them.

Features

  • Side by side, or one column when the terminal is narrow

  • The changed hunks or the whole file, one file at a time or all of them in one stream

  • Hover and go-to-definition through the language server, on the new side and the old one, also when comparing commits

  • Syntax colours for Go, Rust, JavaScript, TypeScript, JSX, TSX, HTML, PHP and Python, and any other language chroma knows, by configuration

  • Changed words marked within a line

  • Review notes: questions and findings at lines of the diff, set with a key or a click in the gutter, which follow their lines through edits and belong to the branch they were set on

  • seam mcp, so that an agent such as Claude Code or OpenCode reads your notes and answers them at the line, and S sends the waiting notes to a running Claude Code session (see Agents)

  • Files or directories on disk compared with --files, also as git difftool

  • A file list grouped by folder, and reload on change with --watch

  • Keys, colours and servers configurable in one TOML file

seam setting a question and a finding, then listing the notes

Related MCP server: nvim-mcp

Requirements

  • Linux or macOS

  • git 2.36 or newer

  • A terminal with mouse support for hover; without one, the caret does it

  • For hover, the language server of the language, see Language servers

  • To build: Go 1.27

Install

Each release has a static binary for Linux and macOS on amd64 and arm64, which needs nothing else but git:

# macOS, with Homebrew
brew install --cask dturcinovic/tap/seam
# Debian, Ubuntu
sudo apt install ./seam_<version>_amd64.deb
# Fedora and other rpm systems
sudo dnf install ./seam-<version>-1.x86_64.rpm
# Any Linux: unpack and put seam on the PATH
tar -xzf seam_<version>_linux_amd64.tar.gz seam && mv seam ~/.local/bin/

checksums.txt in the release holds the SHA-256 of each file.

With Go 1.27:

go install github.com/dturcinovic/seam/cmd/seam@latest

Or from a clone, with Task:

task build    # bin/seam

seam --version names the release, the commit and its date, and seam upgrade brings an install to the latest release (see Upgrading).

Quick start

In a git repository with changes:

seam                # HEAD against the worktree
seam main           # main against the worktree
seam HEAD~1 HEAD    # the last commit
seam --staged       # what is staged
seam --files a b    # two files or directories on disk

Key

Does

tab / shift+tab

Next, previous file

n / p

Next, previous change

f

Hunks or the whole file

u

Side by side or one column

s

One file or all files in a stream

b

File list

mouse at rest

Hover

ctrl + click

Go to the definition, ctrl+o back

i

Caret: K hovers, d goes to the definition

c

A note at the caret's line, or click [+] in the gutter

N

All notes

q

Quit

Documentation

  • Usage: what seam compares, the views, the keys and the mouse, notes and agents

  • Language servers: which ones, how to install them, and their workspaces

  • Configuration: config.toml with every key

Contributing

See CONTRIBUTING.md.

License

MIT

Available Tools

3 tools
seam_notesA

Take review notes the user left in seam, a terminal diff viewer, in order to answer them: without arguments the open and sent notes, leaving out notes of other branches than the checked-out one; with ids those notes; with batch the notes the user sent to this session. Giving both ids and batch fails, and so does a batch that does not exist. Taking reserves the notes for this session so that no other agent session answers them; they stay reserved until this session exits or the user gives them back, and after a crash only the user can, so take only what you will answer. Each note comes with its file, its lines and the lines around them, the user's text and earlier answers; the call returns one claim to give seam_reply with each answer. Notes it cannot take come back under refused with the reason: unknown, taken (by any session, this one too), answered, resolved, other_session (the batch went to another session) or rebatched (sent again or edited since; leave those). It takes at most 20 notes per call; when more is true, call again for the rest. To read notes without reserving them, use seam_notes_view.

Inputs: ids, batch. Returns: more, claim, notes, refused

seam_notes_viewA
Read-only

Read the user's review notes without taking them: those of ids, or without ids every note that is not resolved, leaving out notes of other branches than the checked-out one, and including notes another session has taken. It reserves and changes nothing, and leaves out ids it does not know; use it to look before taking or to see what was answered. To answer notes, take them with seam_notes first and reply with seam_reply.

Inputs: ids. Returns: notes

seam_replyA
Idempotent

Answer a review note, giving the claim seam_notes returned with it; the answer, in Markdown, shows at the note's lines in seam right away and the note is marked answered. Sending the same text under the same claim again adds nothing and returns the earlier reply, so a lost answer can be sent again. An answer under an older claim, after the user gave the note back and it was taken again, is kept but leaves the note to the newer taker, and late is true. It fails on an unknown or resolved note, an empty answer, or one over 64 KiB.

Inputs: id (required), text (required), claim (required). Returns: late, reply

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.6/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool has a distinct role: seam_notes claims notes for answering, seam_notes_view inspects them without side effects, and seam_reply submits answers. The potentially overlapping read operations are explicitly differentiated by reservation behavior and intended use.

    Naming Consistency4/5

    All names use snake_case and a consistent seam_ prefix, making them readable as one tool family. However, they mix noun-based and verb-based forms, and seam_notes_view places the action after the resource rather than following a uniform verb_noun pattern.

    Tool Count5/5

    Three tools are well matched to the narrowly scoped review-note workflow. Each earns its place by covering inspection, exclusive claiming, and replying without adding redundant operations.

    Completeness5/5

    The surface covers the complete agent workflow of discovering notes, safely inspecting or claiming them, and submitting idempotent answers. Pagination, refusal states, stale claims, and other workflow edge cases are also addressed without obvious dead ends.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables agents to review GitLab merge requests by fetching MR metadata and diff SHAs, reading changed files and raw diffs, and posting inline comments on specific lines of a merge request diff via the GitLab REST API. Works with self-hosted or gitlab.com instances using an environment-provided personal access token.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables coding agents and human reviewers to share a single live view of code, letting the agent open and annotate specific lines while the human marks ranges to ask about, all without any write access to the underlying files.
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Local code review for people and their coding agents: an agent opens a review of its changes and hands over a link, the person comments on lines, and the agent reads the threads, replies and resolves what it fixed. Reads the git worktree directly, uncommitted work included; nothing leaves the machine.
      17
      104 npm
      131
      GPL 3.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables agents to create, list, and keyword-search scoped in-memory notes for user IDs over stdio, with state preserved between calls.
      MIT