X-API-Key header set to your ENVIRONMENT_API_KEY (run uvx synth-ai setup to provision credentials).
RL task apps must supply a fully populated TaskAppConfig so trainers can enumerate environments, request seeds, and execute rollouts.
Core contract
app_id,name,description: identifiers surfaced by/and/info.base_task_info: TaskInfodescribing the task, environment, dataset split, rubrics, inference target, limits, and any task-specific metadata.describe_taskset()→ returns the taskset descriptor consumed when/task_infois called without aseed.provide_task_instances(seeds)→ yields aTaskInfofor every requested seed; expect seeds0..9during validation.rollout(request, http_request)→ executes the environment and returns aRolloutResponse.
pipeline_metadata.inference_urlmust include a?cid=parameter.- Every step’s
info.meta.inference_urlmust reproduce the same correlation id so traces join with inference logs. - Populate legacy
trajectoriesalongside the v3tracepayload until trainers drop the old format. - Set
metrics,branches, andops_executedaccurately; downstream evaluation relies on these aggregates.
- Honour
TASKAPP_TRACING_ENABLED; the CLI toggles this when users request tracing. - When
TASKAPP_SFT_OUTPUT_DIRis present, emit JSONL snapshots viaunique_sft_pathto support offline analysis. - Respect
TURSO_LOCAL_DB_URL/SQLD_DB_PATHwhen persisting traces to a local database.
- If you expose OpenAI/Groq proxy routes, configure
proxyonTaskAppConfigand ensure vendor keys are available vianormalize_vendor_keys().
- Provide a Modal app module (
modal.App,@modal.asgi_app) plus aModalTaskAppConfig(CLI binary, app name, mounts, secrets) when deploying to Modal. - The Modal image must mount the repo and receive
ENVIRONMENT_API_KEYvia inline secret or Modal Secret.
- /
- Method: GET
- Returns:
- /health
- Method: GET
- Returns:
- /info
- Method: GET
- Returns:
- /task_info
- Method: GET
- If no seed param, returns:
- If seed param, returns:
- /rollout
- Method: POST
- Returns: