cd /news/developer-tools/stinkpot-sqlite-backed-shell-history · home topics developer-tools article
[ARTICLE · art-73157] src=tangled.org ↗ pub= topic=developer-tools verified=true sentiment=· neutral

stinkpot: sqlite-backed shell history

Developer oppiliappan released stinkpot, a 400-line Go shell-history searcher backed by SQLite that provides session-agnostic history management and a reverse-search TUI for bash, as a minimal alternative to atuin. The tool imports existing bash history, stores it in ~/.local/share/stinkpot, and is triggered by Ctrl+R at the shell.

read1 min views1 publishedJul 25, 2026
stinkpot: sqlite-backed shell history
Image: source
stinkpot
--------
                             _
                         _  / \  _
                        (_\/\_/\/_)
                          /\/ \/\
                          \/\_/\/
                           \/_\/
                           "   "

stinkpot is an sqlite backed shell-history searcher for
bash.

stinkpot is a much tinier atuin (https://atuin.sh). i have
been using atuin for a while, but i don't use most of its
features: the sync server, atuin AI, dotfiles manager,
script manager or the KV store. while sync is interesting,
my machines have very different setups and i tend to run
very different commands on them.

my only usecase for atuin was the session agnostic history
management, and the searcher TUI. stinkpot provides these
while being about 400 lines of go.

stinkpot is a tiny turtle species apparently, hence the
name.

develop
-------

to build:

    go build -o stinkpot .

usage
-----

if you use home-manager for nixos, stinkpot has a
home-manager module:

    home-manager.users.<name> = {
      imports = [
        ./home.nix
        inputs.stinkpot.homeManagerModules.default
      ];
    };

if not, just call eval the init script in your .bashrc:

    eval "$(stinkpot init)"

start by importing your existing bash history into stinkpot:

    stinkpot import

and then hit ctrl+r at your shell to trigger reverse search:

    > search history...
     1s vim flake.nix
     3m redis-server
     3m jj l
    35m jj show m
    36m jj git fetch
    39m cd
    40m vim readme.txt
      788 matches · ↑/↓ move · enter accept · esc cancel

hit tab/enter to accept the selection, hit enter again to
execute. the history database is stored in
~/.local/share/stinkpot. if upgrades break the DB, just
delete it and run the import command.

sqlite-backed shell history

Go 82.5%

Nix 17.5%

Signed-off-by: oppiliappan me@oppi.li

speeds up reverse search, the sqlite plan now uses covering index

instead of temp b-tree for order-by

Signed-off-by: oppiliappan me@oppi.li

readme.txt

── more in #developer-tools 4 stories · sorted by recency
── more on @oppiliappan 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/stinkpot-sqlite-back…] indexed:0 read:1min 2026-07-25 ·