from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.models.openai import OpenAIChat
from agno.os import AgentOS
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.hackernews import HackerNewsTools
from agno.tracing import setup_tracing
# Set up databases - each agent has its own db
db1 = SqliteDb(db_file="tmp/db1.db", id="db1")
db2 = SqliteDb(db_file="tmp/db2.db", id="db2")
# Dedicated traces database
tracing_db = SqliteDb(db_file="tmp/traces.db", id="traces")
# Setup tracing with custom configuration
setup_tracing(
db=tracing_db,
batch_processing=True,
max_queue_size=1024,
max_export_batch_size=256,
)
agent = Agent(
name="HackerNews Agent",
model=OpenAIChat(id="gpt-5-mini"),
tools=[HackerNewsTools()],
instructions="You are a hacker news agent. Answer questions concisely.",
markdown=True,
db=db1,
)
agent2 = Agent(
name="Web Search Agent",
model=OpenAIChat(id="gpt-5-mini"),
tools=[DuckDuckGoTools()],
instructions="You are a web search agent. Answer questions concisely.",
markdown=True,
db=db2,
)
# Setup AgentOS with dedicated tracing_db
# This ensures traces are written to and read from the same database
agent_os = AgentOS(
description="Example app for tracing with multiple databases",
agents=[agent, agent2],
tracing_db=tracing_db, # Dedicated database for traces
)
app = agent_os.get_app()
if __name__ == "__main__":
agent_os.serve(app="tracing_multi_db_setup:app", reload=True)