Blog

Notes from building it.

The engineering, the design, and the reason any of this exists. Written for the people who'd recognize a good kill when they see one.

  1. Engineering · August 2026 · 5 min The key that did nothing. A feature shipped three releases ago was reachable only by a key nothing on screen advertised, so did nothing at all. What le 0.1.22 changes — plus the pty trap that had our TUI tests passing against a blank screen.
  2. What we shipped · August 2026 · 4 min The load was 43. Nothing was listening. A Mac at four times its core count, and our own app showed a calm screen — because nothing eating it had a socket. The blind spot in “find processes by their ports”, and the load strip we added in 1.1.1.
  3. Engineering · July 2026 · 6 min The row that just said “kubectl”. kubectl port-forwards and cloudflared tunnels now say what they really are — service, ports, context — and le forward keeps a port-forward alive through pod restarts, reconnecting with backoff and never hiding a reconnect.
  4. Product · July 2026 · 5 min Pin the port, not the process. Favorites keyed by port (they survive every restart), a global hotkey that's off by default, full keyboard control, links that know they're HTTPS, and a refresh cadence you choose.
  5. Engineering · July 2026 · 7 min A theme owns the whole app. Norton Commander blue, one-bit System 7, the real IBM VGA font — whole-surface theming in SwiftUI: token choke points, font-licensing archaeology, the toolbar SwiftUI can't see, and porting ten identities to a terminal in seven colors.
  6. Shipping in public · July 2026 · 4 min A duck, a loupe, and a locked keyboard. The new Desk & Character section: a rubber duck that debugs, a colour loupe, type-where-paste-is-forbidden, free-port roulette, and the Is-it-DNS verdict. Character is allowed — when every toy is also a real tool.
  7. Shipping in public · July 2026 · 3 min Tool #88 locks your keyboard. Clean the crumbs, not the commands: every key goes quiet until you click Unlock. A CGEventTap, one honest permission, and the three ways out that make a keyboard-disabling tool trustworthy.
  8. Shipping in public · July 2026 · 4 min 87 tools, not 100. The Tools panel grew from 14 to 87 in a day — because tools stopped being views and became data. Why nothing needs sudo, the GUI PATH trap that breaks every Mac app that shells out to brew, and why the last 13 didn't ship.
  9. Design · July 2026 · 5 min Three kinds of quiet. The red 818% alarm shipped — into rows already wearing a rainbow of badges that broke my own design rules. Writing the rules down, and why the fix is three selectable row styles instead of one: Calm, Mono, and Signal.
  10. Shipping in public · July 2026 · 6 min 818%, and my own app stayed calm. A headless emulator pinned eight cores and cooked my laptop — and the tool I built to see what's running listed it like everything was fine. Adding CPU and memory, and the one line I refused to cross near the Stop guard.
  11. Shipping in public · July 2026 · 4 min A comment found a gap. Here's the fix. A commenter asked whether killing a launchd agent just chases ghosts. It did. Same day: stops route through the supervisor, refused rows name their label, and the bootout gets its own recycle guard.
  12. Engineering · July 2026 · 4 min The same table, over SSH. One static binary on any Linux box: the listener table instead of the ss/ps/docker dance, a clipboard that reaches back through the tunnel, and le ready for CI.
  13. Open source · July 2026 · 4 min The CLI is open source. le — the terminal version, MIT-licensed: the live table, folder sweeps, an SSH-aware clipboard, and the audit trail that comes with the code.
  14. Shipping in public · June 2026 · 5 min We got roasted on Reddit. Here's what was true. A few hundred angry comments, sorted: which hits landed, which missed, why we're keeping the 127 icon anyway, and the one reply I'd take back.
  15. Engineering · May 2026 · 8 min Killing a process is harder than it looks. The PID-recycling race every naive process killer ships with, why an interpreter is the wrong name for a process, letting the kernel do the work, and the limits we don't paper over.
  16. How we made it · May 2026 · 5 min How we made the icon with Claude Design. No designer, no Figma. The URL handoff between Claude Design and Claude Code, and the conceptual leap — the glyph should just be 127 — that I would have skipped on my own.
  17. Why I built this · May 2026 · 4 min The month I got used to the fan. A month of an overheating MacBook, blamed on everything except the thing I should have checked. I knew the lsof command. I just kept telling myself I'd check later.