Type what you mean, not what you remember.
"undo my last commit" finds git reset --soft HEAD~1, though the command never says "undo". reman searches your real history by meaning and by text at the same time, so a typo or a half-remembered flag still lands.
- This folder first, then everywhere. A search never dead-ends.
- Press ↑ in any shell and start typing. The best match sits right above your prompt.
- Never done it? reman says "nothing close in your history" instead of passing off a guess.
- An empty search shows what you usually run next here.
Ten copies that differ by one word are one command.
History fills up with near-copies: a commit message, a pod name, a folder. reman folds them into one command with a blank, shows what went in it lately, and puts your cursor right in the blank.
- Only data folds: quoted text, paths, numbers, hashes, and generated names like
api-7f9c4.docker compose upanddownstay two commands. - Enter puts it on your prompt with the cursor inside the quotes. Type, and Enter runs it.
- Search for one of its values (
fix login) and you get that exact command instead. - Ctrl+G shows every variant on its own line.
Find it by when you ran it.
You don't remember the flags, but you remember it was last week, or the day before the release. End a search with when, and only what ran then is left.
today,yesterday,this week,last week,last month,3 days ago,last 2 weeks.- A weekday:
friday,on fri,since monday. - Only the end of what you type is read as time:
echo today is fineis still just text. yesterdayon its own browses that whole day. Agents'reman_searchreads it too.
Every run, and what it printed.
The finder opens in the lines under your prompt, so whatever you were reading stays on screen. It lists your own commands; F3 adds what your agents ran. Press Ctrl+O on a command and you get its whole history: every run, and what that run printed.
- Every run. When, how long, whether it worked, the branch, the folder and who ran it. Del Del forgets one run and keeps the command.
- What it printed. Your agents' output is kept as they run. For your own,
reman shellruns your shell inside a terminal layer of reman's own (ConPTY on Windows) and keeps each command's output the way your terminal drew it: colours gone, a progress bar as it ended, long output whole. - Find it again.
reman output --failed,reman output npm test, or by what it said:reman output ECONNREFUSED. Agents read it throughreman_outputinstead of running the command again. - Small and private. Secrets masked, only the end of a long output, only your newest 3000 runs.
reman settingscan open every new shell inside it. - Your keys. Vim keys are a setting: Esc, then j k to move, dd to forget, q to close.
Reuse the one that worked, not the newest.
Every command carries its history: how often it ran, where, who ran it, whether it succeeded, and how long it usually takes. Of five variants you tried last spring, you see which one held up.
- Worked every time, failed every time, or its success rate.
- A command that only ever failed never leads a list.
- Commands your agents ran are marked, so you know what you typed yourself.
- Usually 3m 12s. The time a command takes when it works, so you know whether to wait or get coffee.
- Done alerts. A command of yours that ran a minute or more sends a desktop notification when it finishes, saying if that was faster or slower than usual. Set it to 5 minutes, or off, in
reman settings.
It tells you it'll fail before you wait for it.
You run the command you remember, and two minutes later it fails the way it failed the last three times. reman checks when you press Enter. If the history here says it will fail, and failing costs you something, it holds the command once and says why.
- Only on strong evidence: it failed every time here, or the last three times in a row.
- Only when failing costs something: its failures took 10 seconds or more, or it installs, builds, migrates or deploys. A typo that fails in a blink just runs.
- What it printed last time, and what worked instead, with what that changes. Alt+F puts it on the prompt.
- Enter again runs it anyway. Nothing is ever blocked.
- One exact lookup on Enter, about 3 ms; never while you type. PowerShell, zsh and fish.
After a failure, the fix is waiting.
When a command fails, reman prints what you ran next the last time, when that worked, and what it changes. It learns these pairs from you, so it knows your missing upstream and your peer-dependency flag, not just typos. Alt+F puts the fix on your prompt.
- Proven fixes first, then the closest command that worked.
- What the fix changes, word by word:
adds --build,ci → install,gti → git. You judge it at a glance. - The same error from a different command gets what fixed the first one.
- With no fix waiting, Alt+F moves a word, and accepts a word of your shell's grey suggestion, as before.
- Nothing ever runs by itself. You press Enter.
The next step, one key away.
On an empty prompt, Alt+N puts what you'd run next here: the next step of a flow you started, the fix for what just failed, or what you usually run after your last command. It lands on your prompt, never runs. Press it again for the next idea.
- Flows. Sequences you repeat (pull, install, migrate, start) are found in your history. Open one in the finder and each next step waits on ↑ and on Alt+N.
- Only commands you ran yourself: never an agent's one-off script.
- Clearing the screen doesn't count as a step.
clsnever decides what comes next. - With text already typed, Alt+N keeps its usual meaning.
docker compose up -d, three ideas in order: the flow's next step, what usually follows, what you often run here.When it breaks, it knows what changed.
Every run keeps the git branch and commit it ran on. So when a command that kept working starts failing, reman can say more than "it failed": it worked on main and you're on a feature branch now, or new commits came in, or the commit is the same and the change is somewhere else.
- Read from the files under
.git, never by running git. Worktrees and any spelling of the remote count as one repo. reman whyshows every run since it last worked, with the branch where it changes, and how to compare:git diff main...feat/x.- Flaky, not broken. A command whose result keeps flipping both ways, with no new commit and no install in between, is called flaky when it fails. Nobody changes code over it.
- Agents get the same:
reman_checksays which branch it worked on, and tells them to retry a flaky one before editing.
npm test worked here 4 times, last 2 days ago; it worked on main, you're on feat/x now. Compare them: git diff main...feat/xWalk back in where you left off.
reman knows what happened in each folder, and when. Open a terminal in a project you left days ago and it tells you what you did there. Go to a folder by what you did in it. Ask it what yesterday looked like.
- Last time here. One line, once, when you come back to a folder after a while.
- rcd.
rcd alembicgoes to the folder where you ran it;rcd billing apigoes by the folder's name.rcdalone lists where you were lately, andrcd 3goes there. - Your day.
reman yesterday,reman today,reman day monday: what you ran, by project, with failures and what fixed them, and what each agent did there. Good for a standup. - What broke it? After a command that kept working here fails: what ran in this folder since.
reman whytells the whole story. - Runbook.
reman runbookwrites how the project is run, by task, from the commands that worked. A local model (Ollama, LM Studio) can arrange and explain it; it never invents a command.
Your agents stop guessing commands.
Claude Code, Codex and Cursor usually write commands from scratch. With reman they ask first, and reuse the ones that already work on your machine. reman never generates a command; every result is one that really ran.
- Connected automatically at install: ten MCP tools, plus a local HTTP endpoint for SDKs and scripts.
reman_outputtells an agent what a command printed last time, instead of running it again.reman_runbooktells an agent how the project is run before it guesses.reman_runningtells it which servers are already up and who started each, so it uses your dev server instead of killing it.reman_checksays when a tool isn't installed here, so it doesn't retry it. - Agents see no history until you approve a folder, not even the project they are working in. An agent cannot approve one for itself.
- No close match means an empty answer, not the least-bad guess.
- What Claude Code and Codex run is recorded too, with how long it took and what a failure printed.
- Stuck in a loop? When Claude Code runs a command that fails the same way for the third time, its hook tells Claude right there: running it again unchanged will fail again.
reman agentslists every retry loop of the week. reman_checkalso says how long a command usually takes, so an agent waits instead of calling it hung.- Secrets are redacted. In strict mode, anything still secret-looking is withheld.
▸ reman_search({ "intent": "run database migrations" }) [{ "command": "alembic upgrade head", "run_count": 18, "success_rate": 1.0, "description": "Upgrade the database to the latest revision", "last_run": "6d ago" }]
error[E0425]: cannot find value `cfg` in this scope
(the third time, the same error)
cargo build -p api has now failed 3 times in a row, the same way each time. Running it again unchanged will fail again: change something first, or ask the user.cfg is defined first.Find the session that did it.
Somewhere last week an agent fixed the migrations. Which chat was that? reman keeps each coding agent's session id with every command it ran, so you can find the session by what it did, and pick it up where it stopped.
- reman sessions. Your agents' sessions, newest first: where each worked, what it built, tested, installed or migrated, and how it went. The
sedandgrepan agent reads files with is left out. - By meaning, text or folder.
reman sessions migration last weekmatches what a session ran, a file it touched, or its folder's name; time words narrow it. - reman resume. Reopens the best match in its own folder: Claude Code, Codex, Gemini CLI and opencode. A number picks another match.
Fast enough to live on ↑.
One Rust binary. The whole history stays in memory and the search model stays warm, so the finder answers before you finish typing.
| Search by meaning, per keystroke | 8 ms |
| Did-you-mean after a failed command | 4 ms |
| Next-command prediction | 0.2 ms |
| Browse recent history | 3.5 ms |
| The check when you press Enter (one round trip) | 3 ms |
| Alt+N, the next step | 1 ms |
rcd, reman yesterday, reman agents | 4 to 12 ms |
| Added to each command you run: PowerShell | no process spawned |
| Added to each command you run: bash, zsh, fish | 5, 2, 5 ms |
| Search model | bge-small-en-v1.5, runs locally |
| Where your history lives | ~/.reman, on your machine |
Private by default
Your history never leaves your machine; the one request reman makes is a daily check for a new version, which reman settings turns off. Secrets are masked before anything is saved, a command typed with a leading space is never recorded, and Del Del forgets one everywhere.
Every shell, one history
PowerShell, bash, zsh, fish, nushell, xonsh and Command Prompt, plus the commands your agents run, tagged with the agent's name.
One settings page
reman settings, or F10 in the finder: coding tools, shared folders, privacy, done alerts, keys and shells. Saved as you change them; key changes when you press s.
One command. Nothing to configure.
- Run the installer below. It downloads the latest release and checks its SHA-256.
- Setup wires your shells and connects every coding tool it finds. Each config it touches is backed up first. Coming from Atuin? It imports your history too.
- Open a new terminal and press ↑. The first start downloads the search model once, about 130 MB.
| Or download | file |
|---|---|
| Windows 10 and 11, x64 | reman-windows-x64.zip |
| macOS, Apple Silicon | reman-macos-arm64.tar.gz |
| Linux, x64 | reman-linux-x64.tar.gz |
| From source, Rust 1.85 or newer | cargo build --release |
Staying up to date. Once a day reman asks GitHub whether a new version is out, and tells you when one is. reman update installs it; reman update --auto on lets reman install new versions on its own. Every release is signed, and reman installs only what carries its signature and matches its signed checksum: never an older version, and never a file changed on the way.
Everything it does, on one card.
| Find it | |
| Search by meaning | tear down containers finds docker compose down -v. Typed text and typos work too. |
| Time in a search | End with when: deploy last week, docker yesterday. |
| Commands with a blank | Thirty-eight commit messages are one line; Enter puts the cursor in the blank. |
| Under your prompt | The finder opens below the prompt, your own commands first, agents' one key away. |
| Every run | When, how long, who, which branch, and what that run printed. |
| Before and after it runs | |
| Track record | Worked every time, failed every time, or how often. A command that only failed never leads. |
| How long it takes | Usually 3m 12s; a desktop note when a long command finishes. |
| Held before it fails | A slow command that keeps failing here waits for a second Enter, with why. |
| Fixes, learned from you | After a failure, what worked last time and what it changes, one key away. |
| When it breaks | What changed since it last worked: the branch, new commits, an install. Flaky, not broken. |
| Your work | |
| The next step | What you usually run next here, from your own habits, on one key. |
| Flows | Sequences you repeat, walked through a step at a time. |
| Your folders, your day | rcd alembic goes where you ran it; reman yesterday tells your day by project. |
| Runbook | How a project is run, from the commands that worked there. |
| What it printed | reman shell keeps your commands' output; reman output finds it. |
| Your agents | |
| Real commands only | Claude Code, Codex, Cursor and others ask before guessing; ten tools over MCP and HTTP. |
| Only what you share | No history until you approve a folder. An agent can't approve one for itself. |
| Loops broken | An agent retrying a command that keeps failing the same way is told to stop. |
| Sessions | Find the agent session that did it, and reopen it where it worked. |
| Yours | |
| Your own keys | Every key reman takes can be changed or turned off: reman settings, Keys (F10 in the finder). Open shells take a change at their next prompt. Presets: standard, gentle, vim. |
| Private | On your machine only. Secrets masked before saving; a leading space is never recorded. |
| Every shell | PowerShell, bash, zsh, fish, nushell, xonsh and Command Prompt, plus what your agents run. |
| Updates | Told when a new version is out, or installed on their own with reman update --auto on. Signed releases only. |
| Open source | Apache License 2.0. One Rust binary for Windows, macOS and Linux. |
Every key is listed in the finder (F1) and by reman keys, as you have them.