← the Atlas

hcom vs. kolu — the filesystem is the channel

Comparisons·seedling·

hcom hooks coding agents together with per-tool hooks and a shared SQLite event log, so agents message, watch, and subscribe to each other. It's a fine design for a tool that owns no terminal. kolu owns the terminal and won't touch your ~/.claude — and it already has a channel every agent speaks natively, the filesystem. Agents coordinate through shared files (as /debate does), kolu watches them for push, and the screen is the floor only for what files can't carry. So the honest verdict is not to adopt hcom's channel — it's that kolu already has one.

A read of hcom — a single Rust binary that “hooks your coding agents together” so they message, watch, and spawn each other across terminals — held against what kolu (a workspace where many coding agents run in real terminals you can watch) already is. hcom is a genuinely nice design, and the obvious instinct is “kolu should adopt this.” Checked against both codebases, the honest verdict is the opposite: kolu already has the channel hcom installs — the filesystem — so it doesn’t need hcom’s. This note is why.

hcom installs a channel OWNS NO TERMINAL agent A hook in ~/.claude agent B hook in ~/.claude shared event log SQLite · inbox · events delivered mid-turn — through the hooks a real channel — the cost: per-tool hooks, written into your config kolu uses the channel it already has OWNS THE TERMINAL agent A any agent · no setup agent B any agent · no setup shared directory 01.md · 02.md · 03.md kolu watches it → push read / write by path files are the channel no hooks · any agent · headless & over ssh screen only for what files can't carry: the prompt keystroke · AskUserQuestion
Two ways to wire agents together. hcom installs a message channel (per-tool hooks + a shared event log) because it owns no terminal. kolu owns the terminal and won't touch your config — so it uses the channel every agent already speaks: a shared directory of files, watched for push. The screen is the floor only for what files can't carry.

Two ways to wire agents together

hcom owns no terminal, so to let agents coordinate it has to build a channel and inject into each tool. It rides each tool’s hooks (Claude Code’s PostToolUse/Stop, Gemini, Codex, …) and a shared SQLite event log, giving every agent an inbox, an event feed, @mention routing, an intent (request/inform/ack), and subscriptions. It’s a real coordination fabric. The price is stated in hcom’s own README: its hooks “go into config dirs under ~/ on first run,” and each of its ~10 tools needs a hand-written hook and transcript parser.

kolu made the other choice, and its README names the two rules that force it:

So kolu won’t touch your ~/.claude. That rules out hcom’s whole mechanism — and forces the interesting question: without installed hooks, how do kolu agents coordinate? The answer is already in the repo, and it isn’t the terminal screen.

The filesystem is already the channel

Kolu’s /debate skill — a port of srid/llm-debate — is the proof. Agents don’t message each other and don’t read each other’s screens. They exchange arguments as numbered markdown files in a shared directory: each reads the others’ turn-files and writes its own by path. The skill is explicit — “pass file paths, not pasted argument text — the agents read and write the shared directory directly.” A turn being done is just its file existing.

That’s the whole coordination channel, and it has every property hcom’s log has, with none of the cost:

Map hcom’s headline features onto this and they collapse into things kolu already has: an inbox is a file the other agent writes; subscriptions are a watch on a path; @mention addressing is a filename; a thread is a subdirectory. There is no capability here that kolu lacks — only a different spelling of one it already uses.

What adopting hcom’s channel would actually add — and why it isn’t worth it

Held against “shared files + a watcher,” a message-inbox API adds ergonomics, not capability — addressed messages and threads are a nicer surface over what a directory already does. Two things it does not buy, which is the whole reason not to build it:

So the trade is: ergonomics over a filesystem kolu already uses, bought with the per-tool hooks kolu deliberately refuses — and it still doesn’t solve the one hard case. Net negative. Don’t adopt it.

What kolu keeps — the channel it has, and the floor beneath it

The comparison is not “kolu is missing a layer.” It’s that kolu already put each job where it belongs — files carry what agents say, the terminal carries only what files can’t — the kind of boundary call (electricity, in kolu’s terms) that hcom’s hook-everything design has to fight.

hcom is the right design for a tool that owns no terminal and must therefore install a channel into your agents. kolu owns the terminal and the working directory, so it already has one — and keeps the setup-free floor beneath it. The thing worth borrowing from hcom isn’t its channel; it’s the clarity that a channel is what agents need. kolu answers that with the filesystem.