Going beyond agents
Rule of thumb: agents for open questions, teams for routing, workflows for processes. Most of your platform will be agents. A few will be teams or workflows.
Teams come in three modes:
Scheduled tasks
The scheduler is on by default inapp/main.py:
See scheduling for the cron API.
Connect to interfaces
Your agents should be available where your users are. Slack threads. Discord channels. Telegram for the field team. Or a custom UI inside your product. The pattern is the same for each. Expose the agent via an interface inapp/main.py:
resolve_user_identity=True ties the Slack user to the same user_id they have in the AgentOS UI, so sessions follow the person across surfaces.
Add tools to an agent
Agno ships 100+ toolkit integrations. See the full toolkit reference..env for local and to .env.production for Railway, then ./scripts/railway/env-sync.sh.
Swap model providers
Switch from OpenAI to Anthropic:- Set
ANTHROPIC_API_KEYin.envand.env.production. - Add
anthropictopyproject.toml. - Update the agent’s
model=. - Run
./scripts/generate_requirements.sh && docker compose up -d --build.
google-genai), Mistral (mistralai), and the other supported providers.
Keep the repo coherent
As you ship more agents, configuration drifts, env vars rot, and new agents miss imports. The template repo ships a fourth Claude Code prompt for the recurring sweep:example.env entries, agents on disk not registered in app/main.py) and surfaces the rest as a punch list. Run it before public releases and periodically during active development.