Skip to main content
You have a deployed agent platform with two reference agents, evals, and JWT auth. The sections below cover the moves that turn it into a real product: teams and workflows, scheduled tasks, and connecting to Slack.

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 in app/main.py:
Schedule any agent or workflow on a cron. Common patterns: 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 in app/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.
Each toolkit reads its credentials from environment variables. Add them to .env for local and to .env.production for Railway, then ./scripts/railway/env-sync.sh.

Swap model providers

Switch from OpenAI to Anthropic:
  1. Set ANTHROPIC_API_KEY in .env and .env.production.
  2. Add anthropic to pyproject.toml.
  3. Update the agent’s model=.
  4. Run ./scripts/generate_requirements.sh && docker compose up -d --build.
The same pattern works for Google (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:
It auto-fixes mechanical drift (stale paths, missing 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.

Going deeper