Stinkpot: A Lightweight SQLite-Backed Shell History Searcher for Bash
Stinkpot: SQLite-backed shell history
I created Stinkpot because I found Atuin too heavy for my needs. While I appreciated Atuin's session-agnostic history and TUI, I didn't need its sync server, AI, or dotfile management. Stinkpot is a tiny, 400-line Go tool that uses SQLite to provide fast reverse search for Bash history without the extra complexity.
Stinkpot is a much tinier Atuin, providing only the session-agnostic history management and searcher TUI I actually use.
- NightMKoder
FWIW I use atuin (https://atuin.sh/) and am reasonably happy with it, especially the infinite capacity & snapiness. Ignoring the sync features, I believe it's also sqlite backed when running in local-only mode.
- ptspts
As indicated in https://tangled.org/oppi.li/stinkpot/blob/cdf87ffcd36e96f3d4... , this software (stinkpot) still uses Bash PROMPT_COMMAND as an entry point to copy new shell history entries to its database.
PROMPT_COMMAND has the following flaw: a command gets recorded as soon as it has finished. So command which never finish (e.g. because they run for a long time, and the user closes the terminal window, or reboots the system) never get recorded. Another flaw: the users starts a long-running command in terminal window 1, and immediately they want to start a variant of it in terminal window 2, but it's not available in the history.
- craftkiller
For those of you on zsh, I have been a big fan of https://github.com/larkery/zsh-histdb
It is written entirely in shell script, with the only dependency being sqlite itself.
- lucideer
<unrelated side note for the author>
I would never normally mention this, but I'm reading this repo on mobile & it seems Forgejo doesn't wrap .txt files on mobile. Any reason not to use .md for a new project in 2026?
- mkesper
How do these compare to the fish builtin history search with dir awareness and completion menu? I found it quite an improvement to bash history handling but fish isn't POSIX compatible so sometimes you need to switch back and forth.