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

lace-app-sdk

Install the lace-app-sdk

The public contract for building apps on LACE. It re-exports the live platform code instead of copying it.

terminalbash
# Python 3.12+ — base install (pure contracts + CLI, no lace runtime needed)
pip install lace-app-sdk
lace-app --help

# inside the LACE monorepo or your sidecar — full runtime bindings
pip install lace-app-sdk[runtime]

# isolated — recommended for CLI tools
pipx install lace-app-sdk

What the SDK guarantees

  • Shared code — every symbol re-exports the actual platform implementation. The builder and the sidecar run the same code, so SDK updates follow core updates.
  • Stable import path — apps import only lace_app_sdk. A breaking change to a published symbol requires a major version bump with a deprecation window.
  • Governance by default — data, tools, routes, and agents go through the platform services that enforce tenancy, policy, and audit.
  • Works offline — the base install has no lace.* dependency and runs in an air-gapped enclave.

Requirements

RequirementDetails
Python>=3.12 (the SDK's requires-python; older 3.11 pages now outdated)
Base depspydantic>=2,<3 only — no lace, no FastAPI, no heavy ML deps
To publishA LACE tenant + API key with apps:write (see authentication)
To run locally with dataInstall lace-app-sdk[runtime] or run inside the LACE monorepo / your sidecar

The SDK can be installed and explored without a tenant — only publish / push / deploy need one.

Installation options

The wheel is built from src/lace_app_sdk/pyproject.toml as a standalone distribution. The base package includes the pure _contracts layer only. Add the runtime extra when a live lace runtime is available.

InstallWhat works
pip install lace-app-sdkAll contracts, the lace-app CLI (auth, create, clone, open/logs/status/releases), and pure facades. No lace required.
pip install lace-app-sdk[runtime]Plus lace-app dev (migration-apply), lace-app test proof harness, and any symbol that needs the runtime (AppDataService, agent/pipeline engines, blob store).

Installing from a wheel (today)

There is no hosted internal index yet — hosting is a pure ops step (S3-backed simple index, CodeArtifact, or private PyPI). The substance already works from the built wheel directly:

terminalbash
# until a hosted index exists, install from the wheel you build:
python -m pip wheel --no-deps --no-build-isolation \
  --wheel-dir dist_sdk src/lace_app_sdk
pip install dist_sdk/lace_app_sdk-*.whl
lace-app --help

Once published, the same line becomes pipx install lace-app-sdk (or pip install lace-app-sdk) with --index-url — no other mechanics change.

Verify

terminalbash
python3 -c "import lace_app_sdk; print(lace_app_sdk.__version__)"
python3 -c "from lace_app_sdk.manifest import LaceAppManifest; print('contracts ok')"
python3 -c "from lace_app_sdk.data import AppDataCollectionSchema; print('data ok')"
  • lace_app_sdk.__version__ — package version (today 0.1.0.dev0).
  • lace_app_sdk.__lace_core_requires__ == ">=0,<1" — enforced lazily at first runtime touch.
  • Touching a runtime symbol without lace installed prints a legible install with pip install lace-app-sdk[runtime] instead of a bare ModuleNotFoundError.

Troubleshooting

  • lace-app: command not found — ensure the venv's bin is on PATH, or use pipx.
  • ImportError: lace_app_sdk.agents.AgentDefinition requires the LACE runtime — expected on base install; add [runtime] or run inside the monorepo.
  • Python 3.11 — upgrade; the SDK now requires 3.12.

Next: quickstart builds a governed app from four files, or see the SDK itself — facade, not fork.