Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose an AI tool for the terminal?

Most of these send your text or code to a model, so start with where that model runs.

- **Pricing.** Coding agents are often free to install but charge for use, through a model provider's API or a subscription. Check the Pricing filter, then the provider's plans.
- **Local or cloud.** Tools that run models on your machine keep your data local, but they need plenty of RAM and ideally a GPU.
- **Permissions.** Agents can edit files and run commands. Check how each one asks before acting, and start in a project that's under version control so you can undo changes.
- **Platform.** Check the Platform filter, and read the install docs for Windows notes.

## What should you keep in mind?

Read what each tool sends to the provider and what it stores. API keys live in config files or environment variables, so keep them out of your shell history and out of any dotfiles you publish.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Want an AI model or a coding agent in your terminal? This list has coding agents such as Claude Code, Codex CLI, and Aider, tools that run models on your own machine such as Ollama and llama.cpp, and small helpers that send text to a model. Each row shows the type, language, license, and platforms, with the most starred tools first.
Want an AI model or a coding agent in your terminal? This list has coding agents such as Claude Code, Codex CLI, and Aider, tools that run models on your own machine such as Ollama and llama.cpp, and small helpers that send text to a model. Use the filters to narrow the list by app type, platform, language, or license.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a terminal chat or mail client?

Start with the service. Email, IRC, Mastodon, and feeds each need a different client.

- **Mail setup.** Some mail clients connect to your server over IMAP and SMTP. Others read mail that a separate sync tool downloads. Check which way each works before you set it up.
- **App type.** Some are full-screen TUI apps you keep open all day. Others are commands you can script. The App type filter separates them, including a Mail client type.
- **Platform.** Most of these are built for Linux and macOS. Check the Platform filter if you're on Windows.
- **Config.** Terminal mail and chat clients reward time spent on configuration. Look for sample configs in the docs before you start.

## What should you keep in mind?

Passwords often end up in config files. Use an app password from your provider, and a keyring or a password command where the client supports one.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a database CLI?

Start with the database you use. Most clients only speak one, such as Postgres, MySQL, or SQLite.

- **Client or engine.** Some tools connect to a database server. Others are the database itself, running on local files.
- **Migrations.** Check whether a migration tool uses plain SQL files or its own format, and whether it supports your database.
- **Language.** Python tools usually install with pip, while Go and Rust tools often ship as a single binary. The Language filter helps if you'd rather not install a runtime.
- **Platform.** Check the Platform filter for your system.

## What should you keep in mind?

Connection strings often include passwords. Keep them in a password file or an environment variable, not in your shell history. Run new migrations against a copy of the database before you run them on the real one.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Need to query a database or run a migration without leaving the terminal? This list has clients with autocomplete such as pgcli, mycli, and litecli, engines you can run from a prompt such as DuckDB and SQLite, and migration tools such as dbmate, Atlas, and Goose. Each row shows the type, language, license, and platforms.
Need to query a database or run a migration without leaving the terminal? This list has clients with autocomplete such as pgcli, mycli, and litecli, engines you can run from a prompt such as DuckDB and SQLite, and migration tools such as dbmate, Atlas, and Goose. Use the filters to narrow the list by app type, platform, language, or license.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## How do you choose a development tool?

This category is broad, so search for the job first, such as "formatter" or "version manager". Then narrow it down:

- **Install.** Check the Install filter for the package manager you already use, such as Homebrew, cargo, or npm.
- **Language.** Tools written in Go or Rust usually ship as one binary. Python and Node tools need their runtime installed.
- **Platform.** Check the Platform filter if you work on Windows, or if your team uses different systems.
- **License.** If you'll ship the tool inside your own product, check the License filter.
- **Health.** Build tools end up in every project, so prefer ones the Health filter marks Active.

## What should you keep in mind?

Pin tool versions in each project, with a version manager or a lock file, so everyone on the team gets the same results.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Building software and want better tools in your terminal? This is the largest category in the directory. It covers runtimes and toolchains such as Go, Deno, and Bun, editors such as Neovim and Emacs, package managers such as uv, and coding agents. Rows are sorted by GitHub stars, so the most starred tools come first.
Building software and want better tools in your terminal? This is the largest category in the directory. It covers runtimes and toolchains such as Go, Deno, and Bun, editors such as Neovim and Emacs, package managers such as uv, and coding agents.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a DevOps CLI?

Start with the platforms you run. Many tools here are the official CLI for one service, so that choice is already made for you.

- **Pricing.** Some tools are tied to a paid service. Check the Pricing filter and the service's own plans.
- **Source model.** A few tools here are source available or closed source. Check the Source model filter if that matters to you.
- **State and credentials.** Infrastructure tools keep state files and keys. Check where each tool stores them, and keep both out of Git.
- **Platform.** Check the Platform filter for your CI runners as well as your own computer.

## What should you keep in mind?

These tools can change production with one command. Use a read-only or plan mode first where the tool has one, and give CI tokens only the permissions they need.
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Deploying an app or looking after a server from the terminal? This list covers infrastructure tools such as Terraform and Ansible, container and Kubernetes tools such as lazydocker, dive, and K9s, and the official CLIs for GitHub, GitLab, Fly.io, Railway, Supabase, and Stripe. Each row shows the type, language, license, and platforms.
Deploying an app or looking after a server from the terminal? This list covers infrastructure tools such as Terraform and Ansible, container and Kubernetes tools such as lazydocker, dive, and K9s, and the official CLIs for GitHub, GitLab, Fly.io, Railway, Supabase, and Stripe. Use the filters to narrow the list by app type, platform, language, or license.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a file tool?

Name the job first: search, move, sync, back up, or browse.

- **Search defaults.** Some newer search tools skip hidden files and anything in `.gitignore` by default. Check that this matches what you want to find.
- **Sync and backup.** Check which remotes it supports, such as S3 or SFTP, and whether backups are encrypted and keep older versions.
- **App type.** File managers are full-screen apps you move around in, while finders are commands you can pipe into others. The App type filter separates them.
- **Platform.** Check the Platform filter, especially on Windows.

## What should you keep in mind?

Commands that delete, move, or remove duplicate files can't be undone. Run a dry run first when the tool has one, and keep a backup before a big cleanup.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you pick a terminal game or toy?

These are small and quick to try, so the checks are simple.

- **Platform.** Most are built for Linux and macOS. Check the Platform filter if you're on Windows, or run them in WSL.
- **Install.** Check the Install filter for a package manager you have.
- **Your terminal.** Some games need color, Unicode, or a minimum window size. If one looks wrong, try a bigger window, another font, or another terminal.
- **Controls.** Check the docs for the keys. Many use the arrow keys or Vim-style keys.

## Why play in a terminal?

Terminal games start instantly, use almost no resources, and work over SSH on any server. Some are long-running classics with deep rules, so expect to spend time learning them.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,22 @@ import Intro10 from "./communication/intro.mdx";
import Intro11 from "./games-fun/intro.mdx";
import Intro12 from "./terminal-ui/intro.mdx";
import Intro13 from "./ai/intro.mdx";
import About0 from "./development/about.mdx";
import About1 from "./devops/about.mdx";
import About2 from "./files/about.mdx";
import About3 from "./text/about.mdx";
import About4 from "./networking/about.mdx";
import About5 from "./security/about.mdx";
import About6 from "./monitoring/about.mdx";
import About7 from "./databases/about.mdx";
import About8 from "./media-graphics/about.mdx";
import About9 from "./productivity/about.mdx";
import About10 from "./communication/about.mdx";
import About11 from "./games-fun/about.mdx";
import About12 from "./terminal-ui/about.mdx";
import About13 from "./ai/about.mdx";

// One intro (above the apps) and one about section (below the apps) per category.
export const categoryIntros: Record<string, ComponentType> = {
"development": Intro0,
"devops": Intro1,
Expand All @@ -30,3 +45,20 @@ export const categoryIntros: Record<string, ComponentType> = {
"terminal-ui": Intro12,
"ai": Intro13,
};

export const categoryAbouts: Record<string, ComponentType> = {
"development": About0,
"devops": About1,
"files": About2,
"text": About3,
"networking": About4,
"security": About5,
"monitoring": About6,
"databases": About7,
"media-graphics": About8,
"productivity": About9,
"communication": About10,
"games-fun": About11,
"terminal-ui": About12,
"ai": About13,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a media tool?

Name the job first: convert, download, play, or view.

- **Formats and codecs.** Check that it handles the formats you need. Some builds leave out codecs for license reasons, so the version from your package manager may differ from the official one.
- **Downloaders** break when websites change. Prefer ones the Health filter marks Active, and update them often.
- **Images in the terminal** look best in a terminal that supports an image protocol, such as Kitty's or Sixel. Otherwise they fall back to colored blocks of text.
- **Platform.** Check the Platform filter for your system.

## What should you keep in mind?

Media commands can overwrite files without asking. Write the output to a new file until you trust the command. Only download media you have the right to keep.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a monitoring CLI?

Decide what you're watching: processes, disk space, network traffic, or logs.

- **Live or one-off.** Process monitors refresh on screen as things change. Disk usage tools take one snapshot and exit. The App type filter separates them.
- **Permissions.** Tools that watch network traffic often need root or extra permissions to see it.
- **Platform.** Monitoring depends on the operating system, so check the Platform filter. Some features only work on Linux.
- **Remote servers.** Check that the tool runs over SSH with nothing extra to install on your side.

## What should you keep in mind?

These tools show what's happening right now. For history and alerts, you need a monitoring server. Search the [self-host apps directory](/self-host-apps) for one you can run yourself.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a networking tool?

Name the problem first: an API call, a DNS answer, a slow route, or a service you need to reach.

- **HTTP clients.** Some are for quick requests while you explore. Others run request files you can keep in Git as tests. Pick by which you do more.
- **DNS tools.** Check the output format and whether it supports DNS over HTTPS, if you need it.
- **Permissions.** Packet capture and some tracing tools need root.
- **Platform.** Check the Platform filter. Some network tools only run on Linux and macOS.

## What should you keep in mind?

Only scan or capture traffic on networks you own or have permission to test. A tunnel exposes a local port to the internet, so close it when you're done.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a terminal productivity tool?

Start with the thing you do most in the terminal, then pick a tool for that.

- **Shell support.** Jumpers and finders hook into your shell. Check that they support yours, such as Bash, Zsh, or fish.
- **Config.** Session and dotfile managers live on their config. Check that you can keep it in Git and share it between machines.
- **Platform.** Check the Platform filter if you move between macOS, Linux, and Windows.
- **Health.** You'll use these every day for years, so prefer ones the Health filter marks Active.

## What should you keep in mind?

Add tools one at a time, and get used to each before the next. Dotfile managers can end up holding secrets, so check how they handle encryption before you push your dotfiles to a public repository.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a security CLI?

Name the job first: scan code, scan systems, encrypt files, or manage certificates.

- **Scanners.** Check what they detect and how noisy the results are. Running them in CI catches problems before code is merged.
- **Encryption.** Check the key formats and how you share keys with others. A tool with fewer options is easier to use safely.
- **Source model.** For encryption, open source lets others check the code. The Source model filter shows this.
- **Health.** Security tools need regular updates. Prefer ones the Health filter marks Active.

## What should you keep in mind?

Only scan systems you own or have permission to test. Keep private keys off shared machines, and back them up somewhere safe and offline.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## How do you choose a terminal, shell, or prompt?

These pieces stack. A terminal emulator runs a shell, the shell shows a prompt, and TUI apps run inside it all. Pick each layer on its own.

- **Terminal emulators.** Check for splits, tabs, and image support. Some include cloud or AI features, so read their privacy notes.
- **Shells.** Bash and Zsh run most scripts you'll find online. Other shells trade that compatibility for nicer defaults.
- **Prompts and themes.** Many need a Nerd Font, a font with extra icons, to look right.
- **Platform.** Check the Platform filter. Some emulators only run on macOS or Linux.

The App type filter separates terminal emulators, shells, prompts, multiplexers, and TUI apps.

## What should you keep in mind?

Keep your shell and terminal config in a dotfiles repository, so a new machine feels like home in minutes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
## How do you choose a text tool?

Name the job first: edit, search, transform, compare, or convert.

- **Editors.** Modal editors like Vim take time to learn, but vi or Vim is on almost every server. Others work like a desktop editor from the start.
- **Structured data.** For JSON, YAML, or CSV, use a tool built for that format instead of search and replace.
- **Pipes.** Check that the tool reads from standard input and writes plain output, so it fits into scripts.
- **Platform and install.** Check the Platform and Install filters for your system.

## What should you keep in mind?

Commands that edit files in place can't be undone. Keep files in Git, or try the command on a copy first.
Loading
Loading