CLI¤
The jdsl command covers runtime execution, provider config, capture,
compilation, and package execution.
Runtime Commands¤
Render a skill without executing it:
uv run jdsl show examples/gate.py
Run every module-level root(...) skill in a file:
uv run jdsl run examples/greeter.py
uv run jdsl run examples/gate.py -i role=admin
Inputs use repeated key=value flags. Values arrive as strings unless your tool
or model leaf converts them.
Provider Config¤
uv run jdsl config add -p deepseek sk-...
uv run jdsl config list
Stored keys live at ~/.local/share/recon/auth.json. config list masks key
values before printing them.
Harness Commands¤
Remove a curl-installed JDSL CLI while preserving captures and credentials:
jdsl uninstall
jdsl uninstall --yes
For older installations that do not have the command yet, use the installer directly:
curl -fsSL https://cantorindustries.com/jdsl-py/install.sh | bash -s -- --uninstall
Open the interactive harness dashboard:
jdsl tui
The dashboard starts the local server, creates captures, inspects lineage, and compiles packages. See Harness TUI for the host-plugin handoff.
Run the local ingest server:
jdsl harness serve
List and inspect captures:
jdsl capture list
jdsl capture inspect cap_retail
Import generic JSONL traces:
jdsl capture import runs.jsonl --capture cap_imported
Compile:
jdsl compile cap_imported --name retail --out retail.jdsl
Package Commands¤
Inspect package metadata and declared effects:
uv run jdsl package inspect retail.jdsl
Verify package structure and file digests:
uv run jdsl package verify retail.jdsl
Run a package against trusted host tools:
uv run jdsl package run retail.jdsl --tools tools.py \
-i email=ada@example.com \
-i request="cancel my order"
Use --model <model-id> when the package contains residual model leaves.
Exit Behavior¤
Invalid config, missing skills, malformed inputs, missing tool bindings, invalid
packages, and failed verification exit non-zero. Runtime tool exceptions
propagate unless you encode recoverable failure as Status.FAILURE and handle it
with a selector.