An event-based runtime and messaging framework for AI agents.
Project description
AgentLane
AgentLane is a runtime-first framework for building AI agents with addressed messaging, model primitives, and a reusable agent harness.
(Initially inspired by Microsoft's autogen framework that is no longer being actively developed).
It gives you three layers that can be used together or independently:
agentlane.runtimefor delivery, routing, scheduling, and agent identityagentlane.modelsfor prompts, schemas, tools, and model clientsagentlane.harnessfor agent loops, tool execution, handoffs, and high-level agents
╔════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ █████╗ ██████╗ ███████╗███╗ ██╗████████╗██╗ █████╗ ███╗ ██╗███████╗ ║
║ ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝██║ ██╔══██╗████╗ ██║██╔════╝ ║
║ ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ██║ ███████║██╔██╗ ██║█████╗ ║
║ ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ██║ ██╔══██║██║╚██╗██║██╔══╝ ║
║ ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ███████╗██║ ██║██║ ╚████║███████╗ ║
║ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝ ║
║ ║
║ runtime-first AI agent framework ║
║ ║
║ addressed messaging • model primitives • reusable agent harness ║
║ ║
╠════════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ Runtime → delivery • routing • scheduling • identity ║
║ Models → prompts • schemas • tools • model clients ║
║ Harness → loops • execution • handoffs • agents ║
║ ║
║ from local agents → to distributed multi-agent systems ║
║ ║
╚════════════════════════════════════════════════════════════════════════════════════╝
Why AgentLane?
AgentLane is built for AI systems where messaging, addressing, and runtime behavior are part of the application design.
It is a good fit when you want:
- one programming model from local runs to distributed execution
- explicit message routing instead of hidden in-process orchestration
- a high-level agent interface without giving up lower-level runtime control
- thin provider adapters instead of provider-owned orchestration logic
- a path from simple local agents to multi-agent systems with tools and handoffs
Why Runtime And Messaging Matter
Many agent frameworks center on a single in-process agent loop or workflow graph. That is a good fit for one request running in one place.
AgentLane starts one layer lower, at addressed messaging and runtime execution. That matters because it gives application code a stable way to:
- send work to a specific long-lived agent or service by address
- keep state attached to that addressed instance across multiple turns
- publish one event to many subscribers without hard-coding the fan-out
- split work across specialists and gather results back
- move from local execution to distributed workers without changing the core communication model
In practice, that means the same framework can cover both:
- local agent(s) running in one process
- a system of addressed agents, background specialists, and pub/sub flows spread across workers
The messaging layer is what makes those two use cases part of one model instead of two different frameworks glued together.
When To Use It
Use AgentLane for:
- local agents that need tools, delegation, or resumable runs
- background specialists and addressed services that communicate by message
- fan-out, fan-in, and pub/sub workflows
- applications that start in one process and may later move to a distributed runtime
Installation
Install AgentLane with uv:
uv add agentlane
If you are trying the repository directly instead:
uv sync --all-extras
Quick Start
After installing the package, define an agent against your model client:
from agentlane.harness import AgentDescriptor
from agentlane.harness.agents import DefaultAgent
class SupportAgent(DefaultAgent):
descriptor = AgentDescriptor(
name="Support",
model=model,
instructions="You are a concise support agent.",
)
agent = SupportAgent()
result = await agent.run("My order arrived damaged. What should I do first?")
Repository Examples
If you are running from a repository checkout, run one runtime example:
uv run python examples/runtime/multi_agent_workflow/main.py
Run one high-level harness example with a real model:
OPENAI_API_KEY=sk-... uv run python examples/harness/default_agent_quickstart/main.py
The runtime example shows explicit message passing.
Choose Your Level
Runtime
Use the runtime when you want explicit messaging, stable identities, pub/sub, or distributed execution.
Start here:
Models
Use the models layer when you want prompt templates, structured outputs, native tools, or provider clients without the full harness.
Start here:
Harness
Use the harness when you want reusable agent loops, tool execution, handoffs, agent-as-tool, or high-level local agents.
Start here:
Documentation
Use the documentation index for the full docs tree:
Development
/usr/bin/make format
/usr/bin/make lint
/usr/bin/make tests
Run one test with:
uv run pytest -s -k <test_name>
Contributing
- Keep changes small and focused.
- Add or update tests when behavior changes.
- Update public docs and examples when the developer-facing surface changes.
- Ensure formatting, linting, and tests pass before opening a PR.
Project details
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 agentlane-0.6.0.tar.gz.
File metadata
- Download URL: agentlane-0.6.0.tar.gz
- Upload date:
- Size: 934.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d5827cc9a65b4046bbb8877d52733a9bd6ef6f9ded2938502deeeb90a9d2d47
|
|
| MD5 |
77d185e6b71597bec60c673df37857b5
|
|
| BLAKE2b-256 |
233835560ec4f9b42f9ffebad59168755ae21d10ab941713a04e7dea60d35422
|
Provenance
The following attestation bundles were made for agentlane-0.6.0.tar.gz:
Publisher:
pypi-publish.yml on yasik/agentlane
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentlane-0.6.0.tar.gz -
Subject digest:
6d5827cc9a65b4046bbb8877d52733a9bd6ef6f9ded2938502deeeb90a9d2d47 - Sigstore transparency entry: 1315031974
- Sigstore integration time:
-
Permalink:
yasik/agentlane@426b3393a5f91fc9e4e02283906f133572bdb929 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/yasik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@426b3393a5f91fc9e4e02283906f133572bdb929 -
Trigger Event:
release
-
Statement type:
File details
Details for the file agentlane-0.6.0-py3-none-any.whl.
File metadata
- Download URL: agentlane-0.6.0-py3-none-any.whl
- Upload date:
- Size: 187.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 |
677289e48f0496683aaf0cbba25d5bdf9644a928ecb4b2bae0864aaf39c8f2a0
|
|
| MD5 |
4311ae136c4504cd37f1d361e466e2a7
|
|
| BLAKE2b-256 |
966810d5384f43973da2d339c3f0d9aac898d6e4d030170a97dc53e60abbf519
|
Provenance
The following attestation bundles were made for agentlane-0.6.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on yasik/agentlane
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentlane-0.6.0-py3-none-any.whl -
Subject digest:
677289e48f0496683aaf0cbba25d5bdf9644a928ecb4b2bae0864aaf39c8f2a0 - Sigstore transparency entry: 1315032070
- Sigstore integration time:
-
Permalink:
yasik/agentlane@426b3393a5f91fc9e4e02283906f133572bdb929 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/yasik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@426b3393a5f91fc9e4e02283906f133572bdb929 -
Trigger Event:
release
-
Statement type: