A beautiful, open-source interface for interacting with AI agents
Agno provides a beautiful UI for interacting with your agents, completely open source, free to use and build on top of. It’s a simple interface that allows you to chat with your agents, view their memory, knowledge, and more.
No data is sent to agno.com, all agent data is stored locally in your sqlite database.
The Open Source Agent UI is built with Next.js and TypeScript. After the success of the Agent Playground, the community asked for a self-hosted alternative and we delivered!
The Agent UI needs to connect to a playground server, which you can run locally or on any cloud provider.
Let’s start with a local playground server. Create a file playground.py
playground.py
Copy
Ask AI
from agno.agent import Agentfrom agno.models.openai import OpenAIChatfrom agno.playground import Playgroundfrom agno.storage.sqlite import SqliteStoragefrom agno.tools.duckduckgo import DuckDuckGoToolsfrom agno.tools.yfinance import YFinanceToolsagent_storage: str = "tmp/agents.db"web_agent = Agent( name="Web Agent", model=OpenAIChat(id="gpt-4o"), tools=[DuckDuckGoTools()], instructions=["Always include sources"], # Store the agent sessions in a sqlite database storage=SqliteStorage(table_name="web_agent", db_file=agent_storage), # Adds the current date and time to the instructions add_datetime_to_instructions=True, # Adds the history of the conversation to the messages add_history_to_messages=True, # Number of history responses to add to the messages num_history_responses=5, # Adds markdown formatting to the messages markdown=True,)finance_agent = Agent( name="Finance Agent", model=OpenAIChat(id="gpt-4o"), tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)], instructions=["Always use tables to display data"], storage=SqliteStorage(table_name="finance_agent", db_file=agent_storage), add_datetime_to_instructions=True, add_history_to_messages=True, num_history_responses=5, markdown=True,)playground = Playground(agents=[web_agent, finance_agent])app = playground.get_app()if __name__ == "__main__": playground.serve("playground:app", reload=True)