capture-note.sh reads an optional leading bug:/feature:/chore:/idea: keyword as the inbox type (default idea, always P2). AGENTS.md: capture mode marked live; two durable lessons — the Update button deploys origin/master so commits must land there, and Element intercepts /capture (the thread is the trigger).
matrix-bridge
A single-user Matrix → Claude Code bridge. Send a message in a project's Matrix room and a Claude Code session launches on the Mac in that project's repo, then surfaces to your phone via Claude Code Remote Control. The point: make the trigger for a coding session portable without moving execution off the Mac.
Runs as a small matrix-nio bot in a Docker container on a DGX Spark; a zsh wrapper on the
Mac (scripts/launch-claude.sh) is the only piece that knows the Mac's environment. Routing
is deterministic in v1 — the room you message in decides the repo (an explicit config map).
Status: live on the Spark — Phases 0–3 + headless "ask" mode shipped. The bot runs in 11 project rooms + an all-projects room, and is managed from the Spark Control dashboard. See
AGENTS.md→## Current statefor details andROADMAP.mdfor the phase plan.
How it works (v1)
Matrix message in a project room
→ bot on the Spark maps room → repo
→ SSHes to the Mac, runs scripts/launch-claude.sh <repo_dir> <message>
→ wrapper cd's into the repo and launches `claude`
→ Remote Control notifies the phone; you drive the session there
Setup
The bot is live; this is the shape of a fresh install: Matrix onboarding (Element + the existing
Synapse homeserver, a bot user), the Mac wrapper, passwordless SSH from the Spark to the Mac, and
the room→repo mapping. Copy config.example.toml to config.toml (gitignored) and fill in real
room IDs and repo paths. Deploy and day-2 ops (status / update / restart) run from the Spark
Control dashboard — see docs/spark-control-integration.md for the command contract.