Acknowledgements
mrman is not a from-scratch idea. It is a port of one project, shaped by another, and standing on a stack of libraries that do the genuinely hard parts. This page says who did what.
tuicr — the thing mrman is a port of
Section titled “tuicr — the thing mrman is a port of”tuicr by agavra — “A code review TUI with vim keybindings. Export to GitHub, GitLab, or clipboard.” Rust, MIT.
This is the largest debt by a wide margin, and “inspired by” undersells it.
mrman is a Go reimplementation of tuicr: the review model, the keybindings, the
continuous-diff presentation, the comment scopes, the slug-addressed session
storage and the persisted JSON format all originate there. The session format
is deliberately kept structurally identical to tuicr’s v1.3. tuicr’s own test
suite is ported throughout as the behavioural spec, and a fair number of
mrman’s tests still cite tuicr issue numbers as the reason a rule exists — the
comment in internal/slug explaining why live sessions embed a HEAD SHA points
at tuicr #378, because that is where the bug was found and fixed.
If you want the Rust original, use it. It is a good tool, and mrman exists because it was worth having in Go with a four-forge API layer rather than because anything was wrong with it. mrman vs tuicr is an honest account of where they differ.
Hunk — a different answer to the same question
Section titled “Hunk — a different answer to the same question”Hunk by Modem — “Review-first terminal diff viewer for agent-authored changesets, built on OpenTUI and Pierre diffs.” TypeScript, MIT.
Hunk takes the same starting position — review belongs in the terminal, and a
growing share of the diffs under review were written by an agent — and answers
it differently at almost every turn: OpenTUI rather than Bubble Tea, inline
agent annotations rather than a JSON session CLI, a responsive split/stack
layout rather than a fixed pane arrangement. Its watch mode, its multi-file
sidebar, and its insistence that review is a first-class activity rather than a
git diff with colours are all worth taking seriously.
No code is shared between the two. The debt is one of framing: a project that treats agent-authored changesets as the normal case rather than the exception is a clarifying thing to have read.
Charm — the terminal stack
Section titled “Charm — the terminal stack”Almost everything you actually look at is Charm’s work:
| Bubble Tea | The Elm-architecture runtime the whole app is a Model inside |
| Lip Gloss | Styling and layout |
charmbracelet/x/* |
ansi, term, termios, windows, colorprofile, ultraviolet — the parts that make a terminal behave |
Kitty keyboard-protocol support is why mrman can tell a key release from a key press, which is what makes the two-press file walk safe. That is Bubble Tea’s doing, not mrman’s.
Everything else mrman leans on
Section titled “Everything else mrman leans on”| Chroma | Syntax highlighting, by Alec Thomas |
| CUE | Validates user-written TOML config and themes, so mistakes become warnings instead of crashes |
| go-git | Git plumbing |
| BurntSushi/toml | Config parsing |
| Cobra | The CLI surface |
| adrg/xdg | Config and data directories that respect the spec |
| google/uuid | Session and comment identifiers |
| go-shellquote | Parsing token_cmd and editor commands the way a shell would |
And the four forge clients, without which the submit path would be a pile of hand-rolled HTTP:
| go-github + githubv4 | GitHub REST and GraphQL |
| gitlab-org/api/client-go | GitLab |
| azure-devops-go-api | Azure DevOps |
| forgejo-sdk | Forgejo and Gitea |
Theme authors
Section titled “Theme authors”Every bundled theme except mrman’s own dark and light is a port of someone
else’s colour scheme. The palettes are theirs:
| Theme | Original |
|---|---|
tokyo-night-storm, tokyo-night-day |
Tokyo Night |
catppuccin-latte, -frappe, -macchiato, -mocha |
Catppuccin |
gruvbox-dark, gruvbox-light |
Gruvbox |
nord-dark, nord-light (+ high-contrast) |
Nord |
everforest-dark, everforest-light |
Everforest |
solarized-dark, solarized-light |
Solarized |
ayu-light, ayu-mirage |
Ayu |
onedark |
One Dark (Atom) |
github-light, github-dark |
GitHub’s editor palettes |
Syntax highlighting inside those themes is Chroma’s, mapped onto each palette — see Themes for how to write your own.
Licensing
Section titled “Licensing”mrman is Apache-2.0. Its dependencies carry their own licences, which travel
with them; go mod download and your tooling of choice will enumerate them
precisely, and this page is a courtesy rather than a substitute for that.
The one that needs stating explicitly is tuicr’s, because mrman is a port of it
rather than merely a user of it. It lives in
NOTICE — the
canonical copy, alongside LICENSE in every release archive — and is
reproduced here for convenience:
MIT License
Copyright (c) 2025 tuicr contributors
Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE.And you
Section titled “And you”If you filed an issue, argued with a default, or told us a keybinding was wrong: that is the part of this that does not fit in a table. Thank you. Contributing if you want to do more of it.