axhub.yaml Reference

Canonical deploy manifest schema from the current ax-hub-backend manifest domain

axhub.yaml is the deploy contract committed to the app repository. The backend resolver reads axhub.yaml first and falls back to legacy apphub.yaml only for migration. If both exist, axhub.yaml wins.

Minimal example

axhub.yaml
version: axhub/v1
name: hello-axhub
runtime:
  port: 3000
  health_path: /
build:
  strategy: auto
  framework: node
  deploy_method: docker
  dockerfile: Dockerfile
env:
  required:
    - name: DATABASE_URL
      scope: runtime
  optional:
    - name: NEXT_PUBLIC_API_URL
      scope: build
ci:
  commands:
    - npm test
  timeout: 300

All fields are optional. Unset values fall back to DB settings or resolver defaults.

Files and precedence

ItemCurrent contract
canonical filenameaxhub.yaml
legacy fallbackapphub.yaml (migration dual-read only)
max size8 KiB
prioritymanifest > DB AppSpecData > resolver default
deploy resolutionmanifest → Dockerfile → Compose → Railpack auto-detection

Top-level fields

FieldTypeDescription
versionstringDocumented value: axhub/v1. Unknown versions may be accepted for forward compatibility, but known fields are still checked.
namestringDisplay-only label. Not enforced against stored app name.
runtimeobjectPort and health probe path.
buildobjectBuild/deploy method and command hints.
envobjectRequired/optional env names and scopes. Values never live here.
ciobjectPre-build CI commands and timeout.

runtime

FieldTypeLimit
portinteger1–65535. Falls back to Dockerfile EXPOSE or adapter default.
health_pathstringLiveness/readiness probe path. Empty falls back to /.

build

FieldValuesDescription
strategy`autopinned`
framework`nodepython
installstringInstall command for framework presets.
buildstringBuild command.
startstringRuntime start command.
dockerfilepathDockerfile path override.
deploy_method`dockercompose`
compose_filepathCompose file for compose mode. Default docker-compose.yml.

deploy_method is immutable on the app DB row. Changing it usually means recreating the app.

env

The manifest declares env names and scopes only. Store values via axhub env set/update.

env:
  required:
    - name: DATABASE_URL
      scope: runtime
    - name: NEXT_PUBLIC_API_URL
      scope: build
  optional:
    - name: SENTRY_DSN
      scope: both
ScopeInjection
buildbuild args only
runtimepod env only
bothrequired in both channels

Names cannot be empty or contain newline/= characters.

ci

FieldLimit
commandsmax 10
timeout1–600 seconds

CI commands run before the image build. Failure stops the deploy.