> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsonic.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Example agents

> Working agents that show each part of the contract: models, approvals, state, sessions, streaming, files, memory, evals and the SDKs.

AgentOS comes with a set of example agents. Each is a complete bundle (`Dockerfile`, `agentos.yaml`, code) you can zip and [deploy](https://docs.upsonic.ai/agentos/platform/deploying.md) as it is, then read to see how a feature is done.

> [!NOTE]
>
> Agents that call a model name one in `config.models` (for example `main: anthropic/claude-sonnet-4-5`). Before you upload one, change it to a model from your environment's **Models** page: `<provider slug>/<model ID>`. See [Models](https://docs.upsonic.ai/agentos/build/models.md).

## Without an SDK (plain HTTP)

These use only the Python standard library, so they show every platform call as raw HTTP. Read them if you are writing an agent in a language without an SDK.

> **hello-agent**
>
> The smallest agent that follows the contract: one capability, `echo`, that returns its input. Used in the [Quickstart](https://docs.upsonic.ai/agentos/get-started/quickstart.md).

> **llm-agent**
>
> `ask`: answers a question with one model call through the gateway, using the run token, and posts an event to the run's timeline. See [Models](https://docs.upsonic.ai/agentos/build/models.md).

> **review-agent**
>
> `pay_invoices` asks a person to approve, edit or reject payments and keeps its progress in run state; `chat` keeps a conversation's history in session state; `split` starts one child run per invoice. See [Human approvals](https://docs.upsonic.ai/agentos/build/human-approvals.md).

> **stream-agent**
>
> `chat` streams a model's answer as a Vercel AI SDK UI message stream and reports the run's result itself; `confirm` asks a person mid-stream. Start it with `?passthrough=true` and a chat UI reads the stream as it is. See [Streaming](https://docs.upsonic.ai/agentos/build/streaming.md).

## With the SDKs

> **py-sdk-agent**
>
> review-agent and llm-agent rewritten with the [Python SDK](https://docs.upsonic.ai/agentos/build/sdks.md): approvals, run, session and agent state (with compare-and-set), child runs, a model call, an event, a file upload, a streamed answer (`tell`) and notes kept per end user in memory (`notes`).

> **ts-sdk-agent**
>
> The same capabilities with the [TypeScript SDK](https://docs.upsonic.ai/agentos/build/sdks.md), on Node 24.

> **file-agent**
>
> `inspect` takes any file (and an optional second one), downloads it with the run token and returns its type, size, SHA-256 and the start of its text. No model call. Good for trying file inputs on the Run tab. See [Files and events](https://docs.upsonic.ai/agentos/build/files-and-events.md).

> **ocr-agent**
>
> `extract` reads a (fake) Turkish company document image with a vision model and returns its fields. The model is `config.models.reader`, so an experiment can compare vision models. Comes with a script that generates sample documents and their expected answers. See [Evals](https://docs.upsonic.ai/agentos/platform/evals.md).

> **math-agent**
>
> `solve` answers a math question with a single number, so a reference evaluator can compare it as a number. A minimal agent for trying [evals](https://docs.upsonic.ai/agentos/platform/evals.md) and model comparisons.

## Framework examples

The SDKs also include one small agent per [framework adapter](https://docs.upsonic.ai/agentos/build/frameworks.md), each with a payment that waits for a person:

| Framework | Capability | How it asks |
| - | - | - |
| OpenAI Agents SDK | `pay_supplier` | a `pay` tool with `needs_approval=True` |
| LangGraph | `approve_payment` | `interrupt()` in a review node |
| Agno | `pay_supplier` | a `pay` tool with `requires_confirmation=True` |
| Vercel AI SDK | `pay_supplier` | `toolApproval: {pay: "user-approval"}` |
| Mastra | `approve_payment` | a workflow step's `suspend()` |

## File inputs

`file-agent` and `ocr-agent` declare their file inputs as `{type: string, format: file}` in the input schema (`ocr-agent` adds `contentMediaType: "image/*"`). The panel's **Run** tab then shows an upload for the field, and the value the agent receives is a file id it downloads with the run token.

## Conformance cases

`llm-agent`, `review-agent`, `stream-agent`, `py-sdk-agent` and `ts-sdk-agent` each have a `conformance.yaml` next to their `agentos.yaml`: a good starting point for your own. See [Conformance kit](https://docs.upsonic.ai/agentos/build/conformance.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.