Public snapshot @ 93100ccd2828
fc03b8eeb447 wikihub 2026-04-12 43 files
fc03b8eeb4470a13440668e13949b7e2cb176582
new file mode 100644
index 0000000..5212ac1
@@ -0,0 +1,129 @@
+---
+visibility: public-edit
+---
+
+# Tools Stack
+
+Very intent on customization and smooth workflows. Will spend unreasonable amounts of time grudging over the littlest details until everything feels *right*.
+
+## Menu Bar
+
+The menu bar is curated, not default. Every icon earns its spot.
+
+- **[[Ice]]** — menu bar manager, hides the clutter
+- **[[Backtrack]]** — ambient audio recorder, rewind what you just heard
+- **[[Stats]]** — RAM and network monitoring at a glance
+- **[[Bleed]]** — menu bar audio visualizer
+- **[[f.lux]]** — night shift done right, warm screen at night
+- **[[Amphetamine]]** — keep-awake toggle (renamed from Caffeine)
+- **[[Time Machine]]** — backup status indicator
+- **[[CleanShot X]]** — screenshot and screen recording, replaces native screenshot entirely
+
+## Terminal
+
+iTerm2 + tmux. The terminal is the primary workspace, not the editor.
+
+### tmux
+
+Prefix rebound to `C-q`. Mouse on. Pane splits on `v`/`h`. Vim-style navigation with `C-hjkl`.
+
+**Plugins:**
+- **[[tmux-resurrect]]** — save and restore sessions across reboots (`M-s`/`M-r`)
+- **[[tmux-continuum]]** — auto-save every 15 minutes, auto-restore on start
+- **[[tmux-assistant-resurrect]]** — custom resurrect for yazi process restoration
+- **[[tmuxinator]]** — declarative session layouts (`mux dev2` spins up the whole dev environment)
+
+### Shell (zsh)
+
+Alias and function city. `.zshrc` and `.zshenv` are heavily customized.
+
+**Navigation:**
+- **[[yazi]]** — terminal file manager, aliased as `y`, with cd-on-exit and iTerm drop proxy
+- **[[fzf]]** — fuzzy finder for everything (history, files, directories)
+- **[[zoxide]]** — smart cd replacement, `cd` is aliased to `z`
+- **[[eza]]** — modern ls with git integration, tree view, relative timestamps
+
+**Shortcuts:**
+- `cl` → clear, `mk` → touch, `mkd` → mkdir, `rmd` → rm -rf
+- `ga`/`gc`/`gp` → git add/commit/push
+- `gg` → `git_go`: add all, commit, push in one shot
+- `tq` → quick-add a task, `pj` → scaffold a new project in `~/code/`
+- `p` → python3, `act` → activate venv
+- `claude` / `codex` / `gemini` — all aliased to skip permissions/approvals
+
+**Editor:** `micro` (set as micro and micro)
+
+## Keyboard
+
+### Karabiner-Elements
+
+Three profiles: **Default**, **Colemak**, and **QWERTY** — switchable via hotkeys (`M-O Tab` / `M-C Tab`).
+
+Key remaps include:
+- `C-p`/`C-n` → up/down arrows everywhere
+- `C-O-p`/`C-O-n` → page up/page down
+- `C-O-b`/`C-O-f` → word-level movement
+- App-specific overrides (Firefox, Finder, Discord)
+- `M-O-C-S a` → toggle keyboard sounds
+- Custom movement variable toggle with `M+S+C+``
+
+### Homerow & Vimium
+
+Keyboard-driven navigation everywhere. Homerow for native macOS apps, Vimium for the browser. The goal: never touch the trackpad.
+
+**Physical setup:** external keyboard + laptop stand.
+
+## Editors
+
+Previously went through the full IDE war: [[VS Code]], Zed, Windsurf, [[Cursor]]. Currently settled on VS Code with the Claude Code extension — the AI integration won.
+
+## Browsers
+
+Pored over every option: [[Arc]], Firefox, Safari, [[Chrome]], Dia. Currently on Chrome.
+
+Browser extensions are a whole thing. **Cursorful** gets a special mention (for frustration, not praise).
+
+## Voice
+
+Voice modes — using speech input workflows for dictation and control.
+
+- **[[Whispering]]** — local speech-to-text
+- Voice Memos for capture
+
+## Notes & Knowledge
+
+- **[[Obsidian]]** — local-first markdown knowledge base, primary thinking tool
+- **[[Ideaflow]]** — idea capture and connection
+- **Apple Notes** — quick capture
+- **Google Docs** — collaboration
+
+## Infrastructure
+
+- **[[AWS Lightsail]]** — VPS hosting
+- **[[PostgreSQL]]** — primary database
+- **[[Cloudflare]]** — DNS, SSL, CDN
+- **[[nginx]]** — reverse proxy
+- **[[gunicorn]]** — WSGI server
+- **[[systemd]]** — process management
+
+## AI
+
+- **[[Claude Code]]** — primary coding agent
+- **[[WikiHub]]** — LLM-native wiki platform (this project)
+- **[[MCP]]** — Model Context Protocol integrations
+
+## Other Apps
+
+Currently running: Spotify, Zoom, Messages, Granola, TextEdit, Google Chrome, Obsidian, iTerm2, 1Password, Karabiner, Tailscale.
+
+Also installed: [[Raycast]], [[Alfred]], [[OrbStack]], [[Notion]], [[Maccy]] (clipboard manager), [[DaisyDisk]], [[Numi]] (calculator), [[OBS]], [[IINA]] (video player), [[Rectangle]] (window management).
+
+**Package management:** Homebrew for everything — both cask and formula.
+
+## Recommendations from friends
+
+*Tools suggested by people in the network. Organized by category so they land in context.*
+
+### Terminal — from [Jacob](/@jacobcole)
+
+- **[Cmux](https://cmux.com)** ([GitHub](https://github.com/manaflow-ai/cmux)) — Native macOS terminal built on Ghostty's GPU-accelerated renderer, designed for running multiple AI coding agents in parallel. Where iTerm2 + tmux is a general-purpose terminal setup, Cmux is purpose-built for the agent workflow: notification rings when an agent needs attention, vertical tabs showing git branch + PR status + listening ports, an embedded scriptable browser (ported from Vercel's agent-browser), and SSH workspaces where localhost URLs just work. 13.5k stars. By Manaflow AI (YC S24).
\ No newline at end of file
new file mode 100644
index 0000000..3ebe8b7
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# AWS Lightsail
+
+Amazon's simplified VPS hosting. fixed monthly pricing, predictable costs, good enough for most single-server deployments.
+
+**role in the deploy chain:** [[Cloudflare]] → Lightsail → [[nginx]] → [[gunicorn]] → app, with [[PostgreSQL]] for data and [[systemd]] keeping everything running.
+
+**why Lightsail over EC2:** predictable pricing, simpler UI, includes everything you need for a basic deploy. when you don't need auto-scaling or complex networking, Lightsail is less overhead.
\ No newline at end of file
new file mode 100644
index 0000000..c8dd1fe
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# Alfred
+
+macOS launcher and automation tool. installed alongside [[Raycast]].
\ No newline at end of file
new file mode 100644
index 0000000..2772b42
@@ -0,0 +1,13 @@
+---
+visibility: public
+---
+
+# Amphetamine
+
+keep-awake utility for macOS. prevents sleep, screen dimming, and screensaver activation on demand.
+
+lives in the menu bar. click to toggle, or set triggers (while app X is running, while on Wi-Fi Y, etc.).
+
+**why not Caffeine:** Amphetamine is the spiritual successor — more features, still free, App Store distributed. Caffeine is abandoned.
+
+**install:** Mac App Store (free)
\ No newline at end of file
new file mode 100644
index 0000000..4822b23
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# Arc
+
+browser by The Browser Company.
+
+**status:** installed but not primary. currently on [[Chrome]].
\ No newline at end of file
new file mode 100644
index 0000000..6594063
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# Backtrack
+
+ambient audio recorder that runs in the menu bar. rewinds what you just heard.
+
+**use case:** someone says something important in a meeting or conversation, you missed it, hit the hotkey and Backtrack replays the last N minutes of audio from your mic/system audio.
\ No newline at end of file
new file mode 100644
index 0000000..b3df9b9
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# Bleed
+
+menu bar audio visualizer. shows a small waveform/spectrum in the menu bar reacting to whatever audio is playing.
+
+purely aesthetic — but it's satisfying to see the music move while you work.
\ No newline at end of file
new file mode 100644
index 0000000..3040ef3
@@ -0,0 +1,15 @@
+---
+visibility: public
+---
+
+# Chrome
+
+current primary browser. Google Chrome with extensions.
+
+**installed via:** `brew install --cask google-chrome`
+
+**why Chrome won:** extension ecosystem, dev tools, and compatibility. the battery cost is real but acceptable.
+
+**keyboard-driven browsing:** [[Vimium]] turns Chrome into a keyboard-first browser — press `f` and every link gets a letter overlay. paired with [[Homerow & Vimium|Homerow]] for native macOS apps, the trackpad becomes optional. Karabiner has Chrome-specific overrides too via [[Karabiner-Elements]].
+
+**also tried:** [[Arc]], [[Firefox]], [[Safari]], [[Dia]].
\ No newline at end of file
new file mode 100644
index 0000000..92f7c12
@@ -0,0 +1,23 @@
+---
+visibility: public
+---
+
+# Claude Code
+
+Anthropic's CLI coding agent. the primary development tool — more time is spent here than in any editor.
+
+**alias:** `claude` → `claude --dangerously-skip-permissions` (auto-approve all tool calls for maximum speed)
+
+**MCP servers configured:** see [[MCP]] for the full list — includes Cloudflare, Vercel, Railway, Supabase, Google Drive, and more.
+
+**editor integration:** [[VS Code]] extension, but primarily used as a CLI in tmux sessions. [[tmuxinator]] spins up the dev layout with `mux dev2`.
+
+**memory system:** persistent file-based memory at `~/.claude/projects/`, plus AGENTS.md files for project instructions.
+
+**the workflow:** Claude Code is the center of the development loop. it reads code, writes code, runs tests, deploys, and manages infrastructure — all from the terminal. it can reach into [[Obsidian]] vaults directly because they're just markdown on disk. it manages DNS via the [[Cloudflare]] MCP server and deploys to [[AWS Lightsail]].
+
+**also installed:** [[Codex]] and [[Gemini]] as secondary agents, each with their own skip-approvals alias.
+
+**skills:** see the [awesome claude skills wiki](/@harrisonqian/awesome-claude-skills) for the comprehensive directory of skills, frameworks, and extensions.
+
+**community:** [awesome-claude-code](/@harrisonqian/awesome/wiki/miscellaneous/claude-code) — community-curated list of tools, tips, and resources.
\ No newline at end of file
new file mode 100644
index 0000000..9b506eb
@@ -0,0 +1,19 @@
+---
+visibility: public
+---
+
+# CleanShot X
+
+screenshot and screen recording tool that completely replaces macOS's native screenshot functionality.
+
+**features used:**
+- scrolling capture (full webpage screenshots)
+- annotate and blur before sharing
+- screen recording with system audio
+- quick access overlay (recent captures pinned to screen)
+- OCR on screenshots
+- cloud upload for quick sharing
+
+**installed via:** `brew install --cask cleanshot`
+
+**why over native:** the annotation tools, scrolling capture, and recording with system audio are things macOS just doesn't do natively.
\ No newline at end of file
new file mode 100644
index 0000000..f58f0bc
@@ -0,0 +1,15 @@
+---
+visibility: public
+---
+
+# Cloudflare
+
+DNS, SSL, and CDN. the layer between the domain and the server.
+
+**role in the deploy chain:** domain → Cloudflare (DNS + SSL + CDN) → [[AWS Lightsail]] → [[nginx]] → [[gunicorn]] → app. Cloudflare is the outermost layer.
+
+**MCP integration:** Cloudflare MCP server configured in [[Claude Code]] (via [[MCP]]) for managing DNS records and other Cloudflare resources directly from the AI agent.
+
+**use case:** DNS management, free SSL certs, CDN caching, DDoS protection. the free tier covers most personal project needs.
+
+**deep dive:** [awesome-cloudflare](/@harrisonqian/awesome/wiki/platforms/cloudflare) — workers, pages, KV, R2, and the full Cloudflare ecosystem.
\ No newline at end of file
new file mode 100644
index 0000000..8903c35
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# Cursor
+
+AI-powered fork of VS Code. adds AI chat, inline edits, and codebase-aware completions natively.
+
+**tried it because:** best-in-class AI editing experience at the time, especially for inline edits and tab completions.
+
+**moved away because:** Claude Code as a CLI/extension gave more flexibility and wasn't locked to one editor's UI. the agent workflow won over the copilot workflow.
\ No newline at end of file
new file mode 100644
index 0000000..d83b4d5
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# DaisyDisk
+
+disk space visualizer. interactive sunburst diagram shows what's eating your storage.
\ No newline at end of file
new file mode 100644
index 0000000..a4d074d
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# IINA
+
+modern media player for macOS. native, clean, and supports basically every format.
+
+**installed via:** `brew install --cask iina`
+
+**why over VLC:** native macOS UI, better trackpad/gesture support, and it just looks and feels like a proper Mac app. VLC works everywhere but looks like it belongs nowhere.
\ No newline at end of file
new file mode 100644
index 0000000..bc500db
@@ -0,0 +1,13 @@
+---
+visibility: public
+---
+
+# Ice
+
+menu bar manager for macOS. hides icons you don't need to see constantly, shows them on hover or click.
+
+replaces Bartender (which got acquired and sketchy). free and open source.
+
+**why it matters:** without Ice, the menu bar becomes a junkyard of icons fighting for space. Ice keeps it clean — only the essentials visible, everything else tucked away. it's what makes [[Stats]], [[Bleed]], [[f.lux]], [[Amphetamine]], [[Time Machine]], [[Backtrack]], and [[CleanShot X]] viable as a set — without a manager, that many icons is chaos.
+
+**install:** `brew install --cask jordanbaird-ice` (may also appear as just `ice`)
\ No newline at end of file
new file mode 100644
index 0000000..cd334b5
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# Ideaflow
+
+idea capture and connection tool. more freeform than [[Obsidian]] — complementary rather than competing.
\ No newline at end of file
new file mode 100644
index 0000000..3e9254b
@@ -0,0 +1,18 @@
+---
+visibility: public
+---
+
+# MCP
+
+Model Context Protocol — the standard for connecting AI models to external tools and data sources.
+
+**configured MCP servers (in `~/.claude.json`):**
+- **hostinger-api** — web hosting management
+- **vercel** — frontend deployment
+- **railway** — backend deployment
+- **supabase** — database and auth (complements local [[PostgreSQL]])
+- **claude-flow** — multi-agent orchestration
+- **gdrive** — Google Drive access
+- **cloudflare** — DNS and CDN management (see [[Cloudflare]])
+
+**how it's used:** MCP servers give [[Claude Code]] the ability to interact with external services directly — deploying code, managing DNS, querying databases — all from the terminal without switching contexts. this is what makes Claude Code more than a code generator: it can take real actions in the infrastructure stack.
\ No newline at end of file
new file mode 100644
index 0000000..b330053
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# Maccy
+
+lightweight clipboard manager for macOS. keeps a history of everything you copy. free, open source.
\ No newline at end of file
new file mode 100644
index 0000000..8b1d025
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# Notion
+
+collaborative workspace. used for shared work — personal knowledge management lives in [[Obsidian]].
\ No newline at end of file
new file mode 100644
index 0000000..986e555
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# Numi
+
+natural-language calculator for macOS. type math in plain English and it computes.
+
+**installed via:** `brew install --cask numi`
+
+**examples:** "20% of $150", "3 hours + 45 minutes", "USD to EUR". more intuitive than a traditional calculator for back-of-envelope math.
\ No newline at end of file
new file mode 100644
index 0000000..6d40906
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# OBS
+
+Open Broadcaster Software. screen recording and live streaming. for when [[CleanShot X]]'s built-in recording isn't enough.
\ No newline at end of file
new file mode 100644
index 0000000..f5cb372
@@ -0,0 +1,17 @@
+---
+visibility: public
+---
+
+# Obsidian
+
+local-first markdown knowledge base. primary thinking and note-taking tool.
+
+**installed via:** `brew install --cask obsidian`
+
+**role:** the main knowledge base. notes, ideas, project docs, daily logs — all stored as plain markdown files on disk. the local-first approach means everything is accessible to CLI tools, scripts, and AI agents that can read the filesystem.
+
+**why Obsidian over alternatives:** markdown files on disk. no vendor lock-in, no proprietary format. the vault is just a folder — [[Claude Code]], grep, and any editor can read it. this is a genuine advantage over [[Notion]] or cloud-based tools: your AI agent has direct filesystem access to your entire knowledge base.
+
+**complements:** [[Ideaflow]] for freeform idea capture, Apple Notes for quick capture, Google Docs for collaboration.
+
+**ecosystem:** the [awesome-obsidian](https://github.com/kmaasrud/awesome-obsidian) community maintains a massive list of plugins, themes, and workflows.
\ No newline at end of file
new file mode 100644
index 0000000..8fb2e84
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# OrbStack
+
+Docker and Linux VM manager for macOS. runs Docker containers and full Linux VMs.
\ No newline at end of file
new file mode 100644
index 0000000..a3c86c3
@@ -0,0 +1,17 @@
+---
+visibility: public
+---
+
+# PostgreSQL
+
+primary database. the one database you need for almost everything.
+
+**installed via:** `brew install postgresql@16`
+
+**extensions:** pgvector installed (`brew install pgvector`) for vector similarity search — used with AI/embedding workflows.
+
+**in the stack:** locally for development, remotely on [[AWS Lightsail]] for production. also use Supabase (via [[MCP]]) as a managed Postgres option for some projects.
+
+**why Postgres:** rock-solid, SQL-native, extensible (pgvector, PostGIS, etc.), and the ecosystem tooling is unmatched.
+
+**deep dive:** [awesome-postgres](/@harrisonqian/awesome/wiki/databases/postgresql) — the full ecosystem of PostgreSQL tools, extensions, and resources.
\ No newline at end of file
new file mode 100644
index 0000000..b483841
@@ -0,0 +1,7 @@
+---
+visibility: public
+---
+
+# Raycast
+
+launcher and productivity tool for macOS. replacement for Spotlight with extensions, snippets, clipboard history. installed alongside [[Alfred]].
\ No newline at end of file
new file mode 100644
index 0000000..0ea6168
@@ -0,0 +1,15 @@
+---
+visibility: public
+---
+
+# Rectangle
+
+window management for macOS. keyboard shortcuts to snap windows to halves, thirds, quarters, etc.
+
+**installed via:** `brew install --cask rectangle`
+
+**use case:** quick window tiling without a full tiling window manager. the keyboard shortcuts (ctrl+opt+arrow keys) become muscle memory fast.
+
+**also installed:** Amethyst (`brew install --cask amethyst`) — a full automatic tiling WM. Rectangle is lighter for basic snapping when you don't want everything auto-tiled. also tried AeroSpace (`brew install --cask aerospace`).
+
+**keyboard theme:** part of the broader keyboard-driven workflow alongside [[Karabiner-Elements]], [[Homerow & Vimium|Homerow]], and [[Vimium]].
\ No newline at end of file
new file mode 100644
index 0000000..159cbc1
@@ -0,0 +1,13 @@
+---
+visibility: public
+---
+
+# Stats
+
+free, open-source macOS system monitor that lives in the menu bar. shows CPU, RAM, disk, network, battery, and more at a glance.
+
+**installed via:** `brew install --cask stats`
+
+**why over iStat Menus:** free, actively maintained, and does what you need without the subscription.
+
+**menu bar neighbor:** sits alongside [[Bleed]], [[f.lux]], [[Amphetamine]], [[Backtrack]], and [[Time Machine]] — all managed by [[Ice]] so they don't clutter the bar.
\ No newline at end of file
new file mode 100644
index 0000000..fb83e22
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# Time Machine
+
+Apple's built-in backup system. runs automatically to an external drive or network volume.
+
+**companion utility:** `brew install --cask thetimemachinemechanic` for monitoring/fixing TM issues.
\ No newline at end of file
new file mode 100644
index 0000000..fe412dc
@@ -0,0 +1,13 @@
+---
+visibility: public
+---
+
+# VS Code
+
+current primary editor. won the IDE war not on editing merits but on AI integration — the [[Claude Code]] extension made it the best environment for agent-assisted development.
+
+**installed via:** `brew install --cask visual-studio-code`
+
+**previously used:** [[Zed]], [[Windsurf]], [[Cursor]] — each had strengths but Claude Code's VS Code extension tipped the balance.
+
+**terminal editor:** `micro` is the quick-edit default (set as `$EDITOR` and `$VISUAL`). VS Code is for when you need a full IDE alongside [[Claude Code]].
\ No newline at end of file
new file mode 100644
index 0000000..5241bec
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# Whispering
+
+local speech-to-text. runs Whisper models locally for dictation without sending audio to the cloud.
+
+**use case:** voice input for writing, notes, and sometimes code comments.
\ No newline at end of file
new file mode 100644
index 0000000..f022ee4
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# WikiHub
+
+LLM-native wiki platform. this is the platform hosting these very pages.
+
+**this wiki** (`tools-stack`) documents the full tool ecosystem.
\ No newline at end of file
new file mode 100644
index 0000000..d107a53
@@ -0,0 +1,23 @@
+---
+visibility: public
+---
+
+# eza
+
+modern replacement for `ls`. supports git integration, tree view, icons, and relative timestamps.
+
+**installed via:** `brew install eza`
+
+**aliases:**
+```zsh
+alias ls="eza --long --oneline --no-permissions --no-user --smart-group --git --git-repos --sort=modified --time=modified --time-style=relative"
+alias ll="eza --long --no-permissions --no-user --smart-group --git --git-repos --tree --level=2 -a --sort=modified --time=modified --time-style=relative"
+```
+
+**design choices:**
+- sorted by modification time (most recent first) — what you care about is what changed last
+- relative timestamps ("2 hours ago") instead of absolute dates
+- no permissions/user columns — on a personal machine, that's noise
+- `ll` adds tree view at 2 levels deep with hidden files
+
+**part of the shell navigation stack:** eza for listing, [[yazi]] for browsing, [[fzf]] for searching, [[zoxide]] for jumping. eza is the quickest glance — you see it every time you land in a directory.
\ No newline at end of file
new file mode 100644
index 0000000..9943ec5
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# f.lux
+
+shifts screen color temperature warmer at night to reduce eye strain and preserve circadian rhythm.
+
+**installed via:** `brew install --cask flux-app`
+
+**vs Night Shift:** f.lux gives finer control over color temperature, timing curves, and can go warmer than Apple's built-in. also supports movie mode and disable-per-app.
\ No newline at end of file
new file mode 100644
index 0000000..adf6030
@@ -0,0 +1,22 @@
+---
+visibility: public
+---
+
+# fzf
+
+command-line fuzzy finder. used for everything — history search, file finding, directory jumping.
+
+**installed via:** `brew install fzf`
+
+**config:**
+```
+export FZF_DEFAULT_OPTS="--walker-root=$HOME --walker-skip=.git,node_modules,.cache,build,Library,Google\ Drive,.vscode,.lmstudio,.local,.beads,.claude,.Trash,.bun,.cursor,.warp,.cargo,.gemini"
+```
+
+the walker-skip list is tuned to avoid indexing noise directories that slow down search and pollute results.
+
+**custom function `ffhist`:** fuzzy-searches shell history and runs the selected command immediately.
+
+**part of the shell navigation stack:** fzf for interactive search, [[yazi]] for file browsing, [[zoxide]] for directory jumping, [[eza]] for listing. fzf is the glue — it can be piped into anything.
+
+**related:** [awesome-zsh-plugins](/@harrisonqian/awesome/wiki/development-environment/zsh-plugins) — the full zsh ecosystem (plugins, themes, frameworks).
\ No newline at end of file
new file mode 100644
index 0000000..a527ae4
@@ -0,0 +1,9 @@
+---
+visibility: public
+---
+
+# gunicorn
+
+Python WSGI HTTP server. runs Python web apps (Flask, Django) in production.
+
+**role in the deploy chain:** [[Cloudflare]] → [[AWS Lightsail]] → [[nginx]] → gunicorn → Python app. gunicorn manages worker processes and speaks WSGI. [[systemd]] keeps it alive.
\ No newline at end of file
new file mode 100644
index 0000000..27de278
@@ -0,0 +1,11 @@
+---
+visibility: public
+---
+
+# nginx
+
+reverse proxy and web server. handles SSL termination, routing, and static file serving.
+
+**role in the deploy chain:** [[Cloudflare]] → [[AWS Lightsail]] → nginx → [[gunicorn]] → app. nginx terminates SSL and proxies to the app server on localhost. [[systemd]] keeps it running.
+
+**deep dive:** [awesome-nginx](/@harrisonqian/awesome/wiki/back-end-development/nginx) — full list of nginx resources, modules, and guides.
\ No newline at end of file
new file mode 100644
index 0000000..9d19baa
@@ -0,0 +1,16 @@
+---
+visibility: public
+---
+
+# systemd
+
+Linux init system and service manager. manages long-running processes on the server.
+
+**role in the deploy chain:** the supervisor for everything on [[AWS Lightsail]] — ensures [[gunicorn]], [[nginx]], and other services start on boot and restart if they crash. each service gets a unit file defining how to run it.
+
+**key commands:**
+- `systemctl start/stop/restart service` — manage services
+- `systemctl enable service` — start on boot
+- `journalctl -u service` — view logs
+
+**local equivalent:** on the mac, tmux + [[tmux-continuum]] serves a similar role — keeping sessions alive across reboots. but systemd is the real deal for production.
\ No newline at end of file
new file mode 100644
index 0000000..d40cb3a
@@ -0,0 +1,14 @@
+---
+visibility: public
+---
+
+# tmux-assistant-resurrect
+
+custom tmux-resurrect extension by timvw. handles process restoration for programs that resurrect can't natively restore — specifically [[yazi]] sessions via the iterm drop proxy.
+
+**config:**
+```
+set -g @resurrect-processes '"~/Users/hq/tools/yazi-iterm-drop-proxy->/Users/hq/.tmux/scripts/restore-yazi-last-dir"'
+```
+
+this tells resurrect: when you see the yazi-iterm-drop-proxy process, restore it by running the `restore-yazi-last-dir` script instead.
\ No newline at end of file
new file mode 100644
index 0000000..7260dde
@@ -0,0 +1,15 @@
+---
+visibility: public
+---
+
+# tmux-continuum
+
+companion to [[tmux-resurrect]]. auto-saves the tmux environment every 15 minutes and auto-restores on tmux server start.
+
+**config:**
+```
+set -g @continuum-restore 'on'
+set -g @continuum-save-interval '15'
+```
+
+**why both resurrect and continuum:** resurrect gives you manual save/restore control. continuum makes it automatic so you never lose more than 15 minutes of layout changes if your machine crashes.
\ No newline at end of file
new file mode 100644
index 0000000..d20f5c2
@@ -0,0 +1,21 @@
+---
+visibility: public
+---
+
+# tmux-resurrect
+
+tmux plugin that saves and restores sessions across reboots. without it, closing your terminal means losing your entire workspace layout.
+
+**keybindings (rebound from defaults):**
+- `M-s` — save session (default was `prefix + C-s`, rebound to avoid conflict with session switcher)
+- `M-r` — restore session
+
+**config:**
+```
+set -g @resurrect-save 'M-s'
+set -g @resurrect-restore 'M-r'
+set -g @resurrect-capture-pane-contents 'on'
+set -g @resurrect-save-shell-history 'off'
+```
+
+saves: window layouts, pane splits, working directories, and (with the right config) running processes.
\ No newline at end of file
new file mode 100644
index 0000000..cc00382
@@ -0,0 +1,16 @@
+---
+visibility: public
+---
+
+# tmuxinator
+
+declarative tmux session manager. define layouts in YAML, spin them up with one command.
+
+**installed via:** `brew install tmuxinator` (also has completion: `brew install tmuxinator-completion`)
+
+**usage:**
+- `mux dev2` — spins up the full dev environment (aliased via `alias md="mux dev2"`)
+- `mux dev2 ~/code/projectname` — opens dev layout at a specific project directory
+- `pj myproject` — the `init_project` function creates `~/code/myproject` and opens it in a `mux dev2` session
+
+**what it does:** creates pre-defined window splits, names, and starting commands so you don't manually rebuild your workspace every time. combined with [[tmux-resurrect]] and [[tmux-continuum]] for persistence, the full tmux setup means you essentially never lose your workspace.
\ No newline at end of file
new file mode 100644
index 0000000..6c920fd
@@ -0,0 +1,33 @@
+---
+visibility: public
+---
+
+# yazi
+
+terminal file manager written in Rust. fast, async, with image preview support.
+
+**installed via:** `brew install yazi`
+
+**aliased as:** `y` — wraps yazi with cd-on-exit so your shell follows wherever you navigate to in yazi:
+
+```zsh
+function y() {
+ local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
+ yazi "$@" --cwd-file="$tmp"
+ IFS= read -r -d '' cwd < "$tmp"
+ [ -n "$cwd" ] && [ "$cwd" != "$PWD" ] && builtin cd -- "$tmp"
+ rm -f -- "$tmp"
+}
+```
+
+**custom proxy:** yazi is actually invoked through `~/tools/yazi-iterm-drop-proxy`, which adds iTerm2 drag-and-drop support. the `yazi()` function in .zshrc redirects all yazi calls through this proxy. session persistence across reboots is handled by [[tmux-assistant-resurrect]].
+
+**theme:** catppuccin-mocha (set in `~/.config/yazi/theme.toml`)
+
+**custom keybindings:**
+- `C-o C-o` — open selected files with default app
+- `C C` or `Esc d` — drag selected files with Draggy
+
+**plugins:** git integration, file-extra-metadata previewer/spotter
+
+**part of the shell navigation stack:** yazi for browsing, [[fzf]] for fuzzy search, [[zoxide]] for jumping to frequent directories, [[eza]] for listing. each handles a different mode of finding things.
\ No newline at end of file
new file mode 100644
index 0000000..0cdf67d
@@ -0,0 +1,19 @@
+---
+visibility: public
+---
+
+# zoxide
+
+smarter `cd` replacement. learns which directories you visit most and lets you jump to them with partial names.
+
+**installed via:** `brew install zoxide`
+
+**setup (in .zshenv):**
+```zsh
+eval "$(zoxide init zsh)"
+alias cd="z"
+```
+
+this means every `cd` call is actually `z` — so `cd proj` might jump to `~/code/myproject` if that's where you go most. initialized in `.zshenv` (not `.zshrc`) so it's available in all shell contexts.
+
+**part of the shell navigation stack:** zoxide for jumping, [[fzf]] for searching, [[yazi]] for browsing, [[eza]] for listing. zoxide handles the "I know roughly where I want to go" case.
\ No newline at end of file