Skip to content

App manifest

yaml
schemaVersion: 1
appId: 6f9619ff-8b86-4e6e-a62a-889950f42d3e
version: 2026.07.28-1
frontend:
  directory: frontend
  spa: true
runtime:
  javascriptSdk:
    version: 0.2.2
storage:
  authorization: owner-prefix
migrations:
  - id: 0001_create_items
    file: migrations/0001_create_items.sql
functions:
  - name: summarize
    entrypoint: functions/summarize/index.ts
    verifyJwt: true
cron:
  - name: hourly-summary
    schedule: "0 * * * *"
    function: summarize
    enabled: true
health:
  path: /
requiredSecrets:
  - AI_API_KEY
observability:
  metrics:
    - name: items_created
      type: counter
      unit: items
      dimensions:
        actor_type:
          values: [member, admin]
    - name: overdue_items
      type: gauge
      unit: items

Fields

FieldRules
schemaVersionMust be 1
appIdAssigned UUID; must match the deploy target
versionUnique per deployment; 1–80 safe characters
frontend.directoryRelative directory containing index.html
frontend.spaEnables index.html fallback
runtime.javascriptSdk.versionExact installed SDK version pinned to this deployment
storage.authorizationapp or owner-prefix; default app
migrationsOrdered, append-only IDs and relative SQL files
functionsUnique logical names, entrypoints, and JWT mode
cronUnique names, valid UTC schedules, declared Function targets
health.pathSame-origin path beginning with /
requiredSecretsNames only; uppercase identifier format
observability.metricsOptional deployment-pinned counter/gauge catalog; at most 20 metrics

Custom metric names use lowercase snake_case. A metric can declare at most three dimensions, and each dimension must list at most 20 allowed values. Arbitrary strings, IDs, emails, URLs, and object keys are not valid dimensions. Counters support non-negative increments; gauges record a current value.

Do not write migration checksums. The CLI computes SHA-256 values and emits the canonical opencloud.json inside the archive.

Use an exact SDK version, never latest or a range. The CLI resolves an omitted pin once while building a legacy author manifest, but new manifests should be explicit. Publishing a newer SDK does not change an existing deployment.

Only manifest-reachable files deploy. Reports, briefs, verifier specifications, and local tests remain outside the artifact.

Self-hosted infrastructure for agent-built applications.