Editor: Neovim
After years of VS Code, I switched to Neovim and haven't looked back. Modal editing rewires how you think about text manipulation — motions, operators, and text objects make editing feel like a language rather than a sequence of mouse clicks. Combined with LSP for language intelligence, Treesitter for syntax-aware operations, and a tight plugin set, it's fast in a way that accumulates over a session.
The Karabiner-Elements layer maps physical N to Escape, which means Neovim's normal mode is one home-row key away at all times. The X-Type layout and Neovim are designed around each other. On macOS that layer is 6 active rules spread across three config files — 17 manipulators for the left symbol layer, 19 for the right, and 43 for the window-manager layer, 79 manipulators in total. It is not a hand-tuned afterthought; it is a small compiler target that the same layout emits to Karabiner, AutoHotkey, XKB, and an Android IME.
For day-to-day GUI work I run Neovide (nv alias) so I get smooth rendering and ligatures without forking the config — same Neovim, nicer pixels.
Runtime: Bun
Bun replaced Node.js for me across most projects. The install time difference is real — package installs that took 45 seconds in npm take under 10 in Bun. Dev server startup and test runs are both noticeably faster. The DX improvement compounds across a long session: fewer seconds waiting for the toolchain means more seconds in the actual problem.
See My Development Philosophy on shipping fast. Bun is a tool that supports that philosophy at the infrastructure level.
Database: PostgreSQL + Drizzle
PostgreSQL for anything that needs ACID guarantees, real relational queries, or pgvector for embedding search. Drizzle as the ORM — typed schema as source of truth, migrations as plain SQL files you can read and edit. The combination means the database schema is version-controlled, the types are always in sync with the schema, and migrations are auditable.
The facts here compound: when a schema change breaks something, the Drizzle migration file tells you exactly what changed and when. No magic, no ORM abstraction that hides the SQL.
Infrastructure: OrbStack + Tailscale + Caddy
OrbStack for reproducible environments — Docker-compatible but dramatically lighter than Docker Desktop on Apple silicon, which matters when the personal mesh is 116 containers across 19 Compose profiles. The docker-compose.yml file is still the single source of truth for what a service stack looks like; OrbStack just stops the runtime itself from being the bottleneck. Tailscale for mesh networking that takes minutes to set up and never requires firewall configuration. Caddy for HTTPS termination with automatic certificate provisioning via DNS-01 challenge.
Together these three tools produce the Prachyam Infrastructure Deep Dive stack: development environments that behave like production, services reachable at stable HTTPS domains, machines networked without public IP exposure.
AI: Claude Code + 10 MCP Servers
Claude Code as the primary development agent — codebase-aware, tool-using, capable of multi-file reasoning. The 10 custom MCP servers I built at Prachyam give it direct access to Docker container state, database contents, infrastructure health, semantic code search, and deployment triggers. The combination means context that would take 15 minutes to reconstruct manually is available in the first turn of a session.
This is where the industry is headed. The bottleneck isn't model capability — it's the interface between the model and the actual systems it needs to reason about. MCP servers are that interface. See Lessons from Infrastructure for the deployment story.
Terminal: Ghostty + tmux + Neovim
Ghostty as the terminal emulator — GPU-accelerated, minimal, fast (catppuccin-mocha, CaskaydiaCove Nerd Font Mono, 90% opacity). tmux for session management and window multiplexing: one session per project, named windows per context (editor, build, server, git). The tmux side is not vanilla — it runs 11 plugins: tpm, tmux-sensible, tmux-yank, tmux-resurrect, tmux-continuum, tmux-thumbs, tmux-fzf, tmux-fzf-url, catppuccin-tmux, sessionx, and floax. resurrect + continuum mean a machine reboot doesn't cost me a working layout; sessionx and floax mean session-switching and a scratch float are one keybind away. The combination means switching between a Neovim editing session and a running dev server is a keybind, not an alt-tab.
I type at 213 WPM on X-Type. The terminal is the surface where that speed actually matters — commands, shell scripts, log tailing, git operations. A slow terminal is friction on every one of those.
History: Atuin
The single highest-leverage shell change I've made in years. Atuin replaces Ctrl-R with a SQLite-backed, fuzzy, context-aware history that syncs across machines. The reason it matters: most of what I do at a terminal I have already done — the question is never "how do I do this" but "what was the exact invocation last time." Atuin turns that from a guess into a search. History stops being a per-machine, per-session scratchpad and becomes a durable, queryable record of how I actually work. Paired with Starship's minimal dir » prompt (Gruvbox/Saffron palette) and zoxide for directory jumps, the shell stops asking me to remember things a computer should remember.
Window Management: AeroSpace + SketchyBar
AeroSpace is a tiling window manager for macOS — accordion layout, 48px outer padding, 10px gaps — and it starts SketchyBar on login. The decision here was deliberate: macOS's native window model fights you the moment you have more than three windows, and most tiling add-ons feel bolted on. AeroSpace treats workspaces as first-class and is driven entirely from the X-Type WM key layer (the 43-manipulator Karabiner file), so window control shares the same muscle memory as everything else. SketchyBar is the readout — a floating, notch-aware status bar that surfaces only the state I actually act on. A custom OmniWM layer fills the few gaps AeroSpace leaves. The throughline with the rest of this list: the machine should bend to a layout I designed, not the other way around.