๐ฎ Build distributed, event-driven agents
๐ฎ Calfkit
Build agents that discover each other at runtime, choreograph work, and scale as independent, event-driven services.
Calfkit agents find each other and choreograph work over a mesh โ a highly-connected data streaming network they auto-discover and communicate on. Each agent runs as an independent, event-driven service, so you can build free-flowing multi-agent workflows that collaborate and react to live data streams.
Why Calfkit?
- Dynamic agent-to-agent discovery and collaboration. Agents find each other at runtime and work together โ messaging each other and handing off tasks โ so you build multi-agent systems without complex wiring or orchestration, and extend team capabilities at any time.
- Scalable by default. Every agent runs and scales as an independent microservice, so your agent teams are resilient and scalable from day one.
- React to realtime data streams. Agents are event-driven, so they react to realtime data streams โ live market feeds, log streams, support-ticket queues โ and send results wherever they're needed. Build agents that work like continuously streaming workflows, not one-off requests.
- Scale on production-ready infrastructure. The agent mesh is Kafka-compatible so you can run + scale your agents on production-ready streaming infrastructure straight out of the box.
Installation
# Recommended for getting started, includes a zero-setup in-memory dev mesh:
pip install 'calfkit[mesh]'
Quickstart
With the [mesh] extra, ck dev spins up a local in-memory mesh for you โ no Docker, no CALFKITMESHURL required.
Agent
Save as general.py:
from calfkit import Agent, Handoff, Messaging, OpenAIResponsesModelClient
general = Agent( name="general", description="Answers simple questions and routes requests to whoever can handle it.", system_prompt="You are a general assistant. Defer technical questions to other agents.", modelclient=OpenAIResponsesModelClient(modelname="gpt-5.4"), peers=[ Messaging(discover=True), # discover and delegate to any agent at runtime Handoff(discover=True), # discover and hand off to any agent at runtime ], )
Run it and chat
# Starts the agent (and a local mesh if one isn't running):
ck dev run <file>:<agent>
ck dev run general:general
In a second terminal, chat with the agent:
ck dev chat
Add another agent โ and watch them discover each other
Save as finance.py:
from calfkit import Agent, OpenAIResponsesModelClient
finance = Agent( name="finance", description="Answers the user's personal finance questions.", system_prompt="You are the personal finance specialist. Answer finance-related questions.", modelclient=OpenAIResponsesModelClient(modelname="gpt-5.4"), )
ck dev run finance:finance
Now ask a finance question in ck dev chat โ general discovers finance at runtime and hands off automatically. No wiring, no orchestrator.
Running an agent mesh
Calfkit agents discover and communicate over a mesh.
For local dev, the bundled in-memory broker (via [mesh] extra) is zero-setup โ see How to run a local mesh with ck dev.
In production, the mesh is Kafka-compatible so you can drop your agent swarms into production-ready Kafka streaming infrastructure you already use.
Want a fully-managed mesh your agents can join from anywhere? Join the beta
Documentation
- Getting started: See
docs/. - Examples: See
examples/โ multi-agent team and general framework API examples.
Contributing
Issues and pull requests are welcome. Please open an issue to discuss substantial changes before sending a PR.
See CONTRIBUTING.md.
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.