Many agents, all at once
Start a conversation while another agent is still working. The sidebar shows who is responding, who needs your approval and what is unread.
- RResearcherneeds approval
- WWriterresponding
- RReviewerresponding
- OOrganizeridle
Connect any LLM — an API key or the CLI you already use — give agents a role and a set of tools, and talk to all of them in one Slack-style chat, with many conversations running at once.
v0.1.0 · macOS · Windows · Linux · Free and open source · Apache-2.0
Connections
Bring API keys, or the command-line harnesses you already use with their own login. Each agent picks a connection and a model, and many agents answer at the same time.
APIs
CLI harnesses
Tools
Local models through Ollama or LM Studio need no key.
What it does
Start a conversation while another agent is still working. The sidebar shows who is responding, who needs your approval and what is unread.
Give an agent local folders (read, or read and write), your Google Drive, or any MCP server you register and test in the app.
Jump to an agent, a conversation or any message. Full text, accents ignored.
Every run's tokens and cost, by connection, agent and model, with your own price corrections and a CSV export.
Paste a screenshot or drop text files into a message. Providers that cannot see images get the file name instead, and the composer tells you before you send.
Export a conversation as Markdown. Export agents with their connections and tools as a file — never with keys — and import them elsewhere.
Everything stays on your computer in SQLite. Keys live in the OS keychain, never in the database. No account needed.
A shortcut for every command, a native menu, light and dark, English and Português (Brasil).
Permissions
Every tool call goes through one permission gate in the runner, for API models and CLI harnesses alike. Claude Code and Codex reach your tools through Comitiva, so their writes ask too.
Inside the agent's folders, listing, reading and searching need no approval.
Anything that changes a file stops the run and asks you inline: Allow, Deny, or Always allow for this agent.
Paths outside the agent's folders are rejected by the server itself, not only by the UI — symlink escapes included.
Per agent: ask before writes, allow writes, or read-only.
Not a coding tool
Nothing in Comitiva assumes Git, repositories or a terminal. Agents research, write, review and organize. Code is just one case — and when you need it, it comes in as an MCP server like any other tool.
Reads a folder of notes and reports the themes that repeat, with quotes.
Drafts in your Google Drive from a brief, in your house style.
Checks a draft against a checklist and lists what is missing.
Sorts a messy folder into a structure you approve, one move at a time.
How it is built
All LLM execution — adapters, streaming, cancellation, the tool loop, MCP clients, approvals and usage — lives in the runner, a plain Node process with a JSON-lines protocol. Electron is one client of it. The hub will be another.
Interface
React · talks only to a Backend
Desktop shell
Electron · SQLite · OS keychain
Runner
adapters · tool loop · approvals · usage
LLM providers
APIs and CLI harnesses
MCP servers
filesystem · Google Drive · yours
Hubnext
Phase 8 · a remote Backend
One process owns execution. Any shell can drive it: the desktop today, a server or a CLI tomorrow.
SQLite for everything, the OS keychain for secrets. Without a hub, everything works offline. The hub is optional and syncs.
Entities, message blocks and events are published as JSON Schema, so the TypeScript desktop and the PHP hub speak the same language.
What's next
Comitiva starts on your computer and grows into a shared workspace. The desktop stays local-first; the hub is optional.
macOS, Windows and Linux. Connections, agents, tools with approvals, attachments, search, usage and cost. Checks for updates on its own.
Accounts and workspaces. Agents and conversations synced between desktops, live: two desktops see the same conversation as it streams.
The same interface in the browser, served by the hub. Team API keys, and API agents running on the server, so teammates without the desktop can talk to them. An online desktop can run CLI harnesses and local tools on the team's behalf.
Limits and concurrency per agent, and fallback: an agent switches connection when it hits a limit.
Free and open source. Works fully on your computer, no account.
Apache-2.0
The hub, open source, on your own servers. For teams that host their own tools.
AGPL-3.0
The hub, run by us. Billed by usage.
app.comitiva.dev
Read the spec, the architecture decisions and the code. Open an issue, send a pull request, or watch the releases.
Apache-2.0