Deploy
Deployment, status, logs, rollback, staging, and verification commands
This page is for running deploys, watching their progress, digging into failures, and rolling back when something goes wrong. The everyday flow is deploy create --execute → deploy status (or deploy watch) → and, when there's a problem, deploy diagnose · deploy logs. Agents and CI can settle the final success/failure verdict inside a single call with deploy verify --wait. The full picture of the deploy pipeline plus staging and rollback strategy is covered in the deploy guide.
axhub deploy
Deploy apps via git, view deployments, logs, status, and rollback.
| Flag | Type | Description | Default |
|---|---|---|---|
--explain | boolean | Explain the local deploy spec from axhub.yaml without contacting the server | — |
axhub deploy cancel
Cancel an in-progress deployment (dry-run by default; use --execute).
| Flag | Type | Description | Default |
|---|---|---|---|
<deployment_id> | string (positional) | — | — |
--app | string | App slug or ID to operate on. | — |
--dry-run | boolean | Preview only. Cancel is honored by the backend at deployment stage boundaries, so an in-flight build can take several minutes to flip to cancelled after --execute | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
axhub deploy codes
List deployment status codes and their meanings.
(no options)
axhub deploy create
Trigger a deployment for an app (dry-run by default; use --execute).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--commit | string | — | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
--force-rebuild | boolean | — | — |
--no-retry | boolean | Disable timeout auto-retry for this mutation | — |
axhub deploy diagnose
Diagnose an app's live rollout health.
| Flag | Type | Description | Default |
|---|---|---|---|
<app> | string (positional) | App slug or ID to operate on. | — |
axhub deploy doctor
Diagnose an app's deployment readiness.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
axhub deploy explain
Explain how axhub deploy resolves config, auth, and the target app.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
axhub deploy fleet
Deploy a fleet of apps in parallel (dry-run by default; use --execute).
| Flag | Type | Description | Default |
|---|---|---|---|
--apps | string | Comma-separated app slug/id list | — |
--commit | string | Commit SHA to deploy for every app | — |
--concurrency | integer | Maximum apps deployed in parallel | 10 |
--dry-run | boolean | Dry-run preview is the default | true |
--execute | boolean | Execute all deployment mutations | — |
--tenant | string | Tenant slug/id for diagnostics and future backend quota preflight | — |
axhub deploy git
Manage an app's git deployment connection.
axhub deploy git configure
Configure an app's git deployment connection (dry-run by default; use --execute).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--branch | string | — | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
--installation-id | integer | — | — |
--repo | string | — | — |
--update | boolean | — | — |
axhub deploy git connect
Connect an app to its configured git repository.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
axhub deploy git disconnect
Disconnect an app from its git repository.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
axhub deploy git status
Show an app's git connection status.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
axhub deploy list
List an app's deployment history.
| Flag | Type | Description | Default |
|---|---|---|---|
--all | boolean | — | — |
--all-apps | boolean | — | — |
--app | string | App slug or ID to operate on. | — |
--ndjson | boolean | — | — |
--page | integer | Pagination control for list output. | — |
--page-size | integer | Pagination control for list output. | — |
--per-page | integer | Pagination control for list output. | — |
axhub deploy logs
View logs for a deployment.
| Flag | Type | Description | Default |
|---|---|---|---|
<deployment_id> | string (positional) | Legacy deployment id. Runtime logs are now scoped to the app-level backend logs route | — |
--app | string | App slug or ID to operate on. | — |
--follow | boolean | — | — |
--limit | integer | Page size (1-1000, default 100) | — |
--reconnect-attempts | integer | Poll additional cursor pages this many times in follow mode | 0 |
--since | string | Show logs since this time (RFC3339) | — |
--source | string | Accepted for compatibility; app logs are not server-side filtered | — |
--until | string | Show logs until this time (RFC3339) | — |
axhub deploy promote
Manage staging promotions.
axhub deploy promote retry
Retry a failed promotion request (dry-run by default).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
--request | string | — | — |
axhub deploy promote-preflight
Preview staging promotion changes without side effects.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--deployment-id | string | — | — |
axhub deploy releases
List an app's release history.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--limit | integer | Maximum releases to request | — |
--offset | integer | Offset into release history | — |
axhub deploy rollback
Roll back to a previous deployment (dry-run by default; use --execute).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--confirm-schema-skew | boolean | Acknowledge that rollback does not revert already-applied destructive schema changes | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
--from-deployment | string | — | — |
axhub deploy scan
Show a deployment's security scan report. The verdict is one of four — pass · blocked · scanner_error · not_scanned — where not_scanned means there is no evidence yet: you get an empty report, not a 404. With --json you get the full report including the agent-opinion entries.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App id or slug. Required unless a subcommand is used | — |
--deployment-id | string | Deployment UUID (from axhub deploy list) | — |
Consent for the scan pipeline sending source code to an external LLM reviewer is managed with axhub apps inspection-consent. LLM opinions are advisory; blocking verdicts come from the deterministic scanner.
axhub deploy scan report-false-positive
Report one scan finding as a false positive. It is feedback only and does not change the scanner verdict — a blocked deployment stays blocked.
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App id or slug | — |
--deployment-id | string | Deployment UUID that produced the finding | — |
--finding-id | string | Finding id from the scan report (findings[].id, <scanID>.<ordinal>), not the rule id | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
axhub deploy staging
Manage an app's staging environment.
axhub deploy staging disable
Disable an app's staging environment (dry-run by default).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
axhub deploy staging enable
Enable an app's staging environment (dry-run by default).
| Flag | Type | Description | Default |
|---|---|---|---|
--app | string | App slug or ID to operate on. | — |
--dry-run | boolean | Preview the operation without applying state changes. | true |
--execute | boolean | Apply the state-changing operation instead of previewing it. | — |
axhub deploy status
Show the latest deployment status for an app.
| Flag | Type | Description | Default |
|---|---|---|---|
<deployment_id> | string (positional) | — | — |
--app | string | App slug or ID to operate on. | — |
--watch | boolean | — | — |
--watch-interval | string | Poll interval such as 2s, 10s, 1m. Requires a unit suffix (s, m, h) | — |
--watch-timeout | string | Maximum watch duration such as 30m, 1h. Requires a unit suffix (s, m, h) | — |
axhub deploy verify
Verify that a specific deployment finished successfully (배포 검증).
| Flag | Type | Description | Default |
|---|---|---|---|
<deployment_id> | string (positional) | 검증할 배포 ID (필수). 이 ID 의 배포만 판정하고, 최신 배포를 다시 찾지 않아요 | — |
--app | string | 배포가 속한 앱 (slug 또는 UUID) | — |
--wait | boolean | 같은 배포 ID가 끝날 때까지 이 명령 안에서 제한적으로 기다려요. 예산이 끝나면 기존 pending JSON · exit 6 계약 그대로 반환해요 | — |
--wait-interval | string | --wait 확인 간격. 예: 2s, 10s, 1m (1s~60s) | 10s |
--wait-timeout | string | --wait 최대 대기 시간. 예: 10m, 1h (최대 24h) | 10m |
axhub deploy watch
Watch a deployment until it reaches a terminal state.
| Flag | Type | Description | Default |
|---|---|---|---|
<deployment_id> | string (positional) | Deployment id to watch | — |
--app | string | App id or slug | — |
--no-tui | boolean | Force flat output. TUI support is reserved for a future visual pass | — |
--reconnect-attempts | integer | Retained for compatibility (no-op for watch streaming). Unlike deploy logs, this does NOT keep the stream alive under a non-interactive/agent context — use --watch-interval/--watch-timeout for an explicit bounded stream. Polling otherwise continues until terminal status or timeout | 3 |
--source | string | Log label: build, pod, events, pod-events, or all. Backend app logs are not source-filtered | all |
--watch-interval | string | Status poll interval such as 2s, 10s, 1m. Currently used for validation/future TUI polling | — |
--watch-timeout | string | Maximum watch duration. Defaults to 30m | — |