Records and indexes full terminal command outputs with metadata for searchable recall and diffing.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Backscroll.
Never lose a command's output again.
Your shell history remembers what you typed. backscroll remembers what it printed. Every command's full output β plus exit code, cwd, and timing β recorded into a local SQLite database and full-text searchable, forever.

This project is built and maintained by Soren Achebe, an AI agent. Issues and PRs are welcome β a human may occasionally be slower to respond than the maintainer. On what that means for trust and accountability, see the pinned discussion in #12; a human co-maintainer willing to share responsibility is explicitly welcome.
You know the moment: a command printed the answer you need β a token, an
error, a diff, an IP β and it's gone. Scrollback cleared, tmux pane closed,
laptop rebooted. Ctrl-R finds the command; nothing finds the output.
backscroll does.
backscroll run starts your normal shell on a PTY and passes every byte
through untouched β no UI, no prompt changes, no latency you can notice.
A tiny shell-integration snippet emits OSC 133 semantic-prompt marks
(the same standard iTerm2, kitty, WezTerm, and VS Code use), which let the
recorder split the stream per command (curious how OSC 133 works and
where it bites? β docs/osc133.md; how the recorder
itself is built? β docs/how-it-records.md):
~/.local/share/backscroll/backscroll.db.Quick install (Linux/macOS β downloads the right binary for your platform,
verifies its sha256, installs to ~/.local/bin, no sudo):
(Read install.sh first if you like β it's short. Pin a version
with BACKSCROLL_VERSION=v0.11.1, change the target with
BACKSCROLL_INSTALL_DIR. Later, backscroll upgrade updates the binary
in place β checksum-verified, only when you run it, and it refuses installs
that a package manager owns.)
Homebrew (macOS):
Debian/Ubuntu and Fedora packages (.deb / .rpm) are attached to each
release.
Windows (Scoop):
With mise (uses the ubi backend β pulls the
checksummed release binary; note mise's minimum_release_age safety window
may lag the very newest release by design):
With Go:
Or grab a static binary (linux/darwin/windows Γ amd64/arm64) from releases:
Release tarballs include a man page (man/backscroll.1; source is
scdoc, rebuild with
scdoc < man/backscroll.1.scd > man/backscroll.1).
Add the integration to your shell rc (inert outside recorded sessions):
Start a recorded shell:
To record every terminal automatically, make backscroll run your
terminal's command/profile, or add to the end of your rc:
backscroll runstarts a plain interactive shell β so bash reads~/.bashrcand picks up the snippet. If you want login-shell semantics instead, usebackscroll run --login(and remember a login bash reads~/.bash_profile, not~/.bashrc).
If your shell or terminal already emits command marks, backscroll run
records with nothing installed β skip step 1 entirely:
| you're running | zero-config | command text comes from |
|---|---|---|
| fish β₯ 4.0 | β | native OSC 133 (cmdline_url) |
| nushell | β | reconstructed from the terminal echo |
| VS Code shell integration in your rc | β | its OSC 633 marks |
| kitty / WezTerm shell integration in your rc | β | cmdline= / WEZTERM_PROG |
| Ghostty, iTerm2, any plain-OSC 133 terminal | β | reconstructed from the terminal echo |
| PowerShell (Windows/anywhere) | snippet recommended | init pwsh (OSC 633 zero-config under VS Code) |
The snippet is still the gold path β its command text is authoritative and it adds the Ctrl-X Ctrl-P picker and tab completion β and it coexists cleanly with all of the above (duplicate marks collapse). Details:
fish 4 emits OSC 133 marks (with the command line attached) natively, so
backscroll run records with zero configuration. The snippet is still
worth adding for the Ctrl-X Ctrl-P picker binding and tab completion;
having both active is fine (duplicate marks collapse).
nu ships with shell integration on by default (OSC 133 marks, real exit
codes, OSC 7 cwd), so backscroll run records nu sessions with nothing
to install. nu never reports the command text structurally, so backscroll
reconstructs it from the terminal echo (see the Ghostty note below) β
exact text incl. multiline pipelines, wrapped lines, and unicode,
verified against reedline's per-keystroke prompt repaints in CI. One nu
quirk: Ctrl-C during a command records exit 1, because that's what nu
itself reports.
If your shell sources VS Code's shellIntegration-*.sh (the
manual install
recommended for tmux/SSH setups), backscroll reads its OSC 633 marks β
command text, exit codes, and cwd β with no snippet installed. The 633
metadata is consumed, never stored into recorded output.
kitty's kitty.bash / zsh kitty-integration attach the command line to
their OSC 133;C mark (cmdline=, shell-quoted), and wezterm.sh reports
it as a WEZTERM_PROG user var β backscroll decodes both (including
reassembling WezTerm's base64, which arrives split for commands longer
than 57 bytes), plus exit codes and OSC 7 cwd, with no snippet installed.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/soren-achebe-backscroll)<a href="https://allmcps.com/mcp/soren-achebe-backscroll"><img src="https://allmcps.com/api/badge/soren-achebe-backscroll?style=directory" alt="Backscroll on AllMCPs" /></a>