<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Agentik</title>
    <description>The latest articles on DEV Community by Agentik (@agentiknet).</description>
    <link>https://dev.to/agentiknet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4021451%2F95f66238-d258-4b44-80a9-624afdc31df3.png</url>
      <title>DEV Community: Agentik</title>
      <link>https://dev.to/agentiknet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentiknet"/>
    <language>en</language>
    <item>
      <title>I built a CLI to drive every AI coding agent from one interface</title>
      <dc:creator>Agentik</dc:creator>
      <pubDate>Thu, 09 Jul 2026 15:53:27 +0000</pubDate>
      <link>https://dev.to/agentiknet/i-built-a-cli-to-drive-every-ai-coding-agent-from-one-interface-ai</link>
      <guid>https://dev.to/agentiknet/i-built-a-cli-to-drive-every-ai-coding-agent-from-one-interface-ai</guid>
      <description>&lt;p&gt;TLDR; I got tired of babysitting N terminal tabs of five different coding-agent CLIs. So I built agentproto — one daemon that drives Claude Code, Codex, Hermes, opencode, and Mastra through the same lifecycle, and actually supervises them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why I built a daemon to drive every AI coding agent from one interface
&lt;/h1&gt;

&lt;p&gt;I have a confession: at any given moment I have Claude Code, Codex, and&lt;br&gt;
Hermes running in parallel terminal tabs, and I cannot remember which flag&lt;br&gt;
spawns which, which one eats &lt;code&gt;--prompt&lt;/code&gt;, which one needs &lt;code&gt;--cwd&lt;/code&gt; vs &lt;code&gt;cd&lt;/code&gt;,&lt;br&gt;
and which one will hang forever if I close the laptop lid. simonw described&lt;br&gt;
the feeling on Hacker News recently — &lt;em&gt;"Today I have Claude Code and Codex&lt;br&gt;
CLI and Codex Web running, often in parallel"&lt;/em&gt; — and called it a real jump in&lt;br&gt;
cognitive load compared to a year ago. aantix asked, also on HN: &lt;em&gt;"how does&lt;br&gt;
everyone visually organize the multiple terminal tabs open for these numerous&lt;br&gt;
agents in various states?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I didn't have a good answer. So I built one.&lt;/p&gt;

&lt;p&gt;It's called &lt;strong&gt;agentproto&lt;/strong&gt;. It is one daemon and one CLI that drives any&lt;br&gt;
coding-agent CLI — Claude Code, Codex, Hermes, opencode, Mastra, and a few&lt;br&gt;
more — through the same start / prompt / monitor / kill lifecycle, so you&lt;br&gt;
stop memorizing five different CLIs. On top of that lifecycle it adds the&lt;br&gt;
supervision layer people keep hand-rolling by hand: durable policy gates,&lt;br&gt;
nested orchestration, and multiplexed fan-in monitoring. MIT, no paid tier,&lt;br&gt;
the daemon itself is an MCP server.&lt;/p&gt;

&lt;p&gt;This is the story of why it exists.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hand-rolled watchdog
&lt;/h2&gt;

&lt;p&gt;The sharpest signal while I was building this came from other people&lt;br&gt;
independently re-inventing the same primitives in tmux scripts.&lt;/p&gt;

&lt;p&gt;On r/ClaudeAI, &lt;strong&gt;Confident_Chest5567&lt;/strong&gt; posted a writeup of orchestrating&lt;br&gt;
agents via tmux panes with a watchdog that resets dead sessions — &lt;em&gt;"a swarm&lt;br&gt;
of agents that can keep themselves alive indefinitely."&lt;/em&gt; In the same thread,&lt;br&gt;
&lt;strong&gt;IssueConnect7471&lt;/strong&gt; (18 upvotes) described wiring a Redis pub/sub heartbeat&lt;br&gt;
plus dead-letter respawn between tmux panes, and arrived at this conclusion:&lt;br&gt;
&lt;em&gt;"Keep agents simple, push orchestration to the outside."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That last sentence is the thesis. The orchestration and the supervision&lt;br&gt;
should live outside the agent — in a daemon, not in a tmux script you babysit&lt;br&gt;
by hand, and not baked into one vendor's CLI. When I read it, I realized&lt;br&gt;
agentproto was just the canonical implementation of what people were already&lt;br&gt;
gluing together with tmux + Redis + sleep loops that die when the terminal&lt;br&gt;
dies.&lt;/p&gt;

&lt;p&gt;And then there was grim_io on HN, in a thread about parallel agent workflows:&lt;br&gt;
&lt;em&gt;"I'm not convinced there is any hope for a productive, long-term,&lt;br&gt;
burnout-free parallel agent workflow. Not while they need even the slightest&lt;br&gt;
amount of supervision/review."&lt;/em&gt; That is the single sharpest statement of the&lt;br&gt;
problem I have found in the wild. If your only answer to "how do I supervise&lt;br&gt;
N agents" is a tmux script, burnout is the correct prediction.&lt;/p&gt;

&lt;p&gt;el_duderino_50 on r/ClaudeCode tried to build a supervisor agent that&lt;br&gt;
&lt;em&gt;"reliably blocks Claude if it detects red flags"&lt;/em&gt; and reported back: &lt;em&gt;"can't&lt;br&gt;
really get it to work reliably. It seems like communication and coordination&lt;br&gt;
between agents is pretty poorly supported."&lt;/em&gt; That is the exact gap a durable&lt;br&gt;
policy gate closes — except the gate is a daemon primitive, not a same-model&lt;br&gt;
agent trying (and failing) to watch itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture, in one picture
&lt;/h2&gt;

&lt;p&gt;[DIAGRAM: one daemon, N adapters, policy gates]&lt;/p&gt;

&lt;p&gt;The shape is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One daemon.&lt;/strong&gt; &lt;code&gt;agentproto daemon&lt;/code&gt;. It owns sessions, the event bus, the
policy registry, the orchestration gateway. It survives your terminal
closing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;N adapters.&lt;/strong&gt; Each adapter is a thin bridge to one coding-agent CLI —
claude-code, codex, hermes, opencode, mastracode, mastra-agent, openclaw,
claude-sdk (which is itself a gateway to Anthropic / Moonshot / OpenRouter),
and a browser-as-agent target. Each adapter self-declares the models and
modes it supports via an AIP-45 manifest, so you never guess what a given
CLI can do — you read the manifest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy gates.&lt;/strong&gt; Attach a completion gate to any session's turn-end: a
shell command that must exit 0, or an LLM-judge on a &lt;em&gt;different&lt;/em&gt; adapter.
&lt;code&gt;policy:passed&lt;/code&gt; / &lt;code&gt;policy:failed&lt;/code&gt; fires on the event bus — no polling. Gate
a commit on human approval: &lt;code&gt;commit-ready&lt;/code&gt; → human &lt;code&gt;ack&lt;/code&gt; → daemon stages
and commits. This is the primitive IssueConnect7471 built a Redis watchdog
to approximate, except it does not die when your terminal dies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The daemon is itself an MCP server — roughly 90 tools covering agent&lt;br&gt;
lifecycle, session introspection, orchestration, MCP composition, tunnels,&lt;br&gt;
cron, eval reporters, filesystem, terminal/PTY, browser-as-target, and&lt;br&gt;
scheduling. You script it from code, from another agent, or from cron. No&lt;br&gt;
terminal needs to be attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three-line quickstart
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @agentproto/cli
agentproto serve
agentproto sessions start claude-code &lt;span class="nt"&gt;--cwd&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"refactor the payments module"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've used any coding-agent CLI, that's the whole learning curve.&lt;br&gt;
&lt;code&gt;agentproto run &amp;lt;adapter&amp;gt;&lt;/code&gt; is the same call regardless of which CLI is&lt;br&gt;
underneath. &lt;code&gt;agentproto sessions&lt;/code&gt; lists every live session across every&lt;br&gt;
adapter with the same status columns.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually shipping today (honest split)
&lt;/h2&gt;

&lt;p&gt;I want to say this up front, because someone will clone the repo and check.&lt;/p&gt;

&lt;p&gt;The orchestration layer is live and verified hands-on. The daemon, the CLI,&lt;br&gt;
every adapter listed above, the policy gates, nested orchestration,&lt;br&gt;
multiplexed fan-in monitoring, MCP composition, sessions, workflows, tunnels,&lt;br&gt;
cron, eval reporters, per-session usage/cost observability — all real,&lt;br&gt;
working today. You can install it cold and drive three different CLIs through&lt;br&gt;
one lifecycle.&lt;/p&gt;

&lt;p&gt;The repo also ships the AIP spec family — roughly 52 numbered specs covering&lt;br&gt;
the full surface of an AI company / agent: &lt;code&gt;COMPANY.md&lt;/code&gt;, &lt;code&gt;OPERATOR.md&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;PERSONA.md&lt;/code&gt;, &lt;code&gt;ROLE.md&lt;/code&gt;, &lt;code&gt;ASSEMBLY.md&lt;/code&gt;, &lt;code&gt;PLAYBOOK.md&lt;/code&gt;, and so on. Most of&lt;br&gt;
those specs are &lt;code&gt;0.1.0-alpha&lt;/code&gt; scaffolded stubs. Real schemas, real intent,&lt;br&gt;
&lt;strong&gt;not yet operational software&lt;/strong&gt;. If you &lt;code&gt;git clone&lt;/code&gt; and grep for &lt;code&gt;TODO&lt;/code&gt; in&lt;br&gt;
their &lt;code&gt;build()&lt;/code&gt; / &lt;code&gt;validate()&lt;/code&gt; bodies, you will find it. That is not a&lt;br&gt;
problem I'm hiding — it's the contract. The features page separates Tier 1&lt;br&gt;
(live, verified hands-on) from Tier 2 (roadmap) explicitly, and if you find a&lt;br&gt;
Tier 2 claim that reads as shipped, please file it. That honesty split is the&lt;br&gt;
trust asset, not the vulnerability.&lt;/p&gt;

&lt;p&gt;This is why you won't see me make any "agents that author their own tools&lt;br&gt;
mid-session" claim in launch copy. I audited that against the source: the&lt;br&gt;
manifest writers exist, but the runtime hot-load path that would let an agent&lt;br&gt;
author and use a new tool mid-session does not. Claiming it would take one HN&lt;br&gt;
reader one session to disprove. It's on the roadmap, explicitly labeled&lt;br&gt;
"not yet."&lt;/p&gt;

&lt;h2&gt;
  
  
  The wedge: supervision, not another SDK
&lt;/h2&gt;

&lt;p&gt;I want to be careful about the word here. agentproto is not an SDK you import&lt;br&gt;
into your process and build your agent inside of. It is a daemon — a binary&lt;br&gt;
you start, that drives existing coding-agent CLIs as subprocesses over ACP /&lt;br&gt;
JSON-RPC, and that exposes its supervision layer as something you call from&lt;br&gt;
code, from another agent, or from cron. It does not replace whatever you build&lt;br&gt;
agents with. You can run a LangGraph agent, or a Mastra agent, inside an&lt;br&gt;
agentproto session if you want. They compose, they don't compete.&lt;/p&gt;

&lt;p&gt;The honest comparison: tools like Claude Squad, Conductor, and Agent Farm&lt;br&gt;
already exist for the single-adapter case — running several Claude Code&lt;br&gt;
instances in parallel with git worktrees and tmux. They're great if that's&lt;br&gt;
your workflow. agentproto is a different shape. It is a daemon with a&lt;br&gt;
programmatic lifecycle (HTTP / MCP / CLI), it works across adapters (not&lt;br&gt;
just Claude Code), it adds supervision primitives none of them have (durable&lt;br&gt;
policy gates that survive a client disconnect, multiplexed fan-in monitoring,&lt;br&gt;
session export, usage/cost introspection), and it could sit &lt;em&gt;under&lt;/em&gt; tools like&lt;br&gt;
them.&lt;/p&gt;

&lt;p&gt;gck1, independently on HN, restated the pitch almost verbatim: &lt;em&gt;"treat all&lt;br&gt;
tooling that wraps the models as dumb gateways to inference. Then provider&lt;br&gt;
switch is basically a one line config change."&lt;/em&gt; That is the lock-in answer.&lt;br&gt;
ggaowp on r/LocalLLaMA said it even more directly: &lt;em&gt;"I'm looking for&lt;br&gt;
something I can build on top of... and not worry about vendor lock-in.&lt;br&gt;
Ideally: multi-provider LLM support, or at least swappable."&lt;/em&gt; One daemon, any&lt;br&gt;
adapter, models and providers declared per-adapter — that's the plumbing for&lt;br&gt;
people who already believe models are fungible in 2026 and just want the&lt;br&gt;
switch to be one line.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The immediate roadmap is adapter breadth and contributor onboarding. The&lt;br&gt;
adapters shipping today cover Claude Code, Codex, Hermes, opencode, Mastra,&lt;br&gt;
claude-sdk, openclaw, and a browser target. The obvious gaps are gemini-cli,&lt;br&gt;
aider, goose, cline, and Continue. The adapter contract is small — declare&lt;br&gt;
&lt;code&gt;models[]&lt;/code&gt; and &lt;code&gt;modes[]&lt;/code&gt; via an AIP-45 manifest, implement the lifecycle&lt;br&gt;
verbs. If you maintain one of those CLIs, or just like one, a one-adapter PR&lt;br&gt;
is the highest-leverage way to grow the moat. The adapter-authoring guide is&lt;br&gt;
at cli.agentproto.sh/docs/concepts/adapters, and there are &lt;code&gt;good first issue: adapter&lt;/code&gt;&lt;br&gt;
labels in the tracker.&lt;/p&gt;

&lt;p&gt;The longer roadmap is the AIP spec family — turning those alpha stubs into&lt;br&gt;
operational software, one spec at a time, in public. The spec-as-invitation&lt;br&gt;
framing is intentional: an open standard being implemented in public, with a&lt;br&gt;
tracker, turns the honesty liability into a participation surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If you're juggling Claude Code + Codex + Hermes + opencode in parallel tabs,&lt;br&gt;
or you've built a tmux + Redis watchdog to keep agents alive, agentproto is&lt;br&gt;
the daemon with those primitives built in. MIT, no paid tier, no vendor&lt;br&gt;
lock-in. I'll be in the comments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/agentproto/agentproto" rel="noopener noreferrer"&gt;github.com/agentproto/agentproto&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site: &lt;a href="https://agentproto.sh" rel="noopener noreferrer"&gt;agentproto.sh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Features (Tier 1 / Tier 2 split): &lt;a href="https://agentproto.sh/features" rel="noopener noreferrer"&gt;agentproto.sh/features&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Adapter-authoring guide: &lt;a href="https://cli.agentproto.sh/docs/concepts/adapters" rel="noopener noreferrer"&gt;cli.agentproto.sh/docs/concepts/adapters&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've built a crude version of any of this — a watchdog, a custom MCP&lt;br&gt;
spawner, a supervisor agent that never quite worked — I'd genuinely like to&lt;br&gt;
hear what you ran into. You built exactly what this ships. Your teardown is&lt;br&gt;
more useful to me than a star.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
