stinkpot: sqlite-backed shell history

Lobsters Hottest Tools

Summary

Stinkpot is a lightweight, SQLite-backed shell history searcher for bash, similar to atuin but with fewer features and around 400 lines of Go.

<p><a href="https://lobste.rs/s/bvgaff/stinkpot_sqlite_backed_shell_history">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 07/25/26, 10:02 AM

# oppi.li/stinkpot Source: [https://tangled.org/oppi.li/stinkpot](https://tangled.org/oppi.li/stinkpot) [2](https://tangled.org/oppi.li/stinkpot/stars) ### Configure Feed IssuesPull RequestsCommitsTags Select the types of activity you want to include in your feed\. sqlite\-backed shell history [2](https://tangled.org/oppi.li/stinkpot/stars) ### Configure Feed IssuesPull RequestsCommitsTags Select the types of activity you want to include in your feed\. [4](https://tangled.org/oppi.li/stinkpot/commits/main)[1](https://tangled.org/oppi.li/stinkpot/branches)[0](https://tangled.org/oppi.li/stinkpot/tags)### Clone this repository Use permalink HTTPS https://tangled\.org/oppi\.li/stinkpothttps://tangled\.org/did:plc:wqstj3k5tslmm246baaf3tpa SSH git@tangled\.org:oppi\.li/stinkpotgit@tangled\.org:did:plc:wqstj3k5tslmm246baaf3tpa For self\-hosted knots, clone URLs may differ based on your setup\. [Download tar\.gz](https://tangled.org/oppi.li/stinkpot/archive/main?format=tar.gz)[Download \.zip](https://tangled.org/oppi.li/stinkpot/archive/main?format=zip) [Commits4](https://tangled.org/oppi.li/stinkpot/commits/main) Signed\-off\-by: oppiliappan <me@oppi\.li\> 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 ``` 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. ```

Similar Articles

SQLite compressed text-history prototypes

Simon Willison's Blog

Simon Willison experiments with storing SQLite text revision histories as compressed JSON arrays, comparing whole-blob and chunked storage approaches. A simulation of 1,000 edits compressed 20.4 MB of revision text into 80.3 KB using Zstandard.

Stash

Product Hunt

Stash is a tool that provides a hidden pocket for apps cluttering your Dock, helping to organize and reduce visual clutter.

The Git history command deserves more attention

Hacker News Top

The article highlights the new `git history` command with `fixup`, `reword`, and `split` subcommands, which provide atomic and branch-aware editing of commit history, offering benefits similar to jj without requiring a version control switch.

SQLite with a Fine-Toothed Comb

Lobsters Hottest

John Regehr describes using tis-interpreter to search for undefined behavior in SQLite, finding bugs like dangling pointer uses and uninitialized reads that other tools missed.