Channels and formats
deploy prints one final text report to stdout, containing its execution
record followed by the state it could report. status prints the state and,
if its read fails, an error block. service delete and volume delete print
their outcome or the same error block, and ask their confirmation question on
stderr. These reports are text; plan --json is the JSON output. Help and
argument-parsing errors go to stderr and leave stdout empty.
Deployment progress uses stderr. By default, a terminal with usable width
gets a live display that clears when the run ends. UNIAC_PROGRESS=1 streams
plain progress lines; UNIAC_PROGRESS=0 turns progress off. These settings
affect stderr only, and progress display applies to deploy.
link writes its listing, prompt and confirmation to stderr, including when
deployment opens the picker. Other commands write results to stdout and
errors to stderr. A failure to render a status report can also write stderr.
Plan output
The text preview names the local project and root directory, its optional description, and the digest of its complete generated description. It then shows shared image work underBuilding and named services under
Deploying. Service rows include sources, declared public exposure, volumes
and a declared replica count, grouped by package for a workspace. --full
adds environment values, the start command, and the source definition’s
name.
plan --json emits {project, digest, deployable, declarations}. project
contains root_dir, name, optional description, and packages with each
package’s relative path. The root package is .. declarations associates
each service with its package, its deployment declaration, which has the
service’s name, and its from definition.
deployable is the complete generated service description.
Environment and start-command fields are included whether or not --full
is supplied. Composition in YAML defines the generated
description and what its digest identifies.
Deployment record
The root line names the local project. Its children reportplan,
link, build, push <service>, submit <service>, and observe <service>.
They include the digest of the generated description, project slug, image
count, pushed image digest and observed status when available. Displayed
digests are shortened, and image references and digests appear in the record
section.
✓ marks completion and ✗ marks failure. On failure, the root line carries
an error code and the failed stage includes its retained progress and error
message. An interruption
is classified under the stage in flight, and a nonzero exit can still leave
a report and project or service rows.
Per-service release outcomes
Eachrelease block identifies the service, its package and its deployment
declaration. It records whether the image was pushed, the
submission outcome, returned deployment and task IDs, whether service state
was read, and any failure phase or warnings.
Failures retain earlier receipts and identify later unattempted work. An
image push, accepted request, or cancellation does not establish the state
of the running service. Releasing again starts a new operation.
State rows
Service state is explained in Service observation, public addresses in Networking, and durable storage state in Volume lifecycle.
The endpoint address is the complete address a client uses. A TCP address
includes its allocated public port; the number after
→ is the container
port. Columns align within each block, so their character offsets vary.
Whole-project status lists services in name order and adds project volume
blocks after them. Each volume block has its name, size in GB and state,
including the holding service when available. deploy and single-service
status show service mounts; whole-project status also lists unattached
volumes.
Partial observations and warnings
HTTP 401 or 403 from the platform or project API fails the command. The following observation fallbacks apply to other errors. A failed service-detail read during whole-projectstatus leaves that
service’s name and summary status but omits its additional details. A failed
volume read omits the volume section. Either can occur with exit 0. Missing
rows therefore do not establish that the corresponding remote facts are
absent.
When deployment otherwise succeeds but its read of a service’s final state
fails, it reports state unread as a warning. A failed local release-record write produces
release record not written: <error>; the remote deployment remains in place.
These warnings leave the exit code unchanged. A name-only service row means
registration was accepted but service state was not read; it does not
establish a running service. Rejected and unattempted submissions appear in
release outcomes only.
Platform warnings are passed through, including unresolved
environment references.
Deletion output
A successfulservice delete prints its first line below, and the second for
a volume the service held; a successful volume delete prints the third:
on <platform-url> follows the
project name. A failure prints the error block below.
Errors and exit codes
Astatus error block contains error <code>, a human-readable message
and retryable yes when reported. Deployment puts the code on the root line
and annotates a retryable failure there. retryable means the same operation
may succeed without changes; error messages are explanatory prose.
The following exit codes apply to deploy, status, service delete and
volume delete:
These commands use the codes above. Some conditions use a code whose name
describes only part of the cause:
statuswithout a binding or target override exits 4 when a credential is available; without a usable credential it exits 3.- Deployment’s project picker reports unanswered-input failures as 70; no projects produces 4.
- Missing build directories or Dockerfiles produce 5 during planning; Dockerfile or daemon failures during image work produce 6.
- Platform/project API HTTP 401 produces 3; HTTP 403 during project checks, registration or observation produces 8. Docker registry credential rejection remains a push failure (7).
- A deployment observation deadline produces 8 while the accepted work continues. After a successful first task read, later task-read failures fail the command using these classifications.
- Project checks, status reads and deployment push/request operations classify transport errors and HTTP 502, 503, 504, 521, 522, 523 and 530 as unreachable (9). Other refused API reads, including HTTP 500, produce 8.
plan and 5 under
deploy. Bare or unknown invocations exit 2; help and version exit 0.
Getting help
- docs.uniac.ai is the current documentation; its index lists every page.
- The Uniac Discord community is where people ask for help with a deployment.
- support@uniac.ai handles account matters.

