Skip to main content
Every publishable repo declares its runtime contract in a repo-root manifest named dari.yml.

Example

TypeScript repo:
name: support-agent
sdk: opencode
entrypoint: src/agent.ts:agent

runtime:
  language: "typescript"
  version: "20"
  timeout_seconds: 1800

retries:
  max_attempts: 3

secrets:
  - OPENAI_API_KEY
  - INTERNAL_API_TOKEN

env:
  APP_ENV: production
Python repo:
name: support-agent
sdk: openai-agents
entrypoint: agent.py:agent

runtime:
  language: "python"
  version: "3.11"
  timeout_seconds: 1800

retries:
  max_attempts: 3

secrets:
  - OPENAI_API_KEY
  - INTERNAL_API_TOKEN

env:
  APP_ENV: production

Required fields

FieldDescription
nameHuman-readable agent name
sdkSDK selection. Supported values are openai-agents, claude-agent-sdk, and opencode
entrypointEntrypoint to invoke, such as agent.py:agent or src/agent.ts:agent

Optional sections

SectionDescription
runtimeExecution settings such as language, version, and per-message execution timeout
retriesDefault retry policy for message execution
secretsPlatform-managed secret names to inject at runtime
envNon-secret environment variables

Field behavior

sdk

sdk selects the SDK integration for the agent. The public API remains the same across supported SDKs.

entrypoint

entrypoint identifies the entrypoint the runtime should invoke. Keep it stable across publishes unless you are intentionally changing agent behavior.

runtime

Use runtime for execution settings. Representative values include:
  • language
  • version
  • timeout_seconds
timeout_seconds is the maximum runtime for a single message execution. It does not limit the lifetime of the session itself. If a message reaches timeout_seconds, that turn stops and returns a terminal message status. The session remains addressable and can accept later messages unless it has been explicitly completed or expired. After a timeout or a long idle period, the next message may run on a freshly started runtime, so that turn can include cold-start latency.

retries

Retry policy is platform-managed. Message attempts follow the manifest policy instead of requiring client-side retry orchestration.

secrets

List secret names only. Secret values never belong in the manifest.

env

Use env for non-secret runtime configuration that should be available to the running agent.

Recommendations

  • Keep the manifest minimal and explicit
  • Put only stable, repo-owned runtime configuration in the manifest
  • Treat secrets as references to platform-managed values
  • Publish a new version for source changes instead of mutating a running session