Skip to content

06 · Dev Infra

S2 · Pattern 🔬 Research 2026-04-17

Beyond the AI CLI and terminal mux, there’s a handful of infrastructure tools that make daily development work without friction. They’re not the primary tools; they’re the connective tissue. Pick once, configure once, mostly forget they exist until they matter.

  • What for: running services locally without polluting the host (databases for dev, test services, sometimes build environments)
  • Pick: Docker Desktop on Windows/Mac; Docker Engine on Linux servers; Podman if you specifically want rootless / daemonless
  • WSL note: Docker Desktop’s WSL2 integration works well; running the daemon natively in WSL is also fine
  • Install: Platform-specific from docker.com
  • Global config I set:
    • user.name and user.email per GitHub
    • init.defaultBranch = main
    • pull.rebase = false (I prefer merge commits to see context)
    • core.autocrlf = input on Windows (avoid CRLF drift)
  • Aliases I keep: git st, git lg (pretty log), git wt (worktree shortcut)
  • Git worktrees for parallel AI work — see ../patterns/parallel-agents-worktrees.md
  • What for: full-filesystem search on Windows — instant, by filename or regex. Dramatically faster than find on /mnt/c/ from WSL.
  • How I use from WSL: call es.exe (the CLI) via the Windows path:
    Terminal window
    "/mnt/c/Users/<name>/AppData/Local/Everything/es.exe" "pattern"
  • Why: find on /mnt/c/ is 10–100× slower than Everything. For PC-wide filename search, Everything is unbeatable.
  • Install: voidtools.com
ToolPurposeNotes
ripgrep (rg)Full-text searchDefault for code search; much faster than grep -r
fdFile findingfind replacement with sane defaults
jqJSON processingParsing API responses, config manipulation
batcat with syntax highlightingPleasant reading
fzfFuzzy finderPipe-compatible; composes with other tools
deltaBetter git diffSide-by-side, syntax-highlighted diffs

Install via whatever your platform uses (cargo, apt, brew, winget). These are stratum 4 (deterministic, drop-in) — install scripts can include them unconditionally.

  • Starship prompt (optional) — fast, Git-aware prompt
  • direnv — per-project env vars automatically loaded when entering directory
  • dotenv-safe patterns — for local development only; production uses real secret stores
ToolWhy not
NerdFonts as requiredI use them when they’re already there but don’t make my tools depend on them — portability across machines where I can’t install fonts
Oh-my-zsh / Oh-my-bashHeavy framework layers. I’d rather hand-pick bashrc snippets.
fish shellGreat shell, but my scripts assume bash-compatible syntax across all my devices. Switching would mean rewriting all helper scripts.
ZshFine; I’ve just settled on bash for consistency across WSL + Termux + servers.
ServesWith
01 · AI Coding CLIsGit for version control, Docker for local services
04 · Knowledge MgmtEverything for fast file search beyond Obsidian
Image-paste pipelineZipline as the upload target