My Development Environment and Tools
The terminal-centric development workflow and tools I use, organized by category.
Over the years I’ve built a terminal-centric development workflow, and in this post I want to share the tools I use, organized by category. The goal is speed, minimalism, and getting things done without leaving the keyboard. Below is my setup covering terminal, shell, editors, containers/k8s, git, network testing, and general CLI productivity tools.
Terminal and Shell
- Ghostty Terminal - A GPU-accelerated, fast-starting, clean terminal emulator. Simple to configure, great performance.
- Herdr - A tmux alternative for terminal multiplexing, handling window/pane management with a more modern approach.
- Zsh (Oh My Zsh) - Zsh as my shell, extended with Oh My Zsh’s plugin and theme ecosystem.
- Starship - My shell prompt. Fast, minimal, shows git status and language/version info automatically; written in Rust so there’s virtually no lag.
AI-Assisted Workflow
- Pi Agent (oh-my-pi) - An AI agent setup that runs inside the terminal. I use it for daily command suggestions and automation.
- Ollama - For running large language models locally. Lets me run and test models offline or when privacy matters, without depending on a cloud API.
Containers and Kubernetes
- Colima - A lightweight container runtime on macOS, bundled with Docker, Kubernetes, kind, kustomize, and FluxCD.
- k9s - A terminal UI for managing Kubernetes clusters visually.
- stern - Essential for tailing logs from multiple pods at once.
- dive - For inspecting Docker image layers and finding unnecessary bloat.
- helm - The Kubernetes package manager, complementing kustomize.
Editors
- Neovim - My primary code editor, with a Lua-based config and plugin ecosystem.
- Zed - A fast, collaboration-friendly modern editor; I use it as an alternative to Neovim on some projects.
Development Environment Management
- Mise - Manages language and tool versions on a per-project basis. The core languages/runtimes I manage through it:
- Homebrew - The standard package manager on macOS.
- direnv - Automatically loads environment variables when entering a project directory.
- Nix - For building deterministic, reproducible development environments; especially useful on projects where I want to eliminate the “works on my machine” problem across a team.
Package and Runtime Management
- Bun - A JavaScript/TypeScript runtime, package manager, and bundler all in one; noticeably faster installs and script execution compared to Node.
- npx - The classic tool bundled with npm for running CLI tools directly without installing them.
- pnpx - pnpm’s counterpart to npx; brings disk space and speed advantages on pnpm-based projects.
- uv - A modern Python package/project manager that combines what pip, venv, and poetry do into a single, very fast Rust binary.
Git and Version Control
- Git - The core version control system.
- GH (GitHub CLI) - Managing PRs, issues, and repos straight from the terminal.
- Tig - Browsing a git repository visually in the terminal.
Security and Encryption
- SOPS - Managing encrypted Kubernetes secrets and config files.
- age - A modern, simple, and secure encryption tool, used alongside sops.
- PGP (GnuPG) - The classic but still trusted standard for signing and encryption.
- mkcert - Generating trusted SSL certificates for local development.
Network and API Testing
- Httpie - Testing HTTP requests in a readable, easy way.
- grpcurl - The gRPC counterpart to Httpie, for testing gRPC services from the terminal.
- Caddyfile (Caddy) - Caddy web server configuration; simple config with automatic HTTPS, great for local and production reverse proxy needs.
Search and File Navigation
- ripgrep (rg) - A much faster alternative to classic grep, perfect for searching large codebases.
- fd - A modern, fast alternative to find.
- zoxide - A smarter
cdthat lets you jump to frequently used directories with just a few keystrokes.
System Monitoring and Productivity
- htop - The classic tool for monitoring system resources.
- dust - A visual, fast alternative to
dufor understanding disk usage. - bat - A
catreplacement with syntax highlighting and git integration. - exa - A modern, colorful, and information-rich alternative to
ls.
JSON/YAML and General Utilities
- jq - The standard tool for processing, filtering, and transforming JSON in the terminal.
- yq - The YAML counterpart to jq; very handy when working with Kubernetes manifests.
- just - A modern alternative to Makefile, used as a task runner to organize project commands.
- tldr - Short, practical summaries of man pages, ideal for quick reference.
- glow - Renders markdown files beautifully right in the terminal.
Conclusion
This toolset lets me write code without leaving the keyboard, manage container/k8s environments, keep secrets secure, and tie it all together into a fast, minimal terminal experience. Each tool solves a specific problem, and together they form a powerful, consistent workflow.