Skip to main content
Tasks and services automate the repetitive work of setting up and operating development environments: seeding databases, starting servers, running tests, authenticating with cloud providers. Define it once and it runs automatically or on-demand. For agents, tasks and services are essential. When Ona can run npm test or docker compose up reliably, it can iterate autonomously without human intervention. Tasks and Services in environment details

Tasks vs Services

Services are long-running processes that stay active throughout your session:
  • Databases (PostgreSQL, MySQL)
  • Backend and frontend servers
  • Caching systems (Redis)
Tasks are one-off actions that run and complete:
  • Installing dependencies
  • Running tests
  • Seeding databases
  • Authenticating with cloud providers

Quick example

# .ona/automations.yaml
services:
  database:
    name: PostgreSQL
    commands:
      start: docker compose up -d postgres
      ready: pg_isready -h localhost
    triggeredBy:
      - postDevcontainerStart

tasks:
  seed:
    name: Seed database
    command: npm run db:seed
    dependsOn:
      - database
    triggeredBy:
      - postDevcontainerStart

  test:
    name: Run tests
    command: npm test
    triggeredBy:
      - manual
This configuration:
  1. Starts PostgreSQL when the environment starts
  2. Waits until the database is ready
  3. Seeds the database with test data
  4. Makes “Run tests” available as a manual action

Triggers

Control when tasks and services run:
TriggerServicesTasksWhen it runs
manualOn-demand via the CLI or UI
postDevcontainerStartAfter the Dev Container starts in a user environment (first start or rebuild). Does not fire during prebuilds.
postEnvironmentStartEvery time the environment starts or resumes
prebuildDuring prebuild execution only (no user secrets available). Does not fire in user environments.
beforeSnapshotBefore an environment snapshot is created
See automations.yaml schema for complete trigger documentation, including how triggers interact with prebuilds.

Run automations across repositories

Tasks and services run within individual environments. For cross-repository automation at scale (migrations, security scanning, bulk updates), see Automations.

Next steps