Reliably hand off tasks between AI agents.
No lost tasks, no budget overruns, no policy bypass, full traceability.
Tasks vanish when agents go offline
Who called whom and with what data?
Downstream agents get overwhelmed
No rules on who can call whom
Which team exceeded token budget?
Every framework has a different interface
docker compose up -d
from janus_sdk import JanusClient
client = JanusClient("http://localhost:8080", tenant_id="acme")
client.publish_task({
"id": "task-001",
"source_agent": "product",
"target_type": "mailbox",
"target_value": "review-mb",
"envelope": { ... }
})
result = client.pull_task("review-mb", "reviewer")
client.start_task(result.task.id, result.lease.lease_id)
# Process task...
client.ack_task(result.task.id, {
"lease_id": result.lease.lease_id,
"result_ref": "s3://result.json"
})
Product → Review → Code → Test → Deploy
PR triggers review agent, code agent fixes issues, test agent validates, deploy agent ships
Failure → Diagnose → Fix → Verify → Merge
CI failure auto-dispatches to diagnosis agent, generates fix, validates and merges
Commit → Dependency Scan → Credential Check → Approve
Auto-scan for vulnerabilities and leaked credentials, high-risk changes require approval
LangGraph · AutoGen · CrewAI · GitHub Actions · Claude Code · Custom Agents · Human Approval Nodes