Too Good to Share / Series
CCSwitchboard
Claude.ai in the browser fires off a job, a headless Claude Code run does it on the VM, and the answer lands back in the same conversation. I never carry it across by hand.
It is a personal tool, not a finished product, and this writeup will not pretend otherwise. I am documenting it and sharing the source because the shape of it might be useful to someone. It is a collection of parts held together with polling, and it mostly works.
This is a long one! Use the section nav to skip the parts you do not care about, or read it straight through from the start.
In this series
- What it is, and why I built it The copy-paste friction that started it, why none of the existing tools fixed it, and what the thing actually is.
- How it works A job from dispatch to result: the relay, the headless run, the streamed output, and the reply typed back into the thread.
- The components, part by part The relay, agent, browser extension, popup and feed - what each is responsible for and how it talks to the others.
- The context layer The durable notes and files a fresh thread reads so Claude.ai knows how to drive the system. Includes a starter kit you can lift.
- Driving it from Claude.ai The queue, the handful of prompts you actually type, and how a job leaves the queue.
- Setup, and dropping in at any point Running Claude Code headless without the safety prompts, why it lives in a VM, and where else you could host it.
- What to explore and swap The swap points: where the design is modular enough to fork, and where it is not there yet.
- Alternative approaches Subagents, orchestration frameworks, local orchestrators, hosted cloud agents and CI runners, weighed honestly.
- Why it suits some, and why it's best for me Who this narrow tool actually fits, and the honest reasons it fits me.