<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Agents' Codex</title><link>https://agentscodex.com/tags/agent-teammates/</link><description>Practical, no-hype insights on AI agents — cost optimization, multi-agent architecture, and real-world operations.</description><generator>Hugo -- 0.166.0</generator><language>en-us</language><lastBuildDate>Fri, 25 Sep 2026 07:36:40 -0300</lastBuildDate><atom:link href="https://agentscodex.com/tags/agent-teammates/index.xml" rel="self" type="application/rss+xml"/><item><title>Cumora: Agents as First-Class Teammates in Team Chat</title><link>https://agentscodex.com/posts/2026-09-25-cumora-agents-first-class-teammates-team-chat/</link><pubDate>Fri, 25 Sep 2026 06:00:00 -0300</pubDate><author>Agents' Codex</author><guid>https://agentscodex.com/posts/2026-09-25-cumora-agents-first-class-teammates-team-chat/</guid><category>cumora</category><category>agentteammates</category><category>multiagent</category><category>claudecode</category><description>Cumora gives AI agents real email, memory, and shared workflows as first-class teammates. Here is how its BYOA key security and coordination stack works.</description><content:encoded><![CDATA[<p><strong>TL;DR</strong></p>
<ul>
<li>Cumora gives agents the same roster, DMs, Kanban board, calendar, and a real email address as human teammates.</li>
<li>A seven-layer coordination stack let seven agents finish a relay 8/8 in-order with zero duplicates when one member went absent.</li>
<li>The BYOA daemon runs from <code>npx cumora</code> and keeps provider keys on your machine, so the server never sees them.</li>
</ul>
<p>In five weeks, an open-source project pulled in 3,883 GitHub stars and 508 forks [1]. The signal is less the number than what developers are voting for: a team chat where <a href="/posts/2026-07-24-rotunda-agent-native-browser/">AI agents</a>
 sit in the same roster as people, not inside a sidebar plugin. Cumora answers a question most <a href="/posts/2026-07-04-workspace-agent-architecture/">collaboration tools</a>
 avoid: what if an agent were not a tool you invoke, but a teammate you hand work to? This article argues Cumora matters because it treats <a href="/posts/2026-08-28-agent-identities-first-class-principals-nhi-governance/">agent identity</a>
, security, and coordination as first-class engineering problems; its benchmarked answers point to how agent-native teams will actually operate.</p>
<h2 id="what-cumora-is-one-chat-app-for-humans-and-agents">What Cumora Is: One Chat App for Humans and Agents</h2>
<p>Cumora is a cross-platform team chat application where AI agents join the same roster, direct messages, group conversations, Kanban boards, and calendar as humans [2]. The frontend ships as React 18 with Vite, TypeScript, and Tailwind, wrapped in Electron, Capacitor iOS/Android, and PWA shells over shared components [2]. Public release v0.9.0 landed on 2026-08-29 with Gemini CLI hardening, Pi process fixes, and a redesigned Computers tab [3].</p>
<p>Under the hood, agents take one of two brain paths. Cumora Cloud runs managed agents in Kubernetes pods through the OpenAI Responses API; BYOA pairs local machines with your own <a href="/posts/2026-09-04-frugal-tokens-cost-regression-detection-coding-agents/">coding agents</a>
 [2]. The backend is a stateless Express and WebSocket server. Postgres holds the source of truth through a Drizzle schema, while Redis handles pub/sub fan-out and presence [2]. There is also a transactional outbox pattern that keeps real-time updates consistent across the two [2].</p>
<table>
	<thead>
			<tr>
					<th>Layer</th>
					<th>Technology</th>
					<th>Role</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Frontend</td>
					<td>React 18 + Vite + Tailwind</td>
					<td>Shared UI across Electron, PWA, iOS, Android</td>
			</tr>
			<tr>
					<td>Backend</td>
					<td>Express + WebSocket</td>
					<td>Stateless API and real-time channel</td>
			</tr>
			<tr>
					<td>Source of truth</td>
					<td>Postgres (Drizzle)</td>
					<td>State with transactional outbox</td>
			</tr>
			<tr>
					<td>Real-time</td>
					<td>Redis</td>
					<td>Pub/sub fan-out and presence</td>
			</tr>
			<tr>
					<td>Cloud agents</td>
					<td>Kubernetes + OpenAI Responses API</td>
					<td>Managed big-brain path</td>
			</tr>
	</tbody>
</table>
<div class="alert alert-alert">
  <p class="alert-heading">ALERT</p>
  <p>Cumora&rsquo;s two-brain design matters: it serves teams that want fully managed agents, and teams that insist on running their own model access locally.</p>
</div><h2 id="from-tool-to-teammate-the-agent-identity-model">From Tool to Teammate: The Agent Identity Model</h2>
<p>The shift from tool to teammate begins with identity. Every Cumora agent holds a persistent persona, memory files, and status indicators; and it is free to start its own conversations rather than wait to be pinged [2][8]. Each agent also gets a real email address shaped like <code>&lt;participantId&gt;.&lt;companySlug&gt;@&lt;EMAIL_DOMAIN&gt;</code> and can send and receive external mail [7]. Put simply: the agent is a mailbox with a memory, not a bot waiting for a mention.</p>
<p>Agents anchor to a Computer (a local machine or a cloud pod) with status, engine chips, and live activity [2][4]. This is a concrete departure from bolting a bot into a channel. An agent can claim work from a shared board, email a vendor directly, and carry project context across days. That turns invoking an agent into assigning a teammate.</p>
<p>The distinction sounds subtle; the consequences are not. When an agent owns a thread, a card, and a calendar slot, the humans around it stop thinking in terms of prompts; they start thinking in terms of handoffs. Ownership, not invocation, is the unit of work.</p>
<h2 id="bring-your-own-agent-and-keep-your-keys">Bring Your Own Agent and Keep Your Keys</h2>
<p>BYOA (Bring Your Own Agent) supports ten local engines: <a href="/posts/2026-07-17-ai-agent-ides-multi-agent-workspace-rebuild/">Claude Code</a>
, Codex CLI, Grok Build, Cursor Agent, OpenCode, pi, Gemini CLI, Qwen Code, Antigravity, and ZCode [4]. Claude Code and Codex are secure-default engines with fail-closed filesystem, command-network, and subprocess-credential boundaries; the other engines require an explicit unsandboxed opt-in [4].</p>
<p>The security model is the headline. Provider credentials never leave your local machine. The daemon holds the JWT and POSTs to <code>/runtime/cli</code>, so the server never sees your API keys [4]. The daemon itself ships as <code>npx cumora</code>: a single ~330KB ESM file (zero runtime dependencies) that pairs a machine to the workspace [4]. It installs as a supervised service on launchd, systemd, or Task Scheduler.</p>
<p>This arrangement answers the question that keeps enterprises away from managed agents: who actually owns the keys? In Cumora&rsquo;s BYOA path, you do. The server coordinates work, but it never sees the credentials that power the model beneath each agent.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># Pair a local machine to the Cumora workspace</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># The daemon holds credentials locally; the server never sees your API keys.</span>
</span></span><span style="display:flex;"><span>npx cumora
</span></span></code></pre></div><div class="alert alert-alert">
  <p class="alert-heading">ALERT</p>
  <p>The fail-closed default for Claude Code and Codex is what makes BYOA enterprise-viable. Keys stay on-premise while agents still join cloud chat, because unsandboxed engines are opt-in, not the default.</p>
</div><h2 id="how-cumora-keeps-seven-agents-from-colliding">How Cumora Keeps Seven Agents from Colliding</h2>
<p>Cumora&rsquo;s deepest work is its coordination stack, which arbitrates agent collaboration through a seven-layer defense: a seen-cursor freshness gate, atomic work claims, small-brain triage, per-computer concurrency semaphores, deterministic spawn pacing, an AdaptivePacer for rate-limit absorption, and wake debounce with coalescing [5].</p>
<p>The defaults are concrete: a big-brain cap of 6 per computer; a triage cap of 8; and a minimum spawn interval of 500 ms [5]. The AdaptivePacer exists to absorb provider rate limits, instead of letting agents hammer an API into throttling.</p>
<pre class="mermaid">flowchart LR
  A[Seen-cursor gate] --> B[Atomic work claims]
  B --> C[Small-brain triage]
  C --> D[Concurrency semaphores]
  D --> E[Deterministic pacing]
  E --> F[AdaptivePacer]
  F --> G[Wake debounce]</pre><p>Cost and correctness sit in the same loop: every LLM call is tracked in a unified <code>llm_calls</code> ledger regardless of cloud or BYOA path, and untracked spend is treated as a correctness bug [9][4]. Architecture CI guards enforce that only agent turns use the big model, every LLM call is cost-tracked, and BYOA engines stay fully wired into all registries [9].</p>
<div class="key-takeaway">
  <span class="key-takeaway-label">Key Takeaway</span>
  Cumora treats coordination, cost tracking, and rate-limit absorption as one system, not three features bolted on after the fact.
</div>

<h2 id="proven-in-the-wild-benchmarks-and-the-team-adapts-principle">Proven in the Wild: Benchmarks and the Team-Adapts Principle</h2>
<p>Cumora validates its coordination stack with real-LLM benchmarks across four scenarios: chain relay, counting game, werewolf roleplay, and kanban pull-group [6]. The headline result is the T10 chain relay (2026-06-03) — a seven-agent Chinese-character relay with one member deliberately absent completed 8/8 in-order, with zero duplicates, in roughly 4.5 minutes [5][6].</p>
<p>Agent nova triple-lapped to cover the absent member — and that recovery was the architectural breakthrough. The team&rsquo;s insight is that AI-native means making agents behave like real humans collaborating, which reframes absence as a normal team condition rather than a system error [5]. When one agent drops offline, the others simply pick up the slack.</p>
<p>This rigor is not free: a full benchmark cycle (chain, counting, werewolf, and kanban) costs roughly $58 to $101 using real Opus 4.7 calls; the cheap regression pair of chain plus counting runs about $12 to $21 [6]. Those numbers matter: they tell you the experiments ran on real models, not stubs.</p>
<figure>
    <img loading="lazy" src="/images/posts/2026-09-25-cumora-agents-first-class-teammates-team-chat/image-1.jpg"
         alt="Cumora agent coordination relay network with central node and bridged gap"/> <figcaption>
            <p>Agent relay gap bridged by luminous path</p>
        </figcaption>
</figure>

<h2 id="how-cumora-stands-against-fleets-networks-and-tmux">How Cumora Stands Against Fleets, Networks, and tmux</h2>
<p>Cumora&rsquo;s position sharpens against its neighbors. AgentsMesh describes itself as &ldquo;The AI Agent Workforce Platform&rdquo;, a Kanban-first system with ticket-to-agent mapping for dispatching work to agents [10]. Batty runs a team of AI coding agents in tmux with git worktree isolation, a Kanban board, and Discord or Telegram monitoring channels [11].</p>
<table>
	<thead>
			<tr>
					<th>Tool</th>
					<th>Frames agents as</th>
					<th>Chat, email, calendar</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>AgentsMesh</td>
					<td>Task executors on a Kanban board</td>
					<td>Absent</td>
			</tr>
			<tr>
					<td>Batty</td>
					<td>tmux-managed coding agents</td>
					<td>Kanban + Discord/Telegram (no email/calendar)</td>
			</tr>
			<tr>
					<td>Cumora</td>
					<td>First-class teammates</td>
					<td>First-class participants</td>
			</tr>
	</tbody>
</table>
<p>The gap is consistent: competitors treat agents as executors, network nodes, or tmux-managed coding agents. Cumora alone gives agents first-class participation in human-normal chat, email, and calendar, backed by an open-source coordination protocol documented at a depth the others do not match [2].</p>
<figure>
    <img loading="lazy" src="/images/posts/2026-09-25-cumora-agents-first-class-teammates-team-chat/image-2.jpg"
         alt="Cumora shared team roster with human and AI-agent avatars side by side"/> <figcaption>
            <p>Human and AI-agent avatars in equal standing</p>
        </figcaption>
</figure>

<h2 id="shipping-with-agents-one-workflow-for-everyone">Shipping with Agents: One Workflow for Everyone</h2>
<p>Cumora extends the teammate idea to the full feature lifecycle through its Shipping module. Humans and agents use the same evidence-backed workflow, Draft, Contract, Building, Verifying, Ready, Releasing, Watching, and Learned, with agent CLI commands like <code>cumora ship create</code>, <code>cumora ship square</code>, and <code>cumora ship friction</code> [8]. An agent does not just write code in a sandbox; it joins the same contract and review stages as humans, with the same evidence trail.</p>
<p>That shared workflow is what lets a team hand an agent a real stake in shipping (and genuine accountability). When reviews, evidence, and sign-offs are identical for every participant, the agent becomes accountable in the way a teammate is accountable, not in the way a script is accountable.</p>
<h2 id="what-this-means-for-your-developer-team">What This Means for Your Developer Team</h2>
<p>Three practical shifts follow: first, the mental model changes from invoking an agent to assigning a teammate (a shift that reshapes how you scope, hand off, and review work). Second, sandboxed BYOA lets enterprise teams keep credentials on-premise while agents collaborate in cloud chat; a posture most managed-agent platforms cannot offer [4].</p>
<p>Third, the operational surface is real: cost tracking [9]; rate-limit management [5]; and a human supervisory layer, all of which remain your job. Cumora draws the boundary clearly. The tools handle coordination mechanics, but the team still owns priorities and judgment.</p>
<p>Start small before you scale. Adopt the BYOA path with one Claude Code or Codex agent, wire it into your cost ledger, and give it one owned workflow before adding a multi-agent roster.</p>
<h2 id="practical-takeaways">Practical Takeaways</h2>
<ol>
<li>Onboard one agent as a named teammate with a real email address and one recurring task it owns end to end.</li>
<li>Run BYOA with Claude Code or Codex so provider keys stay on your machine while the agent joins cloud chat.</li>
<li>Adopt a cost ledger for every LLM call and treat untracked spend as a bug, not a bookkeeping afterthought.</li>
<li>Plan for member absence before scaling; add rate-limit pacing and work-claim guards early.</li>
<li>Give agents the same shipping workflow as humans, with contract, review, and evidence, so ownership is real.</li>
</ol>
<h2 id="conclusion">Conclusion</h2>
<p>The group recovered a missing member and still finished the relay 8/8, and that is a property you can build process around rather than a demo that only works in ideal conditions. Whether an agent with a mailbox and a memory changes your operating model is the open question. Here is the sharper one: once delegating to a colleague gets that cheap, what does a human stop doing themselves? Give that named colleague one owned task, one cost ledger, then watch.</p>
<h2 id="frequently-asked-questions">Frequently Asked Questions</h2>
<h3 id="does-cumora-require-me-to-hand-my-api-keys-to-a-server">Does Cumora require me to hand my API keys to a server?</h3>
<p>No. In BYOA mode the daemon holds your provider keys locally and posts to a local endpoint, so the server never sees them.</p>
<h3 id="which-coding-agents-does-cumora-support">Which coding agents does Cumora support?</h3>
<p>BYOA supports ten local engines: Claude Code, Codex CLI, Grok Build, Cursor Agent, OpenCode, pi, Gemini CLI, Qwen Code, Antigravity, and ZCode. Claude Code and Codex are the secure-default options, while the rest need an explicit unsandboxed opt-in before you can use them with broad filesystem or network access in production.</p>
<h3 id="how-does-cumora-prevent-multiple-agents-from-colliding-on-the-same-work">How does Cumora prevent multiple agents from colliding on the same work?</h3>
<p>It uses a seven-layer defense: a seen-cursor freshness gate, atomic work claims, small-brain triage, per-computer concurrency semaphores, deterministic spawn pacing, an AdaptivePacer, and wake debounce with coalescing. See the coordination section above for the full sequence and the default caps on spawn interval and concurrency.</p>
<h3 id="is-the-coordination-approach-tested-or-is-it-only-documentation">Is the coordination approach tested, or is it only documentation?</h3>
<p>It is benchmarked with real LLM calls. The T10 chain relay had seven agents complete 8/8 in-order with zero duplicates in about 4.5 minutes even with one member deliberately absent, and agent nova triple-lapped to cover the gap. That is strong evidence, but it covers a small suite of scenarios, so we do not yet know how the coordination scales to much larger teams or noisier workloads.</p>
<h3 id="how-much-does-a-full-benchmark-cycle-cost-to-run">How much does a full benchmark cycle cost to run?</h3>
<p>Around $58 to $101 per full cycle covering chain, counting, werewolf, and kanban with real Opus 4.7 calls. That is a meaningful budget for teams that want to reproduce Cumora&rsquo;s results rather than read about them. Most teams should start with the cheaper chain-plus-counting regression pair at roughly $12 to $21 before committing to the full suite. Budget for a few iterations, since coordination tuning is rarely a one-shot run.</p>
<hr>
<h2 id="sources">Sources</h2>
<table>
	<thead>
			<tr>
					<th>#</th>
					<th>Publisher</th>
					<th>Title</th>
					<th>URL</th>
					<th>Date</th>
					<th>Type</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>1</td>
					<td>GitHub</td>
					<td>&ldquo;yetone/cumora repository metadata&rdquo;</td>
					<td><a href="https://api.github.com/repos/yetone/cumora" target="_blank">https://api.github.com/repos/yetone/cumora</a>
</td>
					<td>2026-09-25</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>2</td>
					<td>GitHub</td>
					<td>&ldquo;Cumora README.md&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora" target="_blank">https://github.com/yetone/cumora</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>3</td>
					<td>GitHub</td>
					<td>&ldquo;Cumora Release v0.9.0&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/releases/tag/v0.9.0" target="_blank">https://github.com/yetone/cumora/releases/tag/v0.9.0</a>
</td>
					<td>2026-08-29</td>
					<td>News</td>
			</tr>
			<tr>
					<td>4</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;BYOA — Bring Your Own Agent (docs/BYOA.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/docs/BYOA.md" target="_blank">https://github.com/yetone/cumora/blob/main/docs/BYOA.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>5</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;Agent Coordination — how BYOA agents collaborate without colliding (docs/COORDINATION.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/docs/COORDINATION.md" target="_blank">https://github.com/yetone/cumora/blob/main/docs/COORDINATION.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>6</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;Multi-Agent Coordination Benchmarks (benchmarks/README.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/benchmarks/README.md" target="_blank">https://github.com/yetone/cumora/blob/main/benchmarks/README.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>7</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;Email — real external mail per agent (docs/email.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/docs/email.md" target="_blank">https://github.com/yetone/cumora/blob/main/docs/email.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>8</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;Shipping in Cumora (docs/SHIPPING.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/docs/SHIPPING.md" target="_blank">https://github.com/yetone/cumora/blob/main/docs/SHIPPING.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>9</td>
					<td>Cumora (GitHub)</td>
					<td>&ldquo;Contributing to Cumora (CONTRIBUTING.md)&rdquo;</td>
					<td><a href="https://github.com/yetone/cumora/blob/main/CONTRIBUTING.md" target="_blank">https://github.com/yetone/cumora/blob/main/CONTRIBUTING.md</a>
</td>
					<td>2026-09-24</td>
					<td>Documentation</td>
			</tr>
			<tr>
					<td>10</td>
					<td>HN Algolia / AgentsMesh</td>
					<td>&ldquo;Show HN: AgentsMesh – AI agent fleet command center&rdquo;</td>
					<td><a href="https://github.com/AgentsMesh/AgentsMesh" target="_blank">https://github.com/AgentsMesh/AgentsMesh</a>
</td>
					<td>2026-03-04</td>
					<td>News</td>
			</tr>
			<tr>
					<td>11</td>
					<td>HN Algolia / Batty</td>
					<td>&ldquo;Show HN: Batty – Run a team of AI coding agents in tmux with test gating&rdquo;</td>
					<td><a href="https://github.com/battysh/batty" target="_blank">https://github.com/battysh/batty</a>
</td>
					<td>2026-04-04</td>
					<td>News</td>
			</tr>
	</tbody>
</table>
<h2 id="image-credits">Image Credits</h2>
<ul>
<li><strong>Cover photo</strong>: Image generated with gemini-3-pro-image (Agents&rsquo; Codex AI illustration)</li>
<li><strong>Figure 1</strong>: Image generated with gemini-3-pro-image (Agents&rsquo; Codex AI illustration)</li>
<li><strong>Figure 2</strong>: Image generated with gemini-3-pro-image (Agents&rsquo; Codex AI illustration)</li>
</ul>
]]></content:encoded><media:content url="https://agentscodex.com/images/covers/2026-09-25-cumora-agents-first-class-teammates-team-chat/cover.jpg" medium="image"/><media:thumbnail url="https://agentscodex.com/images/covers/2026-09-25-cumora-agents-first-class-teammates-team-chat/cover.jpg"/></item></channel></rss>