My Development Environment and Tools

The terminal-centric development workflow and tools I use, organized by category.

🌱 Seedling·created: ·category:Developer Environment

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 cd that 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 du for understanding disk usage.
  • bat - A cat replacement 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.

This note is part of the Digital Garden — a collection of connected, evolving thoughts.