Skip to content

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¤

Run the local ingest server:

uv run jdsl harness serve

List and inspect captures:

uv run jdsl capture list
uv run jdsl capture inspect cap_retail

Import generic JSONL traces:

uv run jdsl capture import runs.jsonl --capture cap_imported

Compile:

uv run 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.