Error codes

Tonbo Artifacts orchestrator error responses, with hints.

The orchestrator returns errors as JSON:

{
  "code": "<machine-readable>",
  "message": "<human-readable>"
}

The CLI surfaces both, and adds a one-line hint when applicable.

Authentication

CodeHTTPWhat it meansAction
unauthorized401Missing / invalid bearer tokenRe-run artifacts login; check the JWT hasn't expired.
forbidden403Token valid but lacks permissionThe user (or service token) doesn't own the workspace. Check artifacts workspace list.

Workspaces

CodeHTTPWhat it meansAction
workspace_not_found404Identifier doesn't match an existing workspaceConfirm the <handle>/<name> is right; artifacts workspace list.
workspace_exists409A workspace with that name already exists for this userPick a different name, or artifacts workspace delete <name> first. The 409 body includes an existing field with the live state, which artifacts workspace create uses to resume pending_format automatically.
workspace_not_active409Tried to mount or format-completed against a workspace that's not activeIf pending_format, re-run artifacts workspace create <name> to resume. If deleting / deleted, recreate.
workspace_not_completable409/format-completed called on something other than pending_formatAlmost always means the workspace is already active, in which case the orchestrator returns 200 idempotently via the active short-circuit. If you're seeing this 409, it's likely a stale CLI binary; reinstall.
setting_key_missing422/format-completed called but no setting key in Redis under the workspace prefixPhase 2 didn't actually run, or it ran against a different bucket. Re-run artifacts workspace create.

Mount sessions

CodeHTTPWhat it meansAction
metadata_acl_provisioning_failed500The orchestrator couldn't reach Redis to set up your per-session ACLTransient. Retry in a few seconds. If it persists past 60 s, contact us; there's an alert on our side too.

Validation

CodeHTTPWhat it meansAction
invalid_request422Request body / params don't satisfy the schemaThe message field has the specific complaint, e.g. storage.bucket is required or ttl_seconds must be between 60 and ....

Internal

CodeHTTPWhat it meansAction
internal_error500Unexpected server-side failureRetry once. If it repeats, contact us with the timestamp + your workspace identifier.

Client-side errors

These never have an HTTP code; the CLI surfaces them before the request hits the orchestrator.

SymptomHint
path /mnt/work is already a mount pointartifacts unmount /mnt/work first. The CLI reads /proc/self/mountinfo to detect this.
BYO mode requires ARTIFACTS_S3_ACCESS_KEY_ID and ARTIFACTS_S3_SECRET_ACCESS_KEYExport them in your shell or run artifacts storage set --access-key-id ... --secret-access-key ....
byo_env requires ARTIFACTS_S3_ACCESS_KEY_ID and ARTIFACTS_S3_SECRET_ACCESS_KEY (set them in the environment or run \artifacts storage set`)`Same as above; the cache is also empty.
bad jwt: ... (during login)The token format doesn't match what the orchestrator expects. Check you pasted the whole thing, no truncation.

Bucket / S3 errors during workspace create Phase 2

These come straight from juicefs's S3 backend; the message includes the underlying S3 error code:

What you'll seeLikely cause
Object storage test failed: ... AccessDeniedBucket policy doesn't grant your AK list/get/put.
Object storage test failed: ... NoSuchBucketBucket name typo or wrong endpoint.
Object storage test failed: ... InvalidAccessKeyIdAK/SK pair is wrong or expired.
Object storage test failed: ... SignatureDoesNotMatchRegion mismatch (Tigris uses auto; AWS regions are us-west-1 etc.).

Reproduce locally with aws s3 ls s3://<bucket>/ --endpoint-url <endpoint> to confirm before re-running workspace create.