The TUI app store: find, search, and one-key-install hundreds of terminal apps, without leaving the terminal.
Browse a curated catalog of TUIs, read the details, and install with a single key β tuistore figures out how to install each one on your machine (cargo, brew, pacman, uv, go, npmβ¦) so you never paste a command your box can't run. Star the ones you love straight to GitHub.
Want your TUI featured? Go here -> gheat.net/#p/tuistore
Built on π ricekit Β· seeded from awesome-tuis Β· made by @Gheat1
Finding good terminal apps means trawling GitHub and awesome-lists; installing
them means guessing whether it's cargo install, brew install, pacman -S,
uv tool install, a curl | sh script, or building from source β and half the
commands in a README are for the wrong OS.
tuistore fixes both. It's a fast, mouse-and-keyboard TUI that:
- puts 800+ curated terminal apps one fuzzy-search away β full-screen TUIs and the modern CLI toolkit (fastfetch, neovim, ripgrep, bat, eza, starship, zoxide, fzfβ¦),
- shows you the install commands that actually work on your machine, ranked,
- installs them with one key and streams the output live,
- and lets you β star anything you like on GitHub, from the store.
One-liner (picks the best of uv / pipx / pip automatically, installs uv first if none are found):
curl -fsSL https://raw.githubusercontent.com/Gheat1/tuistore/main/install.sh | shHomebrew:
brew install gheat1/tuistore/tuistoreOr straight from PyPI:
uv tool install tuistore # recommended
pipx install tuistore
pip install tuistoreLatest main instead of the last release:
uv tool install git+https://github.com/Gheat1/tuistore
pipx install git+https://github.com/Gheat1/tuistoreArch Linux (AUR):
yay -S tuistore # or paru, or any other AUR helperWindows is supported in PowerShell (or Windows Terminal) too. Install any of
the package managers and toolchains you already use β winget, Scoop,
Chocolatey, uv, Cargo, Go, and npm are detected automatically β then run the
same command above. Windows-specific methods are offered only on Windows.
Then just run:
tuistoreStarring uses the gh CLI if you have it
(gh auth login); everything else works without it. tuistore itself installs
nothing but itself β it drives the package managers you already have.
Dead simple: type to search, arrow to browse, i to install.
/ focus search β type a name, description, or language
β β Β· j k move through the list g / G jump to top / bottom
enter open / focus a tool
i install (press a to pick a different method)
r read the README in-app (inspect before you install)
u update Β· x uninstall (tools you installed via tuistore)
s star / unstar on GitHub o open the repo in your browser
, manage (update tuistore Β· refetch catalog Β· update all)
f features / about t cycle theme
? all keybindings q quit
Everything clicks, too β rows, the hint bar, and the draggable pane dividers.
This is the hard part, and it's the point of tuistore.
- It reads your machine. OS, Linux distro family (Arch, Debian, Fedora,
SUSE, Void, Alpine, Gentooβ¦), CPU arch, and every package manager /
toolchain actually on your
PATH. - Every tool carries platform-gated install methods. A method knows what
binaries it needs and where it's allowed to run, so
pacman -Sonly appears on Arch,brewonly where brew exists,cargoonly where cargo is. - Methods come from three places, and the UI labels which is which:
- β official β commands the project itself documents (hand-verified for the featured suite),
- β from README β scraped straight out of each repo's README (kept only when the command actually names the tool, so dependency lines don't leak),
- β unverified β a best-guess from the repo's language, flagged so you know to check it.
- It ranks what's runnable and offers the winner as the default β a clean
managed install (brew / cargo / uv) before a
curl | sh, verified before guessed β with every alternative one keypress (a) away. - Before you commit, you can look. The install screen shows the exact
command with a clear β verified / β unverified badge (and a loud warning
on remote
curl | shscripts), andropens the project's README right in the store so you can inspect a tool before you install it. - It runs in your login shell and streams the output live β nothing is ever run silently; you always see the exact command and confirm it.
tuistore isn't just a browser β it's a package manager for the tools it installs.
- It remembers what it installed (which manager, which command) and also
detects what you already have β not just by binary on your
PATH, but by asking brew, uv, npm, cargo, pipx what they've installed (soripgrepβrg,bottomβbtm,git-deltaβdeltaall show up). The β Installed filter lists everything you've got. - On any installed tool,
uupdates it andxuninstalls it in place, with the right command for the manager (brew upgrade β¦,uv tool upgrade β¦,cargo uninstall β¦), streamed live. For a tool tuistore didn't install, it asks which manager you used. ,opens the manage menu with update everything β a one-shotbrew upgrade+uv tool upgrade --all+npm update -gβ¦ that upgrades all your packages, including ones installed outside tuistore β plus update tuistore itself, refetch the catalog, and clear cache.
Everything works from the shell, so tuistore drops straight into dotfiles, setup scripts, and READMEs:
tuistore install lazygit # resolve + install (platform-aware, confirmed)
tuistore install btop++ -y # -y to skip the prompt (great for scripts/CI)
tuistore remove lazygit # uninstall a tool you installed via tuistore
tuistore update lazygit # update one tool
tuistore search git # search the catalog
tuistore info btop++ # details + every install method
tuistore installed # list what tuistore installed
tuistore upgrade # update EVERYTHING (brew, uv, npm⦠all packages)
tuistore update # update tuistore itself
tuistore update installed # update only what tuistore installed
tuistore refetch catalog # pull the latest catalog
tuistore --doctor # what your machine looks like to the install engineA shell install uses the same engine (verified-before-guessed, platform-gated)
and is recorded in the same ledger β so tuistore installed, update,
remove, and the TUI's β Installed view all stay in sync.
- β Featured. Gheat's suite β ltui, NaviTui, ricekit β plus a few hand-picked community tools, all pinned to the top.
- 800+ tools β rothgar/awesome-tuis
plus a curated set of terminal essentials (the fetchers, editors, and modern
CLI utilities people actually
brew install) and a sweep of cli.masoko.net, in browsable categories, each enriched with live GitHub stars, language, and freshness.
Refresh or grow the catalog any time β it's a single re-runnable script:
uv run python tools/build_catalog.py # refresh stars + installs
uv run python tools/build_catalog.py --scrape 300 # scrape more READMEsIt parses awesome-tuis, batches a GraphQL sweep for stars/language/freshness, scrapes install commands for the most-starred tools, and infers the rest.
tuistore is part of a family. It's built on
π ricekit β the themes, widgets,
modals, icons, and design doctrine behind the whole suite β so it shares the
five themes (mocha Β· void Β· onyx Β· clear Β· system), the vim-and-mouse
navigation, the drag-to-resize panes, and the cache-first speed.
If you like tuistore, you'll probably like the rest of the suite:
| ltui | a fast, clean TUI for Linear |
| jtui | the same, for Jira |
| sctui | the same, for Shortcut |
| NaviTui | an animated terminal player for Navidrome |
| ricekit | the design system all of them share |
XDG-style dirs on macOS and Linux; Local AppData on Windows:
| what | where |
|---|---|
| state (theme, layout) | ~/.local/state/tuistore/state.json Β· %LOCALAPPDATA%\tuistore\state.json |
| cache (scraped installs) | ~/.cache/tuistore/ Β· %LOCALAPPDATA%\tuistore\cache\ |
| refreshed catalog and install ledger | ~/.local/state/tuistore/ Β· %LOCALAPPDATA%\tuistore\ |
tuistore --doctor prints what your machine looks like to the install engine.
Missing a tool, or a better install command? The catalog lives in
tuistore/data/catalog.json and is regenerated by tools/build_catalog.py β
PRs to add tools, fix install methods, or improve scraping are very welcome.
The awesome-tuis list itself is the upstream source for most entries. See
CONTRIBUTING.md for dev setup, tests, and how the
install engine's pieces fit together. Releases are tracked in
CHANGELOG.md.
GPL-3.0-or-later, with additional terms under Section 7 (see
LICENSE / NOTICE):
- the tuistore name, the ποΈ mark, and Gheat's branding are reserved β a fork or redistribution must be renamed and de-branded, so it can't be passed off as tuistore;
- attribution to the original author + a link back must be preserved;
- you may not misrepresent the origin or claim you authored the original.
Fork it and hack on it all you like β just don't ship my work as your own project. Made by @Gheat1, built on ricekit.


