Skip to main content

Event System

Real-time event streaming with runtime switching. Track every tool call, agent thought, and message in real-time.

Quick Start

from omnicoreagent import OmniCoreAgent, EventRouter

# Start with in-memory
agent = OmniCoreAgent(
    event_router=EventRouter("in_memory"),
    ...
)

# Switch to Redis Streams for production
await agent.switch_event_store("redis_stream")

# Check current event store type
await agent.get_event_store_type()

# Stream events in real-time
async for event in agent.stream_events(session_id):
    print(f"{event.type}: {event.payload}")

Event Types

EventDescription
user_messageUser input received
agent_messageAgent response generated
agent_thoughtAgent’s internal reasoning step
tool_call_startedTool execution begins
tool_call_resultTool execution completes
final_answerAgent produces final response
sub_agent_startedSub-agent delegation begins
sub_agent_resultSub-agent returns result
sub_agent_errorSub-agent encountered an error

Retrieving Events

# Get event history for a session
events = await agent.get_events(session_id="user_1")

for event in events:
    print(f"[{event.timestamp}] {event.type}: {event.payload}")
Enable events when you need real-time monitoring, debugging, or building UIs that show agent progress. Essential for production observability.