The itch
In May 2025, Claude Code was generally available and I was using it every day, but only the way everyone was: interactively, one terminal, me typing. There was no programmatic way to drive it. I was building a task orchestration tool at the time and I needed to start sessions from code, feed them context, watch their output, and run several of them at once. The thing I wanted to script had no API, so I wrapped one around it.
What I built
channelcoder was a TypeScript SDK over the Claude Code CLI. First commit on May 22, published to npm the next day, because I needed it working more than I needed it polished.
It handled the parts that scripting a coding agent actually requires:
- Sessions
- Multi-turn session management.
- Isolation
- Git-worktree mode: parallel sessions each got an isolated copy of the repo.
- Containers
- Docker mode, for contained runs.
- Execution
- Detached background execution.
- Streaming
- An NDJSON parser, so a program could follow what a session was doing.
What happened to it
channelcoder became the execution layer under my orchestration harness, which is its own note. For about three weeks it did exactly the job.
- May 22, 2025First commit.
- May 23, 2025Published to npm.
- ~June 11, 2025Anthropic ships the official Claude Code SDK for TypeScript and Python: the platform's own answer to the same gap, and the better long-term bet by definition. I stopped maintaining channelcoder more or less immediately.
I do not count that as the project failing. The gap was real, the tool filled it for the weeks the gap existed, and building it taught me the actual shape of the problem: sessions, isolation, streams, typed inputs. When the official thing arrived, the right move was to drop mine, not defend it.