Native macOS chat + terminal for living with AI agents.
What it is
Native macOS app for living with AI agents. A three-pane shell: rooms on the left, a real Ghostty terminal in the center, context inspector on the right. Reads session files, process state, git state, and ports out of band, so the agents do not need to know Cherminal exists. Signed and notarized for distribution. v2 reworks the workspace into an infinite spatial canvas of agent terminals: movable, zoomable nodes, one canvas per project.
Why it matters
AI development is conversation-driven. Most agent surfaces are built for async multi-agent coordination and become too heavy for a sync single-agent workflow. Cherminal treats the conversation as the primitive instead of the file tree, and stays calm and fast by following one architectural rule: observe externally, never inject.
Cherminal: project record
cherminal.com↗One conversation. Any agent runtime. Codex ↔ Claude carry, local-first.
What it is
Local-first continuity tool for agent CLIs. `constant host` runs the active runtime inside a native PTY and lets you switch the live agent with a tmux-style prefix key. `constant carry` distills a session and writes it native to the next runtime; `pack` and `unpack` move whole sessions between machines. Ships as versioned GitHub releases with a Homebrew tap and docs at constant.sh, backed by a continuity eval benchmark that scores real Codex, Claude Code, opencode, and Gemini handoffs with partial credit instead of pass / fail.
Why it matters
Codex changes. Claude changes. The conversation stays constant. Different agent runtimes have different strengths, but I should not have to rebuild context every time the runtime changes. Continuity is treated as a first-class developer primitive rather than fake hidden memory.
Stack
RustNative PTYHomebrew
Constant: project record
constant.sh↗Card scanner, collection, and deckbuilder for Riftbound.
What it is
A social graph over Riftbound collections and decks, live at rifter.gg. The camera scanner identifies the exact printing of a card: the collector number is the printing signal, OCR on the title and rules text establishes identity, and a color-grid match only confirms. Visual similarity alone never locks a match; ambiguous reads become review candidates instead of guesses. Around it: a full card dataset ingested from Riot's own API (1,188 card images), a collection tracker with trade binders for spares and wants, a deckbuilder with import and export, daily price sync, portfolio and market views, and collector profiles you can follow, with notifications for trades, follows, and price moves.
Why it matters
Three opened boxes put about a thousand physical cards on the table and no way to capture them. Scanning has to feel like checkout, not data entry, or the collection stays empty and everything downstream starves. Built graph-social rather than feed-social, the Letterboxd or Discogs shape, and inside Riot's tools policy by design: no marketplace, no published or retained win rates, card art only from the Riot API.
Stack
Next.jsTypeScriptNeonDrizzleBetter AuthOCR
Rifter: project record
rifter.gg↗Portable skills for coding agents. Host-agnostic.
What it is
Daily-driver skillpack for coding agents, shipped as plugin verticals over flat skill sprawl. Workbench: research-report, memory-scriber, devour, bedrock, gauntlet, scour, totality, skill-distiller, skill-manager. Hats: autoreview, birdwatch, overseer. Extra: trail-scriber and testament, which reconstructs what someone actually did over an era from conversation, git, and PR evidence. Versioned releases with a catalogue generator and a version-drift pre-commit check. Codex, Claude Code, and future hosts are thin adapters over the same behaviors.
Why it matters
Useful workflows should outlive one model, one CLI, or one agent runtime. Skillpack is a portable working system for using coding agents sustainably: research, memory, codebase mastery, foundation audits, agent simulation, reality checks, exhaustive surface mapping, review, live watching, trail reconstruction, skill lifecycle.
Stack
TypeScriptMDXClaude PluginsCodex MCP
Skillpack: project record
github / skillpack↗Agentless macOS monitor for the whole machine fleet.
What it is
Native macOS app that watches a fleet of machines over SSH with nothing installed on the targets. Add a server by Tailscale hostname and capability detection decides which organs render: disk, memory, and CPU everywhere; Docker, services, temperatures, battery where they exist. v0.8 adds cloud drives detected through rclone, connecting a cloud account from inside the app, and fleet-wide storage totals that hold steady when a machine goes to sleep. Started as Stockpile, a single-Mac storage auditor with one hero stat. Signed, notarized, shipped through a Homebrew tap.
Why it matters
A homelab of Macs, a GPU box, and a Windows machine scatters health across a dozen terminals. Fleetwatch is watch-only by architecture: observe over SSH, never install an agent on the target.
Stack
SwiftSwiftUISSHTailscalerclone
Fleetwatch: project record
github / fleetwatch↗Invitation and RSVP suite, proven on a real wedding.
What it is
Event software: personal invitation links where the link is the guest's login, RSVP with plus-ones and capacity, and an operator dashboard. The host runs the guest list from the Google Sheet they already use, synced two ways with the database, with preview, confirm, and snapshot before any structural change. First run was a friend's wedding in September 2026: 98 of 99 invitations opened, 92% of 131 guests responded, 91 parties RSVP'd on their own, and the couple needed the manual override twice in eleven weeks. On the day, over half the guest list used the site and the database never registered the load. Lighthouse 97 mobile, 100 accessibility, about $3.40 of infrastructure for the wedding month. Afterwards the code was split into shared packages, with one small app and one database per event.
Why it matters
The hosts are not technical, so the spreadsheet had to stay the source of truth and nothing could depend on them learning an admin panel. Real guest data set the rules: point-in-time restore and dumps before the first RSVP, guest data never in git, nothing on a timer touching the database, and each event archived to a static keepsake when it is over.
Stack
Next.jsNeonDrizzleApps ScriptVercel
Ever: project record
PrivatemacOS menu-bar advisor for Claude Code + Codex usage.
What it is
macOS menu bar + notch app that turns local usage history into a live advisor. Pressure gauges, pattern cards, personal usage stories. Answers "can I keep coding right now?" with a verdict, reason, forecast, live burn rate, and primary driver. Local Claude and Codex readers; usage windows, reset timestamps, context percentages, cache health, compaction signals.
Why it matters
AI usage is a real local resource. Most surfaces are dashboards-in-the-cloud or invasive. Burnrate is local-first, story-led, and treats the menu bar and notch as native product surfaces.
Stack
SwiftSwiftUIKeychain / OAuthHomebrew Cask
Burnrate: project record
burnrate.fyi↗Frame-precise YouTube A/B practice tool.
What it is
Free, no-signup YouTube A/B loop practice tool for musicians, dancers, and language learners. Frame-precise markers, timeline zoom, loop memory, stash chains, speed ramping, bookmarks, routines, import / export, PWA behavior, mobile support. Contextual coaching nudges surface from real usage patterns, and production deploys are gated on an end-to-end test suite.
Why it matters
Practicing tiny loops in long-form video should feel precise, fast, and local-first instead of clumsy. Bookmarks and stash are intentionally separated as distinct mental models. Splash, motion, and sound calibrated to feel intentional rather than generic.
Stack
React 19TypeScriptViteTailwind v4GSAPPostHog
ReplayDeck: project record
replaydeck.com↗Every project as a live node graph of its real stack.
What it is
Native macOS cockpit that scans the machine and draws every project as a node graph of its real stack: folder, framework, GitHub, Vercel, domain, database, PostHog views, env keys. One rule: nothing is hand-typed. Every value on the canvas is derived from disk or a provider API, so the graph cannot drift from reality.
Why it matters
A dozen live projects means provenance scatters across ten dashboards. Purser pulls it into one canvas. Reading a node graph beats reading a list, a habit carried over from years in Nuke.
Stack
SwiftSwiftUIVercel APIPostHog
Purser: project record
PrivateSelf-hosted streaming voice server on my own GPU.
What it is
Self-hosted streaming voice server: dispatcher, streaming fork, single renderer. Runs Qwen TTS on a home GPU box with the Mac as a thin audio client. About 1.1 seconds from agent turn-end to first sound, gapless. Split out of Voicepack so the voice library and the runtime stop meddling with each other.
Why it matters
Voice output for long agent sessions should default to local, private, and free per sentence. Utterances render whole on principle: tone breaks between chunks, so the server streams instead of splitting sentences.
Stack
PythonQwen TTSGPU inference
Voicer: project record
github / voicer↗Local TTS voice IDs + Qwen runner for agent hooks.
What it is
Small portable voice-ID library for local TTS agents. Ships voice preset folders, metadata, and previews as self-contained, distributable voice IDs. Backs the agent-announcer hook in Skillpack; the runtime half lives in Voicer, the self-hosted streaming server it feeds.
Why it matters
Voice notifications during long agent sessions should default to local and private. Self-contained voice IDs make handoffs distributable and reproducible.
Voicepack: project record
github / voicepack↗Career operating layer + voice-grounded application helper.
What it is
Two halves. Jobber is the discovery, scoring, and tracking engine: wide discovery across 13+ portals, LLM-driven fit scoring against a structured personal profile, Gmail sync for application history, SQLite tracker, FastAPI dashboard, and a read-only job-market pulse. Mochi is the desktop companion (Tauri / Svelte) with a visible console for scan and draft state and a form-fill mapper: it watches the active application field, maps page fields to profile answers, and writes grounded drafts from my evidence bank before insertion.
Why it matters
Most job tools optimize for volume. I needed a system that widens discovery without flattening my story (because my background does not fit clean labels) and grounds answers in real evidence. Coverage and context over spray-and-pray.
Stack
PythonFastAPITauriSvelteClaude
Jobber & Mochi: project record
PrivateA council of Claude, Codex, and Gemini for thinking, not coding.
What it is
A Claude Code room with no code in it: the agent harness repurposed for thinking, reflection, and multi-model consultation. The council puts the same question to Claude, Codex, and Gemini and keeps their reads distinct instead of collapsing them into one consensus answer. Underneath: a blackboard protocol, a sealed-envelope moderator, an MCP transport, a turn-aware context extractor, and per-model self-read files that carry reasoning context across stateless CLI invocations.
Why it matters
It started from one question: how to give the same agent different context depending on whether I am building or thinking. Directory-scoped instructions answered it, and the rest grew from there. Three models with different training and conditioning give three real vantages, and the room is built to keep that divergence visible.
Stack
Claude CodeCodex CLIGemini CLIMCP
Thinking-Room: project record
PrivateA personal OS for agents, context, and recurring work.
What it is
A reference architecture extracted from my self-hosted Hermes estate. Domain specialists connect to their own records; a shared history and read-only situation view make connected work legible across domains. The framework defines durable memory, notification cadence, scoped permissions, and review of decisions over time. Python instruments, CLI scaffolding, and build blueprints make parts reusable. My estate is the first partial implementation; wider integration and evaluation remain ongoing.
Why it matters
I think personal agents will bring tracking, research, and follow-up into a shared operating layer. That requires context that stays accountable to its sources, initiative that respects attention, and authority that can expire. Terminus explores those boundaries through a system I use myself.
Stack
HermesPythonNode.jsSQLite
Read the Terminus case study→15
Project Bonfire
Open sourceDark Souls-inspired travel log on a live map.
What it is
Full-stack travel-logging social app built at NUS-ISS: location-based tracking, game-inspired exploration mechanics, social features, and a Mapbox GL JS map at the center. Java Spring Boot services over MongoDB and MySQL, with an Angular frontend.
Why it matters
The full-stack foundation before everything above: service design, two databases doing different jobs, and a frontend that had to feel like exploring rather than filling in a form.
Stack
JavaSpring BootAngularMongoDBMySQLMapbox GL JS
Project Bonfire: project record
github / project-bonfire↗