Get up and running with the Cortex Agent Framework in 5 minutes.
- Python 3.11+
- Redis 7.0+
- Anthropic API key
cd ~/Projects/cortex-platform
pip install -r agents/requirements.txt# Using Docker
docker run -d -p 6379:6379 redis:7
# Or using local Redis
redis-serverexport REDIS_URL="redis://localhost:6379"
export ANTHROPIC_API_KEY="sk-ant-your-key-here"Verify everything works:
pytest tests/agents/ -vExpected output:
tests/agents/test_messaging.py::TestAgentMessage::test_message_creation PASSED
tests/agents/test_messaging.py::TestAgentMessage::test_message_to_dict PASSED
tests/agents/test_registry.py::TestAgentRegistry::test_register_agent PASSED
...
==================== 15 passed in 2.34s ====================
Experience the full agent lifecycle:
python examples/agent_demo.pyThis demo:
- Starts coordinator master
- Spawns security master
- Spawns Sandfly worker
- Sends a task through the chain
- Worker uses Claude API to process the task
workers/my_worker.py:
from agents.base_worker import BaseWorker
class MyWorker(BaseWorker):
def get_capabilities(self):
return ["my_capability"]
def get_system_prompt(self):
return "You are a helpful assistant."
async def process_task(self, message):
# Use Claude to process the task
response = await self.ask_claude(
f"Help me with: {message.payload}"
)
return {"result": response}
if __name__ == "__main__":
import asyncio
import os
worker = MyWorker(
agent_id=os.getenv("AGENT_ID", "my-worker-001"),
name="My Worker",
master_id=os.getenv("MASTER_ID", "coordinator-master"),
)
asyncio.run(worker.start())workers/__init__.py:
from workers.my_worker import MyWorker
__all__ = ["MyWorker", ...]export AGENT_ID="my-worker-001"
export MASTER_ID="coordinator-master"
python -m workers.my_workermasters/my_master.py:
from agents.base_master import BaseMaster
class MyMaster(BaseMaster):
def get_capabilities(self):
return ["task_routing"]
async def route_task(self, message):
# Find a worker with the capability
worker_id = await self.find_available_worker("my_capability")
return worker_id
async def process_result(self, message):
# Handle results from workers
print(f"Result: {message.payload}")
if __name__ == "__main__":
import asyncio
master = MyMaster(
agent_id="my-master",
name="My Master"
)
asyncio.run(master.start())python -m masters.my_masterfrom agents.messaging import MessageBroker, AgentMessage
async def send_task():
broker = MessageBroker(redis_url="redis://localhost:6379")
await broker.connect()
message = AgentMessage(
stream="agent:tasks:my-master",
sender="client",
recipient="my-master",
task_type="process_data",
payload={"data": "important data"},
)
await broker.publish(message)
await broker.disconnect()
import asyncio
asyncio.run(send_task())from agents.registry import AgentRegistry
async def list_agents():
registry = AgentRegistry(redis_url="redis://localhost:6379")
await registry.connect()
agents = await registry.list_agents()
for agent in agents:
print(f"{agent.name}: {agent.status.value}")
await registry.disconnect()
import asyncio
asyncio.run(list_agents())- Read the full documentation:
agents/README.md - Study the examples:
workers/sandfly_worker.py,masters/security_master.py - Write tests:
tests/agents/test_my_worker.py - Deploy to Kubernetes: See
AGENT_FRAMEWORK.mdfor deployment guide
redis.exceptions.ConnectionError: Error connecting to Redis
Solution: Make sure Redis is running on localhost:6379
ModuleNotFoundError: No module named 'agents'
Solution: Run Python from the cortex-platform directory or add to PYTHONPATH:
export PYTHONPATH="$PYTHONPATH:~/Projects/cortex-platform"anthropic.AuthenticationError: Invalid API key
Solution: Check your ANTHROPIC_API_KEY environment variable
- Full Documentation:
/Users/ryandahlberg/Projects/cortex-platform/agents/README.md - Framework Overview:
/Users/ryandahlberg/Projects/cortex-platform/AGENT_FRAMEWORK.md - Example Demo:
/Users/ryandahlberg/Projects/cortex-platform/examples/agent_demo.py - Tests:
/Users/ryandahlberg/Projects/cortex-platform/tests/agents/
For questions or issues, check:
- Framework README for detailed API documentation
- Test files for usage examples
- Demo script for complete working example
Happy agent building! 🤖