> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2-codex-docs-audit-20260719-0149.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Serve and embed

> Put the research team and pipeline behind an API so anyone, and any schedule, can ask for a review.

A research system that only runs from a script helps the person at the keyboard. Behind an API it answers from Slack, runs as a nightly review, and feeds a dashboard. `AgentOS` serves agents, teams, and workflows on the same contract.

```python theme={null}
from agno.os import AgentOS

agent_os = AgentOS(
    agents=[market_analyst, financial_analyst, risk_officer, committee_chair],
    teams=[coordinate_team, broadcast_team],
    workflows=[investment_workflow],
)
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app="main:app", port=8000)
```

Every registered agent, team, and workflow gets a run endpoint. Sessions are served from a shared `/sessions` router, filterable by component and session type. A surface calls the workflow for the auditable review or a team for an open-ended question, with the same request shape.

```bash theme={null}
curl -X POST http://localhost:8000/workflows/investment-workflow/runs \
  -F 'message=Run a full review on NVDA' \
  -F 'user_id=pm@fund.com' \
  -F 'session_id=q4-review' \
  -F 'stream=false'
```

## Where a research system lives

| Surface          | Shape                                                                        |
| ---------------- | ---------------------------------------------------------------------------- |
| Slack channel    | An analyst asks "review NVDA"; the pipeline replies in-thread with the memo  |
| Scheduled review | A cron runs the workflow nightly on a watchlist and posts the decisions      |
| Dashboard        | A widget triggers a review and renders the structured decision               |
| Backend gate     | A pipeline calls the workflow before a position changes and blocks on a PASS |

The serving model is identical to a [product agent](/use-cases/product-agents/serve-as-an-api) and a [data agent](/use-cases/data-agents/serve-and-embed). The difference is what runs behind the endpoint, not how it is served.

## Pick the entry point per request

| Caller wants                   | Hit                                                              |
| ------------------------------ | ---------------------------------------------------------------- |
| The decision of record         | The `Workflow` (explicit control flow, inspectable step results) |
| An open-ended question         | A coordinate `Team`                                              |
| An independent multi-view read | A broadcast `Team`                                               |

One AgentOS exposes all three. The surface chooses the shape per request.

## Scheduled research

A scheduled workflow runs the review without anyone asking. Every morning the watchlist is reviewed, the memos are written, and the decisions are waiting.

AgentOS ships the scheduler. Start it with `AgentOS(..., scheduler=True)` and register a cron against the workflow's run endpoint with `ScheduleManager`. See [Scheduling](/features/scheduling).

## Next steps

| Task                           | Guide                                              |
| ------------------------------ | -------------------------------------------------- |
| Add Slack or a browser surface | [Interfaces](/use-cases/product-agents/interfaces) |
| Lock down the endpoints        | [Security and auth](/features/security-and-auth)   |

## Developer Resources

* [Serve as an API](/features/api)
* [AgentOS cookbook](https://github.com/agno-agi/agno/tree/v2.7.4/cookbook/05_agent_os)
* [Scheduling](/features/scheduling)
