Skip to content

Tool selection rationale

This document explains why Botstrap includes each core tool (always installed in Phase 1) and how optional groups are scoped. The goal is a baseline that works well for humans and for AI agents driving a terminal. For how optional items are installed after the TUI, see Introduction and Registry specification.

Core tools (Phase 1)

Shell and navigation

ToolRationale
zsh (Linux; default shell on macOS)Modern defaults, strong completion ecosystem; aligns with common developer setups.
StarshipFast, cross-shell prompt with consistent info (git, lang versions); easy to theme.
zoxideSmarter cd with frecency; reduces friction in long sessions and agent scripts.
fzfFuzzy finder for files, history, and pipes; ubiquitous in CLI workflows.
batSyntax-highlighted cat; improves log and config inspection.
ezaModern ls with git awareness and trees.
ripgrepFast recursive search; default for code search in editors and agents.
fdUser-friendly find for scripts and quick discovery.

Version management

ToolRationale
miseSingle tool for Node, Python, Ruby, Go, and more; replaces nvm/pyenv/rbenv fragmentation and keeps PATH deterministic for agents.

Containers

ToolRationale
Docker + Docker ComposeStandard way to run databases and services locally without polluting the host; agents often expect Docker for reproducible environments.

Git

ToolRationale
gitBaseline VCS.
GitHub CLI (gh)Non-interactive-friendly PR/issue flows from the terminal.
lazygitTUI for complex git operations when desired.
git-deltaReadable diffs in the terminal and in git pagers.

Structured data and HTTP

ToolRationale
jqJSON is the lingua franca of APIs and agent outputs.
yqSame for YAML (including Botstrap’s own registry).
curlie / httpieHuman-friendly HTTP CLI: curlie where upstream ships it (macOS/Windows); httpie on common Linux distros via registry/core.yaml mapping.

Terminal multiplexing and monitoring

ToolRationale
zellij (or tmux where preferred)Persistent sessions, layouts, and remote-friendly workflows.
btopInteractive resource monitor.
fastfetchFast system info for screenshots and support requests.

Security

ToolRationale
ageSimple file encryption.
sopsEncrypted secrets in YAML/JSON; common in GitOps and agent-assisted infra work.

Typography

ToolRationale
Nerd Font (e.g. Fira Code)Icons and glyphs for Starship, editors, and terminals without broken fallback boxes.

TUI prerequisite

ToolRationale
gumCross-platform TUI for Phase 2; minimal dependency, consistent UX.

Optional tools (Phase 2)

Optional items are grouped so users can tailor the machine without breaking the baseline.

GroupRationale
EditorCursor, VS Code, Neovim, and Zed serve different workflows; one primary editor avoids bloat.
Programming languagesRuntimes are installed via mise when selected, keeping versions explicit and agent-repeatable.
DatabasesPostgreSQL, MySQL, Redis, SQLite via Docker keeps the host clean and matches production-like setups.
AI agent toolsClaude Code, OpenClaw, Codex CLI, Gemini CLI, Ollama — users pick what they use; many require Node or native installers per upstream docs.
ThemeCatppuccin, Tokyo Night, Gruvbox, Nord, Rose Pine — visual consistency across terminal, prompt, and editor where configs exist.
Optional apps1Password CLI, Tailscale, ngrok, Postman — common but not universal.

What we intentionally avoid in core

  • Heavy IDEs in core — choice belongs in Phase 2.
  • Native database daemons — Docker-first for optional data stores.
  • Language-specific version managers beyond mise — mise is the single source of truth for versions.

Changing the set

  • Add or adjust core tools in registry/core.yaml and update Phase 1 ordering if dependencies change.
  • Add optional entries in registry/optional.yaml and wire new TUI group logic if you add a new group id.

See docs/CONTRIBUTING.md for the contribution workflow.

Botstrap — cross-platform bootstrap for developers and AI coding agents.