Skip to content
LACE
  • v0.1 Current
  • Python
  • TypeScript Soon

lace-app-sdk

lace-app CLI reference

One binary for the whole app lifecycle — from credential setup to rollback. Ships with the lace-app-sdk wheel.

Install: pip install lace-app-sdk (or pipx install lace-app-sdk). Verify with lace-app --help. Source: src/lace_app_sdk/cli.py (verb set D6, APB-019/020).

Auth — lace-app auth

terminalbash
lace-app auth login --api-url https://api.laceplatform.com --api-key $LACE_API_KEY
lace-app auth status
lace-app auth whoami # GET /v1/auth/whoami
CommandWhat it does
auth login --api-url URL --api-key KEYStore credentials in ~/.config/lace/credentials.toml (mode 0600). Supports --profile NAME.
auth statusShow whether credentials exist (redacted key).
auth whoamiGET /v1/auth/whoami — tenant, principal, scopes.

Env & config

terminalbash
# env overrides (no login needed in CI):
LACE_API_URL=https://api.laceplatform.com
LACE_API_KEY=lace_sk_...

# config file (written by auth login, mode 0600):
~/.config/lace/credentials.toml
#   [profile.default]
#   api_url = "https://api.laceplatform.com"
#   api_key = "lace_sk_..."

Resolution order: LACE_API_KEY env → credentials file. LACE_API_URL env → credentials file → http://localhost:8000. Every command that talks to the API exits with a clear Not logged in. Run: lace-app auth login if no key resolves.

All verbs

VerbSignatureCalls
createlace-app create <app-id> [--name NAME] [--dir DIR]POST /v1/apps then GET /v1/apps/{app_id}/git-credential + scaffold
clonelace-app clone <app> [--dir DIR]GET /v1/apps/{app_id}/git-credential + git clone via ephemeral helper
devlace-app dev [--port PORT] [--dir DIR]Local compose + runtime emulator; needs [runtime] for migrations
testlace-app test [--dir DIR] [--json]Proof harness (needs [runtime])
pushlace-app push [--app-id ID]Upload + poll CI releases (APB-023 will add streaming)
deploylace-app deploy [--dir DIR] [--cloud]Seal → upload/register/activate, no CI
openlace-app open <app-id>Open /apps/<app_id>/ in the browser
logslace-app logs <app-id> [--lines N]GET /v1/apps/{app_id}/logs
statuslace-app status <app-id>GET /v1/apps/{app_id} + latest release
releases listlace-app releases list <app-id>GET /v1/apps/{app_id}/releases
releases rollbacklace-app releases rollback <app-id> <rel>POST /v1/apps/{app_id}/releases/{rel}/rollback
secrets setlace-app secrets set <app-id> <key> <value>PUT /v1/apps/{app_id}/secrets/{key} (server-side)

Common patterns

  • CI: set LACE_API_URL + LACE_API_KEY env, then lace-app push or lace-app deploy --cloud. No auth login needed.
  • Local dev without publish: lace-app dev after any create or clone.
  • Debug a live sidecar: lace-app statuslace-app logs --lines 500.

Exit codes

0 = success, 1 = error (auth missing, proof lane failed, API error). Failed API calls print detail from the JSON error body.

Next: module reference or publishing.