Side-by-side review is the product, AI is optional
Lumen opens Git changes in a full-screen terminal interface with a file sidebar, syntax highlighting, hunk navigation, and mouse selection. It can inspect the working tree, one commit, a branch range, or a GitHub pull request. Stacked mode presents commits individually and remembers viewed files while you move through the stack. Jujutsu repositories are supported alongside Git, which gives the tool a wider audience than a conventional Git pager.
The AI features sit beside that viewer rather than inside every action. lumen draft proposes a commit message from staged changes, lumen explain summarizes or answers questions about a diff, and lumen operate proposes a Git command from prose. The last command displays an explanation and asks before execution. More than 10 provider routes are documented, including OpenAI, Claude, Gemini, Groq, DeepSeek, Ollama, OpenRouter, and Vercel AI Gateway.
Annotations work well until the process exits
A reviewer can attach a note to selected text, a hunk, or a whole file. Pressing I opens the annotation list, and s exports formatted feedback to standard output. That output route is clever for coding agents: invoke Lumen through a shell escape, mark the diff, then return those comments as the agent's next input. No editor extension or vendor-specific message format is required.
The notes are currently held in memory. Open issue 135 explains that an accidental exit loses the review and proposes per-commit files. That limitation changes how we would use the tool: short agent passes are fine, but a long pull-request review needs regular exports. Issue 145 also supplies a reproducible panic when the annotation preview truncates Cyrillic at a non-character byte boundary. Teams reviewing multilingual comments should test that path before depending on it.
What happened when we ran it
Our sandbox installed 518 Rust packages in 37 seconds. Building commit f600389 took 305 seconds on 3 CPUs and 12 GB of RAM. The checkout itself was compact at 56 files, roughly 22,170 source lines, and 1 MB. It had 1 CI workflow, no Dockerfile, and no separate tests directory. A release binary avoids making every user pay that source-build time.
The test step ended with exit code 101 after 21 seconds. Cargo reported 134 passing tests and 1 failure out of 135. test_get_merge_base_returns_ancestor panicked while setting up a checkout, with the message reference 'refs/heads/main' not found. The log does not say why that reference was absent, so we cannot label it a branch-name assumption or an environment defect without evidence beyond the run.
A mostly passing suite is encouraging for a terminal application, but the single failure sits in version-control behavior central to the product. The practical response is to try Lumen on the branch layouts and backends your team uses. Our run did not exercise the interactive display, a real GitHub pull request, provider APIs, clipboard integration, or Jujutsu. Those paths need a terminal-level trial rather than an inference from 134 tests.
Configuration can expose an API key in plain JSON
The viewer requires no AI credential. Optional AI commands accept provider, key, and model through command flags or environment variables. lumen configure writes settings to ~/.config/lumen/lumen.config.json, and the README's advanced example includes an api_key property in that file. Open issue 147 specifically requests system-keychain storage because a configuration file is not a safe home for secret values.
Use environment injection or another secret manager instead of committing a project-level key. Configuration precedence also deserves attention: command flags win over a selected config file, which wins over environment variables and then defaults. A repository can contain lumen.config.json, so inspect it before assuming your global provider and model apply. Local Ollama avoids a hosted credential, though it still needs a running local model service.
Terminal and repository edge cases affect the headline workflow
Lumen routes its TUI to /dev/tty when standard output is captured, allowing clean annotations to return to a coding agent. Issue 170 reports that the README's !lumen diff recipe fails inside Claude Code with No such device or address. The report was still open when fetched. If agent handoff is your main reason to install Lumen, reproduce that exact shell and TTY path first.
Repository internals can also matter. Issue 190 shows lumen explain failing on a split-index repository because libgit2 rejects the mandatory link extension. Configurable keybindings and generated-file ignore rules remain open requests. Release v2.32.0 did fix clipboard copying on Wayland and added C, C++, and Java highlighting, which shows the maintainer is working through platform and language gaps rather than only adding AI providers.
July release work continued through August issues
GitHub recorded the last source push on July 16, 2026, when v2.32.0 was released. The repository had 2,769 stars and 69 combined issues and pull requests when fetched. Issue discussion continued into August, including an August 25 request for arbitrary keyboard text selection. The later issue activity matters because the release date alone would miss current user engagement.
Lumen has a clear job and a better interaction model than piping a large diff through a colorizer. Its 134 passing tests, stacked review, annotations, and plain-output agent handoff justify a trial. The open persistence, secret-storage, TTY, Unicode, and split-index reports are concrete boundaries. Install the release binary, export notes early, and validate the one terminal workflow you intend to use before moving a team review onto it.

