Overview
Every AO project needs anao.toml file in the project root. Run ao init to generate one automatically.
Full example
Fields
name
Optional. The name of your project. Must be at least 3 characters, lowercase.
If you don’t declare the name, a random name will be generated for each deployment which is not desired.
framework
Optional. The framework your agent uses. AO uses this to inject the right runtime wrapper around your code.
langgraph.json and injects the graph at runtime — no extra wiring needed.
entrypoint
Required. Path to your agent’s main Python file, relative to the project root.
python
Optional. The python version used on your project. The default is 3.11.
[runtime]
Controls retry and timeout behavior for every run.
max_retries
Number of times AO will retry a failed run before marking it as failed. Uses exponential backoff between attempts.
- Default:
3 - Type: integer
timeout
Maximum time in seconds a single run is allowed to execute. If exceeded, the container is killed and the run is retried.
- Default:
300(5 minutes) - Type: integer
[schedule] (optional)
Run your agent automatically on a schedule.
cron
A standard cron expression defining when to run the agent.
Cron expression reference
Use crontab.guru to build and test cron expressions.
Environment variables
Your agent has access to these environment variables at runtime:| Variable | Description |
|---|---|
AO_RUN_ID | Unique ID for the current run |
AO_ATTEMPT | Current attempt number (1-indexed) |
AO_LAST_ERROR | Error message from the previous failed attempt, if any |
AGENT_INPUT | JSON object with the input passed via ao run --input |