A framework to build powerful AI agent teams.
Project description
🐮 Calfkit
Build powerful AI agents with automatic, open inter-agent discovery and communication.
Calfkit agents dynamically find each other at runtime and choreograph work, with no hard-coded orchestrator or wiring. Build free-flowing and flexible multi-agent workflows.
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.
- No bottleneck, no single point of failure. Every agent runs and scales as an independent microservice, so your agent teams are resilient and scalable from day one.
- Act on live data in realtime. Agents are event-driven so they act on realtime data streams, sending live results wherever they're needed — build agents that work like continuous workflows, not one-off requests.
Installation
pip install calfkit
Quickstart
Agents run on a mesh. Set the CALFKIT_MESH_URL environment variable.
Agent
from calfkit import Agent, Handoff, Messaging, Tools, 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.",
model_client=OpenAIResponsesModelClient(model_name="gpt-5.4-mini"),
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 locally
You can add more agents to the team as you keep this agent's process running in the background.
# `CALFKIT_MESH_URL` required
# Start the agent process (general_help.py):
# ck run file_name:agent_name
ck run general_help:general
# Interactive agent chat CLI
ck chat
Add another agent to the team
from calfkit import Agent, agent_tool, Tools, ToolContext, 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.",
model_client=OpenAIResponsesModelClient(model_name="gpt-5.4-mini"),
)
Run new agent locally
ck run finance_help:finance
ck chat
Running an agent mesh
Calfkit agents discover and communicate over an agent mesh (CALFKIT_MESH_URL), which you can run locally yourself.
Start one with Docker:
git clone https://github.com/calf-ai/calfkit-broker && cd calfkit-broker && make dev-up
If you might be interested in a fully-managed mesh server your agents can join from anywhere, let me know.
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 for development setup, the quality gates (make fix / make check / make test), PR conventions, and how to write and run tests — including integration tests.
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file calfkit-0.12.4.tar.gz.
File metadata
- Download URL: calfkit-0.12.4.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
455f5275461710016f589d0639317d0289ea4c4361e3c6bebabd7b15b045d643
|
|
| MD5 |
51681950bff281754bee3952b3a99402
|
|
| BLAKE2b-256 |
26926c56d129cee2fa57d0e9de41f0f904ea776a7c4b4896714e04a8270100df
|
Provenance
The following attestation bundles were made for calfkit-0.12.4.tar.gz:
Publisher:
release.yml on calf-ai/calfkit-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
calfkit-0.12.4.tar.gz -
Subject digest:
455f5275461710016f589d0639317d0289ea4c4361e3c6bebabd7b15b045d643 - Sigstore transparency entry: 2029655817
- Sigstore integration time:
-
Permalink:
calf-ai/calfkit-sdk@d6b4f3657a9217db12b99d5f888553f7976ae057 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/calf-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d6b4f3657a9217db12b99d5f888553f7976ae057 -
Trigger Event:
push
-
Statement type:
File details
Details for the file calfkit-0.12.4-py3-none-any.whl.
File metadata
- Download URL: calfkit-0.12.4-py3-none-any.whl
- Upload date:
- Size: 779.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d2f426bea04ea89090a23b1718b8c3df5c9c3993568ae7363ab8c59aa1c5ef4
|
|
| MD5 |
8c47f66986279ee4ee9fc5ae95bab3d7
|
|
| BLAKE2b-256 |
5374ecbf5e0083b43a076593ae252d12d961af869178ae896defefc291010f15
|
Provenance
The following attestation bundles were made for calfkit-0.12.4-py3-none-any.whl:
Publisher:
release.yml on calf-ai/calfkit-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
calfkit-0.12.4-py3-none-any.whl -
Subject digest:
3d2f426bea04ea89090a23b1718b8c3df5c9c3993568ae7363ab8c59aa1c5ef4 - Sigstore transparency entry: 2029656059
- Sigstore integration time:
-
Permalink:
calf-ai/calfkit-sdk@d6b4f3657a9217db12b99d5f888553f7976ae057 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/calf-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d6b4f3657a9217db12b99d5f888553f7976ae057 -
Trigger Event:
push
-
Statement type: