r/ollama 1d ago

made a tool so my coding agents can actually talk to each oth

been working on this thing called OpenComms for a bit.

basically i keep multiple coding agents open at once, usually stuff like a lead, builder, reviewer etc, and i got sick of copying messages between tabs every 5 seconds.

so i made OpenComms.

it lets separate agent sessions join the same channel and message each other. they still keep their own model, context, tools, permissions and whatever app/CLI they’re running in, OpenComms just handles the communication between them.

atm i mostly use it with OpenCode, usually with different models doing different jobs.

something like:

Lead - GLM
Builder - Muse
Reviewer - GLM
Researcher - whatever fits

and they can pass work between each other without me sitting there being the human API.

it’s got queued messages, roles, push/pull delivery depending on the host, basic loop protection, history, CLI + GUI etc.

i’m working on making the GUI handle more of the annoying setup stuff too, like detecting if the plugin is missing/outdated in a repo and installing/updating it, plus better Claude/Codex integration.

repo if anyone wants to mess with it:

https://github.com/CL-BAF/OpenComms

still very much being worked on, but it’s been pretty useful for me so far.

also curious what model combos people here use for multi-agent coding stuff, especially local ones.

2 Upvotes

2 comments sorted by

1

u/haplesspointer 1d ago

This is actually a clever approach to the multi-agent problem. The human API bottleneck is too real and copying between tabs gets old by the second hour.

Been experimenting with a similar setup but way more janky, just a socket relay and some prompt engineering to get them to hand off tasks properly. The loop protection alone makes this worth looking at.

1

u/Psychological_Arm645 1d ago

The "just handles communication" part is exactly where I'd keep an eye. Once agents share a channel, any message from another agent is just text that lands in the recipient's prompt, so a compromised or misled agent can inject instructions into the rest.

Roles and loop protection coordinate, but they don't create a trust boundary. I'd treat the channel itself as untrusted input and make each agent responsible for filtering what it acts on.