Procedure out
of the prompt.

Build agents where procedure is deterministic and judgment is explicit.

Triage as a tree. The path is fixed; only predict calls a model.
The JDSL editor showing triage.jdsl: a behavior tree with a root sequence, a predict node, and a selector that routes to billing, support, or human escalation.
triage.jdsl open in the JDSL editor. It's the same tree as the code example below.
❯ curl -fsSL https://cantorindustries.com/jdsl-py/install.sh | bash

How JDSL works

01

Compose

Define sequences, checks, actions, retries, and model decisions as an inspectable behavior tree.

02

Run

Execute with named state, typed inputs, scoped tools, and traceable dataflow.

03

Compile

Capture verified traces and turn repeatable behavior into portable .jdsl policies.

Deterministic control.

Sequencing, selection, guards, retries, and fixed actions live in inspectable tree structure.

Explicit judgment.

Models enter only at declared predict or react leaves with typed inputs and outputs.

Replayable evidence.

Canonical traces preserve state, provenance, dataflow, and the decisions made along the way.

Portable policies.

Verified procedure can be packaged into restricted .jdsl policies and bound to trusted host capabilities.

from jdsl import root, seq, sel, act, check, predict

# The tree structure is the call structure.
skill = (
    root("Triage")
    .model("deepseek-chat")
    .do(seq(
        predict("message -> category"),
        sel(
            seq(check("category", "billing"), act(route_to_billing)),
            seq(check("category", "support"), act(route_to_support)),
            act(route_to_human)
        )
    ))
)

From traces to reusable policy.

The first end-to-end implementation demonstrates the approach on a retail cancellation workflow, with replay verification and measurable residual decision burden. JDSL does not remove models; it reduces the behavior they must reconstruct.

Read the Documentation View on GitHub