The CLI¶
elbi init <name> Scaffold a new project (offline).
elbi serve Serve the chat UI and MCP together on localhost.
elbi mcp Serve derivations over MCP only, no chat UI.
elbi validate Validate the project and derivations against the spec.
elbi cache status Show the local cache location and entry count.
elbi cache clear Clear the cache (optionally --tag <tag>).
elbi --version Print the version.
init¶
elbi init acme-data-context [--template standard|minimal] [--force]
Scaffolds a project and runs offline: nothing is sent anywhere.
serve¶
elbi serve [--host 127.0.0.1] [--port 7700] [--model <model>] [--directory .]
The default way to run a project: a chat UI plus the same MCP endpoint mcp
serves, in one process. Requires the elbi app package; if it is not
installed, prints how to add it.
mcp¶
elbi mcp [--host 127.0.0.1] [--port 7878] [--path /mcp] [--directory .]
Discovers derivations, resolves local data bindings, and serves the project over
MCP only -- no chat UI, no elbi app package needed. Compute runs on
your machine; the serve contract is applied per derivation.
validate¶
elbi validate [--directory .]
Loads the project, imports every derivation (which validates its manifest against
the spec), and warns about dataset inputs not declared in elbi.yaml.
Exits non-zero on any failure.
certificate¶
elbi certificate issue <name> [--version <prefix>] [--issuer <id>] [-o <file>]
elbi certificate verify <file> [--public-key <key-or-.pub-file>]
elbi certificate chain [--path <audit.jsonl>]
elbi certificate public-key
Issues, verifies, and inspects signed verification certificates and
the hash-chained audit log. verify and chain run fully offline, no project needed.
update¶
elbi update
elbi update --apply # run the upgrade instead of printing it
elbi update --pre # consider pre-releases
elbi update --quiet # silent when current, exit 1 when not
Asks PyPI whether a newer release exists, and prints the command that upgrades this
particular install: uv tool upgrade, pipx upgrade, pip install --upgrade, or the
compose command inside a container. Where the project publishes release notes, it links
them, so you can see what changed before deciding.
--apply runs the command, handing the process to the installer with exec so nothing
of Elbi is running while its files are replaced. It refuses a command that needs a shell
and prints it instead.
Other commands reach the network too. sync, pull, plan, upload and run all
talk to your running app. This is the only one that contacts anything outside your own
infrastructure, and it does so only when you type it: nothing checks at startup or on a
timer. --quiet prints nothing when you are current and exits non-zero when you are
not, for use in a script.
See Upgrading for the whole picture.