Skip to content

Runtime, Health, and Network Profiles

Fields and defaults for runtime, health-check, and network profiles.

Updated View as Markdown

Stable identifier

A Resource owns three kinds of persistent profiles: Runtime Profile, Health Profile, and Network Profile. They all belong to the Resource itself, not to any single deployment’s temporary parameters — saving a profile does not immediately restart a running workload, it only affects the planning input used by future deployments.

Runtime Profile

Describes how to build and start the app.

FieldDescriptionDefault
strategyauto / static / Docker/OCI, and other runtime strategiesAttempts auto-detection
Install / Build commandsDependency install and build commandsDerived from detection, or must be provided explicitly
Start command / image entrypointProcess or container entrypoint to startDerived from detection, or must be provided explicitly
Publish directoryStatic site publish directoryNo default; required under the static strategy
appaloft resource configure-runtime res_web \
  --strategy static \
  --build-command "bun run build" \
  --publish-directory dist

Health Profile

Decides how the Verify phase determines whether the app is usable — it should match the real access path, not just check whether a process exists.

FieldDescriptionDefault
Check typeMainly HTTP todayFalls back to a weaker process-liveness check when unconfigured
PathFor example /healthNo default
Expected status codeFor example 200200
interval / timeout / retries / start periodCheck frequency and tolerance windowSee the example defaults below
appaloft resource configure-health res_web \
  --path /health \
  --method GET \
  --expected-status 200 \
  --interval 5 \
  --timeout 5 \
  --retries 10 \
  --start-period 15

# Reset to no custom health policy (doesn't affect runtime commands or network config)
appaloft resource reset-health res_web

Network Profile

Describes the app’s listening port, protocol, and proxy target — answering “where should the proxy forward requests.” Binding a custom domain is a separate Access configuration and is not part of this profile.

FieldDescriptionDefault
Internal listening portThe port the app actually listens on inside the containerFixed at 80 for static deployments; must be configured explicitly for SSR/HTTP services
ProtocolMainly HTTP todayhttp
Exposure modeWhether it needs a reverse proxy to be reached externallyreverse-proxy
appaloft resource configure-network res_web \
  --internal-port 3000 \
  --upstream-protocol http \
  --exposure-mode reverse-proxy

Error and recovery hints: Profile drift

Profile drift means the Profile currently saved on the Resource, the Profile in the repository’s config file, and the Profile in the most recent deployment snapshot disagree with each other — typically it happens after a resource already exists and part of it gets edited separately from repository config, a GitHub Action, CLI arguments, or the Web console.

Troubleshooting steps:

  1. Run appaloft resource show res_web --json to view the structured diagnostics and identify which section (source / runtime / network / health / access) is inconsistent.
  2. Follow the diagnostics to run the matching configure-source / configure-runtime / configure-network / configure-health command.
  3. Trigger a new deployment after updating — historical deployment snapshots are never retroactively modified.

Secrets and configuration values are always masked in diagnostics and logs; when troubleshooting, rely only on the key, scope, and suggested command — never try to recover the plaintext value.

Example

A full health-check configuration response looks like:

GET /api/resources/res_web/health-profilejson
{
  "type": "http",
  "path": "/health",
  "expectedStatus": 200,
  "intervalSeconds": 5,
  "timeoutSeconds": 5,
  "retries": 10,
  "startPeriodSeconds": 15
}
Navigation

Type to search…

↑↓ navigate↵ selectEsc close