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.
# 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
| Requirement | Details |
|---|---|
| Python | >=3.12 (the SDK's requires-python; older 3.11 pages now outdated) |
| Base deps | pydantic>=2,<3 only — no lace, no FastAPI, no heavy ML deps |
| To publish | A LACE tenant + API key with apps:write (see authentication) |
| To run locally with data | Install 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.
| Install | What works |
|---|---|
pip install lace-app-sdk | All 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:
# 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
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 (today0.1.0.dev0).lace_app_sdk.__lace_core_requires__ == ">=0,<1"— enforced lazily at first runtime touch.- Touching a runtime symbol without
laceinstalled prints a legible install withpip install lace-app-sdk[runtime]instead of a bareModuleNotFoundError.
Troubleshooting
lace-app: command not found— ensure the venv'sbinis onPATH, or usepipx.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.