Skip to content

Quick start

Launch a team

Bring up a hub plus one or two local model workers in one command:

synapse team

Or run the pieces individually

synapse hub --port 8876                       # the coordination hub
synapse hub --port 8876 --db ./synapse.db     # crash-safe: resumes on restart
synapse worker --name FAST --provider ollama --model gemma3:4b
synapse worker --name OFFLINE --provider rule # no network, canned replies

Talk to the channel

From another terminal:

synapse listen --name USER                    # stream messages
synapse send --name USER --target FAST "status of TASK-1?"
synapse board                                 # the shared task/progress plan
synapse manifest                              # advertised agent capabilities

Coordinate from code

import asyncio
from synapse_channel import SynapseHub, SynapseAgent


async def main() -> None:
    hub = SynapseHub()
    asyncio.create_task(hub.serve("localhost", 8876))

    agent = SynapseAgent("ALPHA", uri="ws://localhost:8876")
    task = asyncio.create_task(agent.connect())
    await agent.wait_until_ready()

    await agent.claim("refactor-parser", note="splitting the tokenizer", paths=["src/parser"])
    await agent.save_checkpoint("refactor-parser", "step=2")
    await agent.update_task("refactor-parser", status="working")
    await agent.release("refactor-parser")

    agent.running = False
    task.cancel()


asyncio.run(main())

See the coordination model for what each verb guarantees.