Skip to content

Bulla CLI reference

Create a receipt, check a file you received, or compare receipts with a separately supplied action log.

This page is generated from the published bulla-0.47.1-py3-none-any.whl, not unreleased repository code. The technical evidence below records the wheel digest.

version · 0.47.1

wheel · sha256:e2d451fe91e6cf34e57ffcea76ef045e2467ee7748e74811c152d3b743080e1f

Source of this command reference

The command shown here comes from the package published on PyPI, not from unreleased repository code.

Technical evidence

Commands labelled published are captured from the exact artifact accepted by PyPI; repository source is not substituted for it.

$ python -m pip install "bulla==0.47.1"
$ bulla --help

demo#

Run a constructed action, emit its receipt, detect alteration, reconcile an unreceipted action, and rehearse offline verification

bulla demo [-h] [--out DIR] [--format {text,json}]
full help from published wheel
usage: bulla demo [-h] [--out DIR] [--format {text,json}]

options:
  -h, --help            show this help message and exit
  --out DIR             Retain artifacts in a new directory (default: a
                        preserved private temporary directory)
  --format {text,json}

diagnose#

Diagnose compositions and report blind spots

bulla diagnose [-h] [--format {text,json,sarif}] [--brief] [--examples] [--witness] [--regime] [--pack FILE] [files ...]
full help from published wheel
usage: bulla diagnose [-h] [--format {text,json,sarif}] [--brief] [--examples]
                      [--witness] [--regime] [--pack FILE]
                      [files ...]

positional arguments:
  files                 YAML composition file(s) or directories

options:
  -h, --help            show this help message and exit
  --format {text,json,sarif}
                        Output format (default: text)
  --brief               One-line-per-file summary (fee + blind spot count
                        only)
  --examples            Run on bundled example compositions
  --witness             Include witness-geometry diagnostics (leverage scores,
                        N_eff concentration, coloops/loops, greedy minimum-
                        cost disclosure basis). Computed only when fee > 0.
  --regime              Include the regime block in JSON output (Sprint 11
                        regime lattice classification). Default off —
                        preserves byte-identity with the 0.34.0 golden JSON
                        fixture. Use `bulla regime <path>` for a standalone
                        regime classification.
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

regime#

Print the regime classification of one or more compositions

bulla regime [-h] [--format {text,json}] [--pack FILE] files [files ...]
full help from published wheel
usage: bulla regime [-h] [--format {text,json}] [--pack FILE]
                    files [files ...]

positional arguments:
  files                 YAML composition file(s) or directories

options:
  -h, --help            show this help message and exit
  --format {text,json}  Output format (default: text)
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

certify#

Emit per-composition certificate(s): regime + fee + interpretation + repair semantics in one bundled JSON artifact

bulla certify [-h] [--format {text,json}] [--seed-set] [--output OUTPUT] [--sign] [--key FILE] [--issuer URI] [--pack FILE] [files ...]
full help from published wheel
usage: bulla certify [-h] [--format {text,json}] [--seed-set]
                     [--output OUTPUT] [--sign] [--key FILE] [--issuer URI]
                     [--pack FILE]
                     [files ...]

positional arguments:
  files                 YAML composition file(s) or directories

options:
  -h, --help            show this help message and exit
  --format {text,json}  Output format (default: text)
  --seed-set            Emit certificates for the canonical Sprint 13 seed set
                        (10 compositions covering the regime lattice)
  --output OUTPUT       Write certificate(s) to FILE instead of stdout
  --sign                Sign each certificate under an agent identity
                        (requires bulla[identity]); uses --key or the default
                        key from `bulla key gen`
  --key FILE            ed25519 key file to sign with (default:
                        ~/.bulla/identity.json)
  --issuer URI          External issuer URI (did:web:…, eip155:…, an
                        Entra/SPIFFE id) to bind to; default is the key's
                        self-certifying did:key
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

key#

Manage the local ed25519 signing identity (did:key)

bulla key [-h] {gen} ...
full help from published wheel
usage: bulla key [-h] {gen} ...

positional arguments:
  {gen}
    gen       Generate a local ed25519 keypair (a self-certifying did:key)

options:
  -h, --help  show this help message and exit

verify#

Verify a signed certificate: content integrity, signature authenticity, and anchor

bulla verify [-h] [--key FILE] [--registry PATH_OR_URL] [--trusted-root HASH] [--root-ots FILE_OR_PROOF] [--format {text,json}] certificate
full help from published wheel
usage: bulla verify [-h] [--key FILE] [--registry PATH_OR_URL]
                    [--trusted-root HASH] [--root-ots FILE_OR_PROOF]
                    [--format {text,json}]
                    certificate

positional arguments:
  certificate           Certificate JSON file

options:
  -h, --help            show this help message and exit
  --key FILE            Public key file to verify a non-did:key issuer against
  --registry PATH_OR_URL
                        Also demand the deed be logged in this registry (a
                        local JSONL path or an http(s) URL to `bulla registry
                        serve`). Refuses the unlogged — the omission-closer.
                        Exit code is nonzero if absent.
  --trusted-root HASH   Pin the registry root: for a REMOTE registry, the
                        served root must equal this (obtained out of band),
                        else verify refuses (a host-asserted root proves
                        nothing). A mismatch is flagged as possible
                        equivocation.
  --root-ots FILE_OR_PROOF
                        An OTS proof (path or base64) anchoring the served
                        root to the timechain — an alternative to --trusted-
                        root for trusting a remote root.
  --format {text,json}

receipt#

Create and verify action receipts — the accountable record of one consequential agent action and the durable object recourse can reference

bulla receipt [-h] {create,verify,drill,kit,check-equivocation} ...
full help from published wheel
usage: bulla receipt [-h] {create,verify,drill,kit,check-equivocation} ...

positional arguments:
  {create,verify,drill,kit,check-equivocation}
    create              Mint an ActionReceipt for one consequential action:
                        act + verdict slot + mandate/remedy envelope (modality
                        law enforced) + evidence grounding + coined
                        conventions. Sign with --key; verify with `bulla
                        receipt verify`.
    verify              Verify a receipt (action / witness / certificate):
                        recompute the four hashes, re-validate the recourse
                        envelope (modality law), check the signature — and
                        report how far it got (verified_to:
                        digest|attestation|log_inclusion) rather than a lying
                        pass/fail boolean
    drill               Rehearse ActionReceipt v0.2 verification with network
                        access denied; separate locally recheckable claims
                        from external evidence requirements
    kit                 Export the immutable ActionReceipt v0.2 specification,
                        vectors, and zero-dependency checker embedded in this
                        package
    check-equivocation  EXPERIMENTAL: authenticate two log heads and establish
                        only the same-operator, same-log, same-size,
                        different-root predicate

options:
  -h, --help            show this help message and exit

coverage#

Receipt coverage against a declared anchor (omission detection): which anchored actions have no receipt. Reports coverage relative to the anchor — never a bare, gameable percentage

bulla coverage [-h] [--anchor {pypi,git}] --receipts DIR [--match GLOB] [--repo REPO] [--project PROJECT] [--snapshot FILE] [--no-integrity] [--expected-repository OWNER/REPO] [--format {text,json}]
full help from published wheel
usage: bulla coverage [-h] [--anchor {pypi,git}] --receipts DIR [--match GLOB]
                      [--repo REPO] [--project PROJECT] [--snapshot FILE]
                      [--no-integrity] [--expected-repository OWNER/REPO]
                      [--format {text,json}]

options:
  -h, --help            show this help message and exit
  --anchor {pypi,git}   External release record (default: pypi; git is
                        secondary)
  --receipts DIR        Directory of release ActionReceipts
  --match GLOB          git tag glob; results are restricted to stable vX.Y.Z
                        package tags
  --repo REPO           Repo path (default: cwd)
  --project PROJECT     PyPI project (default: bulla)
  --snapshot FILE       Read a saved PyPI project JSON response instead of the
                        live API
  --no-integrity        Do not resolve Integrity API objects (for an offline
                        snapshot check)
  --expected-repository OWNER/REPO
                        Required GitHub Trusted Publisher identity for
                        contemporaneous receipts
  --format {text,json}

gate#

Recourse gate: PROCEED or REFUSE on a counterparty's deed — inclusion under a root you trust independently, authenticity, integrity. Exit 0 = proceed, 1 = refuse (with a contestable refusal certificate). Where `verify` reports the checks, `gate` enforces the decision. The coherence fee is reported, never blocked on, unless you opt in with --require-fee.

bulla gate [-h] [--certificate FILE] [--deed FILE] --registry PATH_OR_URL [--trusted-root HASH] [--root-ots FILE_OR_PROOF] [--composition-hash HASH] [--require-fee N] [--key FILE] [--issuer URI] [--disclose DIM] [--format {text,brief,json}]
full help from published wheel
usage: bulla gate [-h] [--certificate FILE] [--deed FILE]
                  --registry PATH_OR_URL [--trusted-root HASH]
                  [--root-ots FILE_OR_PROOF] [--composition-hash HASH]
                  [--require-fee N] [--key FILE] [--issuer URI]
                  [--disclose DIM] [--format {text,brief,json}]

options:
  -h, --help            show this help message and exit
  --certificate FILE    The counterparty's full signed certificate (carries
                        the fee; required for --require-fee).
  --deed FILE           The counterparty's deed record (the triple) — a fee-
                        blind alternative to --certificate.
  --registry PATH_OR_URL
                        The registry you demand inclusion in: a local path or
                        an http(s) URL.
  --trusted-root HASH   A root you pin INDEPENDENTLY of the host (else a
                        remote, host-asserted root is refused).
  --root-ots FILE_OR_PROOF
                        An OTS proof anchoring the served root — an
                        alternative to --trusted-root.
  --composition-hash HASH
                        Demand the deed be for THIS composition (fail closed
                        otherwise).
  --require-fee N       OPT IN to fee-gating: refuse when the certified
                        coherence_fee exceeds N. Default: report the fee, do
                        not gate on it (a disclosure signal, not an execution
                        predictor — see FALSIFICATIONS.md).
  --key FILE            Your ed25519 key (run `bulla key gen`) — signs the
                        refusal certificate so it is non-repudiable.
  --issuer URI          External issuer URI for your signing key (default: its
                        did:key).
  --disclose DIM        Name a convention the cure must disclose (repeatable;
                        e.g. --disclose path_root).
  --format {text,brief,json}

anchor#

Anchor a signed certificate to the Bitcoin timechain (writes a .ots sidecar)

bulla anchor [-h] certificate
full help from published wheel
usage: bulla anchor [-h] certificate

positional arguments:
  certificate  Signed certificate JSON file

options:
  -h, --help   show this help message and exit

registry#

Append-only deed log: append, enumerate, and prove signed certificates

bulla registry [-h] {append,log,prove,root,anchor,serve} ...
full help from published wheel
usage: bulla registry [-h] {append,log,prove,root,anchor,serve} ...

positional arguments:
  {append,log,prove,root,anchor,serve}
    append              Append a signed certificate as a deed
    log                 Enumerate the logged deeds (the audit query;
                        optionally one issuer)
    prove               Emit an inclusion proof for a deed index
    root                Print the current Merkle root (anchor it to timestamp
                        the whole log)
    anchor              Anchor the current root to the Bitcoin timechain (a
                        log checkpoint)
    serve               Serve the registry read-only over HTTP (the online
                        surface)

options:
  -h, --help            show this help message and exit

certify-update#

Assess semantic compatibility delta between two composition manifests

bulla certify-update [-h] [--format {text,json}] [--pack FILE] old_file new_file
full help from published wheel
usage: bulla certify-update [-h] [--format {text,json}] [--pack FILE]
                            old_file new_file

positional arguments:
  old_file              Old/baseline composition YAML
  new_file              New/updated composition YAML

options:
  -h, --help            show this help message and exit
  --format {text,json}  Output format (default: text)
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

check#

CI/CD gate: exit 1 if compositions exceed thresholds

bulla check [-h] [--max-blind-spots N] [--max-unbridged N] [--max-fee N] [--format {text,json,sarif}] [--examples] [--witness] [--baseline RECEIPT.json] [--certificate-out PATH.json] [--pack FILE] [files ...]
full help from published wheel
usage: bulla check [-h] [--max-blind-spots N] [--max-unbridged N]
                   [--max-fee N] [--format {text,json,sarif}] [--examples]
                   [--witness] [--baseline RECEIPT.json]
                   [--certificate-out PATH.json] [--pack FILE]
                   [files ...]

positional arguments:
  files                 YAML composition file(s) or directories

options:
  -h, --help            show this help message and exit
  --max-blind-spots N   Max blind spots per composition before failing
                        (default: 0)
  --max-unbridged N     Max unbridged edges per composition before failing
                        (default: 0)
  --max-fee N           Exit 1 if coherence fee exceeds N
  --format {text,json,sarif}
                        Output format (default: text)
  --examples            Run on bundled example compositions
  --witness             Include witness-geometry diagnostics in the
                        text/JSON/SARIF output (leverage, N_eff, coloops,
                        greedy disclosure basis). Does not affect check
                        thresholds.
  --baseline RECEIPT.json
                        Compare against a baseline receipt (JSON). Exit 1 if
                        the baseline is stale (composition or policy changed)
                        OR if the current state has regressed (higher fee,
                        worse disposition, new blind spots). Requires exactly
                        one composition file.
  --certificate-out PATH.json
                        Write a CompositionCertificate (v1.0 schema) for each
                        checked composition to PATH.json. Single composition:
                        writes one certificate object. Multiple compositions:
                        writes a JSON array of certificates. Independent of
                        the CI gate result; certificates are written before
                        exit regardless of pass/fail. Unifies the check (CI
                        gate) and certify (record-keeping) primitives at the
                        v0.38.0 CLI surface — used by G24 self-host pipeline-
                        CI to record the certified state at each commit hash
                        in the historical analysis window.
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

diff#

Compare two receipts and show what changed

bulla diff [-h] [--format {text,json}] baseline current
full help from published wheel
usage: bulla diff [-h] [--format {text,json}] baseline current

positional arguments:
  baseline              Baseline receipt (JSON) — the 'before' state
  current               Current receipt (JSON) — the 'after' state

options:
  -h, --help            show this help message and exit
  --format {text,json}  Output format (default: text)

infer#

Infer a proto-composition YAML from an MCP manifest JSON

bulla infer [-h] [-o OUTPUT] [--pack FILE] manifest
full help from published wheel
usage: bulla infer [-h] [-o OUTPUT] [--pack FILE] manifest

positional arguments:
  manifest             Path to an MCP manifest JSON (list_tools response)

options:
  -h, --help           show this help message and exit
  -o, --output OUTPUT  Write output to file instead of stdout
  --pack FILE          Additional convention pack YAML (repeatable, later
                       packs override)

scan#

Scan MCP server(s) and diagnose. With no args, auto- detects the host config; pass commands or --config for explicit targets.

bulla scan [-h] [--config CONFIG] [--format {narrative,text,json,sarif}] [--json] [--no-pairwise] [-o OUTPUT] [--pack FILE] [commands ...]
full help from published wheel
usage: bulla scan [-h] [--config CONFIG]
                  [--format {narrative,text,json,sarif}] [--json]
                  [--no-pairwise] [-o OUTPUT] [--pack FILE]
                  [commands ...]

positional arguments:
  commands              Shell command(s) to start MCP server(s). Omit for
                        auto-detect of the host's MCP config.

options:
  -h, --help            show this help message and exit
  --config CONFIG       Path to an MCP config file (Cursor / Claude Desktop /
                        Claude Code shape). Skips auto-detect.
  --format {narrative,text,json,sarif}
                        Output format. 'narrative' (default) is plain prose
                        with dimension explanations and the pairwise-vs-global
                        comparison. 'text' is the legacy mathematician-grade
                        view. 'json' / 'sarif' for programmatic consumers.
  --json                Shortcut for --format json (machine-readable receipt).
  --no-pairwise         Skip the pairwise-vs-global comparison block in
                        narrative output. Useful for very large compositions
                        or when the n*(n-1)/2 compose_multi calls would slow
                        the scan.
  -o, --output OUTPUT   Save inferred composition YAML to file
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

certify-cost#

Coherence Cost Certificate (v0): the irreducible coherence floor + witness fields; with --observed- cost, the unexplained premium

bulla certify-cost [-h] [--observed-cost OBSERVED_COST] composition
full help from published wheel
usage: bulla certify-cost [-h] [--observed-cost OBSERVED_COST] composition

positional arguments:
  composition           composition JSON file

options:
  -h, --help            show this help message and exit
  --observed-cost OBSERVED_COST
                        the intermediary's observed charge, in your unit

gauge#

Diagnose an MCP server or manifest with prescriptive disclosure

bulla gauge [-h] [--mcp-server CMD] [--format {text,json,sarif}] [-o FILE] [--max-fee N] [--max-blind-spots N] [-v] [--leverage] [--substitutes TOOL FIELD] [--costs FILE] [--pack FILE] [manifest]
full help from published wheel
usage: bulla gauge [-h] [--mcp-server CMD] [--format {text,json,sarif}]
                   [-o FILE] [--max-fee N] [--max-blind-spots N] [-v]
                   [--leverage] [--substitutes TOOL FIELD] [--costs FILE]
                   [--pack FILE]
                   [manifest]

positional arguments:
  manifest              MCP manifest JSON file

options:
  -h, --help            show this help message and exit
  --mcp-server CMD      Shell command to start MCP server
  --format {text,json,sarif}
                        Output format (default: text)
  -o, --output-composition FILE
                        Save inferred composition YAML to file
  --max-fee N           Exit 1 if coherence fee exceeds N (CI gating)
  --max-blind-spots N   Exit 1 if blind spots exceed N (CI gating)
  -v, --verbose         Show full blind spot details and bridge
                        recommendations
  --leverage            Include witness-geometry diagnostics in the output
                        (per-field leverage, N_eff, coloops, greedy minimum-
                        cost disclosure basis).
  --substitutes TOOL FIELD
                        Show top-3 disclosure substitutes for the given hidden
                        field, ranked by effective resistance in the Kron-
                        reduced witness geometry. Takes two positional
                        arguments: tool name and field name (dot-safe).
  --costs FILE          YAML file mapping '<tool>:<field>' -> rational cost
                        string ('p/q' or integer). Runs the matroid-greedy
                        minimum-cost disclosure algorithm (optimal by Edmonds
                        1971).
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

audit#

Audit all MCP servers in a config file (cross-server diagnosis)

bulla audit [-h] [--manifests DIR] [--format {text,json,sarif}] [-o FILE] [--max-fee N] [--max-blind-spots N] [--max-unmet N] [--max-contradictions N] [--max-structural N] [-v] [--skip-failed] [--no-skip-failed] [--discover] [--discover-provider PROVIDER] [--output-discovered FILE] [--guided-discover] [--converge] [--max-rounds N] [--receipt FILE] [--chain RECEIPT.json] [--host NAME] [--pack FILE] [config]
full help from published wheel
usage: bulla audit [-h] [--manifests DIR] [--format {text,json,sarif}]
                   [-o FILE] [--max-fee N] [--max-blind-spots N]
                   [--max-unmet N] [--max-contradictions N]
                   [--max-structural N] [-v] [--skip-failed]
                   [--no-skip-failed] [--discover]
                   [--discover-provider PROVIDER] [--output-discovered FILE]
                   [--guided-discover] [--converge] [--max-rounds N]
                   [--receipt FILE] [--chain RECEIPT.json] [--host NAME]
                   [--pack FILE]
                   [config]

positional arguments:
  config                MCP config JSON file (default: auto-detect)

options:
  -h, --help            show this help message and exit
  --manifests DIR       Directory of pre-captured MCP manifest JSON files
                        (alternative to live scan)
  --format {text,json,sarif}
                        Output format (default: text)
  -o, --output-composition FILE
                        Save combined composition YAML to file
  --max-fee N           Exit 1 if coherence fee exceeds N (CI gating)
  --max-blind-spots N   Exit 1 if blind spots exceed N (CI gating)
  --max-unmet N         Exit 1 if unmet obligations exceed N (CI gating)
  --max-contradictions N
                        Exit 1 if convention contradictions exceed N (CI
                        gating)
  --max-structural N    Exit 1 if structural contradiction score exceeds N (CI
                        gating)
  -v, --verbose         Show full blind spot details
  --skip-failed         Continue when individual servers fail (default: true)
  --no-skip-failed      Fail if any server cannot be scanned
  --discover            Run LLM-powered convention discovery before auditing
  --discover-provider PROVIDER
                        LLM provider for --discover (default: auto-detect from
                        env)
  --output-discovered FILE
                        Save discovered micro-pack YAML to file (requires
                        --discover)
  --guided-discover     Run obligation-directed LLM discovery to repair blind
                        spots
  --converge            Iterative convergence loop (extends --guided-discover)
  --max-rounds N        Maximum convergence rounds (default: 5, requires
                        --converge)
  --receipt FILE        Write a WitnessReceipt JSON to file after auditing
  --chain RECEIPT.json  Load a prior receipt's vocabulary and chain the new
                        receipt
  --host NAME           Force a specific MCP host's config (e.g. 'cursor',
                        'claude-code', 'cline'). Use 'bulla hosts list' to see
                        registered hosts.
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

manifest#

Generate or validate Bulla Manifest files

bulla manifest [-h] [--from-json FILE] [--from-server CMD] [--validate FILE] [--publish FILE] [--verify FILE] [--upgrade] [-o FILE] [--examples]
full help from published wheel
usage: bulla manifest [-h] [--from-json FILE] [--from-server CMD]
                      [--validate FILE] [--publish FILE] [--verify FILE]
                      [--upgrade] [-o FILE] [--examples]

options:
  -h, --help         show this help message and exit
  --from-json FILE   Generate manifest(s) from an MCP manifest JSON
  --from-server CMD  Generate manifest(s) from a live MCP server command
  --validate FILE    Validate an existing manifest YAML
  --publish FILE     Anchor manifest to Bitcoin timechain via OpenTimestamps
                     (requires bulla[ots])
  --verify FILE      Verify OTS proof on a published manifest
  --upgrade          With --verify: upgrade pending proofs to confirmed
  -o, --output FILE  Write output to file instead of stdout
  --examples         Generate example manifests to see the format

bridge#

Auto-generate bridged composition or JSON patches

bulla bridge [-h] [--format {yaml,json-patch}] [-o OUTPUT] files [files ...]
full help from published wheel
usage: bulla bridge [-h] [--format {yaml,json-patch}] [-o OUTPUT]
                    files [files ...]

positional arguments:
  files                 YAML composition file(s)

options:
  -h, --help            show this help message and exit
  --format {yaml,json-patch}
                        Output format: bridged YAML (default) or JSON patches
  -o, --output OUTPUT   Write output to file instead of stdout

translate#

Runtime value translation across conventions on a dimension

bulla translate [-h] --dimension DIMENSION --value VALUE --to TO [--from FROM_]
full help from published wheel
usage: bulla translate [-h] --dimension DIMENSION --value VALUE --to TO
                       [--from FROM_]

options:
  -h, --help            show this help message and exit
  --dimension DIMENSION
                        Dimension name (e.g. currency_code, country_code)
  --value VALUE         Value to translate (e.g. USD)
  --to TO               Target convention id (e.g. stripe-lower,
                        iso-3166-alpha3)
  --from FROM_          Optional source convention id; if omitted, the runtime
                        tries every registered translator with matching
                        dimension and to-convention.

witness#

Diagnose and emit a WitnessReceipt (JSON)

bulla witness [-h] files [files ...]
full help from published wheel
usage: bulla witness [-h] files [files ...]

positional arguments:
  files       YAML composition file(s)

options:
  -h, --help  show this help message and exit

compose#

Diagnose composition(s) and emit a prescriptive report (natural-language fix instructions for engineers).

bulla compose [-h] [--format {prescriptive,json}] files [files ...]
full help from published wheel
usage: bulla compose [-h] [--format {prescriptive,json}] files [files ...]

positional arguments:
  files                 YAML composition file(s)

options:
  -h, --help            show this help message and exit
  --format {prescriptive,json}
                        Output format. 'prescriptive' (default) gives human-
                        readable fix instructions; 'json' emits the same
                        WitnessReceipt as `bulla witness`.

discover#

Discover convention dimensions from tool schemas using an LLM

bulla discover [-h] --manifests DIR -o FILE [--provider {openai,anthropic,openrouter,auto}] [--pack FILE]
full help from published wheel
usage: bulla discover [-h] --manifests DIR -o FILE
                      [--provider {openai,anthropic,openrouter,auto}]
                      [--pack FILE]

options:
  -h, --help            show this help message and exit
  --manifests DIR       Directory of pre-captured MCP manifest JSON files
  -o, --output FILE     Output micro-pack YAML file
  --provider {openai,anthropic,openrouter,auto}
                        LLM provider (default: auto-detect from env)
  --pack FILE           Additional convention pack YAML (repeatable, later
                        packs override)

pack#

Convention pack utilities (validate, verify, status, lint)

bulla pack [-h] {validate,verify,status,lint} ...
full help from published wheel
usage: bulla pack [-h] {validate,verify,status,lint} ...

positional arguments:
  {validate,verify,status,lint}
    validate            Validate a convention pack YAML file
    verify              Verify a pack's values_registry pointers (Extension
                        B). Static inspection by default; pass --fetch to
                        attempt network fetch and hash check.
    status              Show a pack's metadata: license, dimensions, registry
                        pointers (read-only, no network)
    lint                Lint a pack for non-fatal style issues and upgrade
                        hints (advisory by default; pass --strict to exit
                        nonzero on any finding)

options:
  -h, --help            show this help message and exit

merge#

Merge vocabularies from multiple receipts (DAG convergence)

bulla merge [-h] [--receipt FILE] [--format {text,json}] receipts [receipts ...]
full help from published wheel
usage: bulla merge [-h] [--receipt FILE] [--format {text,json}]
                   receipts [receipts ...]

positional arguments:
  receipts              Receipt JSON files to merge (argument order IS
                        precedence order)

options:
  -h, --help            show this help message and exit
  --receipt FILE        Write merged receipt JSON to file (DAG receipt with
                        parent_receipt_hashes)
  --format {text,json}  Output format (default: text)

replay#

Replay a composition-aware proxy trace against captured manifests

bulla replay [-h] --manifests DIR [--format {text,json}] [-o FILE] trace
full help from published wheel
usage: bulla replay [-h] --manifests DIR [--format {text,json}] [-o FILE]
                    trace

positional arguments:
  trace                 JSON trace file (array or object with 'calls')

options:
  -h, --help            show this help message and exit
  --manifests DIR       Directory of captured MCP manifest JSON files
  --format {text,json}  Output format (default: text)
  -o, --output FILE     Write output to file instead of stdout

proxy#

Run a live MCP proxy. Aggregates N backend MCP servers, injects bulla__* meta-tools, computes incremental witness rank. Speaks stdio JSON-RPC to the upstream client. (For the old trace-replayer use `bulla replay`.)

bulla proxy [-h] [--config FILE] [--telemetry-out FILE] [--inject-prompt] [--key FILE] [--issuer URI] [--registry PATH_OR_URL] [--enforce] [--trusted-root HASH] [--shadow] [--mandate-principal REF] [--mandate-policy HASH] [--gate-reads] [COMMAND ...]
full help from published wheel
usage: bulla proxy [-h] [--config FILE] [--telemetry-out FILE]
                   [--inject-prompt] [--key FILE] [--issuer URI]
                   [--registry PATH_OR_URL] [--enforce] [--trusted-root HASH]
                   [--shadow] [--mandate-principal REF]
                   [--mandate-policy HASH] [--gate-reads]
                   [COMMAND ...]

positional arguments:
  COMMAND               Backend MCP server commands (one per backend). Auto-
                        named server_0, server_1, ... unless --config supplies
                        names.

options:
  -h, --help            show this help message and exit
  --config FILE         YAML config: {servers: {name: {command, env}}}
  --telemetry-out FILE  Write per-call telemetry as JSON Lines.
  --inject-prompt       Print the agent system-prompt fragment to stdout and
                        exit. Paste this into your agent's system prompt so it
                        knows how to consult bulla__* meta-tools.
  --key FILE            ed25519 key file to sign deeds with (run `bulla key
                        gen` first). Together with a local --registry, enables
                        bulla__deed_emit. Requires bulla[identity].
  --issuer URI          External issuer URI to bind to (default: the key's
                        did:key).
  --registry PATH_OR_URL
                        Deed registry: a local JSONL path (read+append) or an
                        http(s) URL to a `bulla registry serve` endpoint
                        (read-only). Enables bulla__deed_verify/lookup; a
                        local path also enables emit.
  --enforce             ENFORCE mode (OBSERVE -> ENFORCE): refuse a cross-
                        owner tools/call whose counterparty deed is not
                        authentic + included under a trusted root + certifying
                        fee=0, BEFORE the backend is touched. The counterparty
                        presents its cert via the `_bulla_certificate`
                        argument. Default off (advisory).
  --trusted-root HASH   With --enforce against a remote registry: the root you
                        pin independently of the host. Absent a pin, a host-
                        asserted root is refused.
  --shadow              SHADOW mode (the observe-grade gateway): emit a signed
                        per-call deed — carrying the v0.2 recourse envelope —
                        for every side-effecting tools/call (MCP annotations
                        else conservative default: unknown = write). Never
                        blocks; needs --key and a local --registry, else
                        degrades to telemetry-only.
  --mandate-principal REF
                        The surviving principal for shadow receipts' authority
                        block (e.g. did:web:acme.example#ops) — the terminus
                        of the escalate rung.
  --mandate-policy HASH
                        Policy reference (policy@hash) for the shadow
                        receipts' authority block.
  --gate-reads          With --enforce: gate ALL calls, including reads.
                        Default gates only side-effecting calls (the gateway
                        law is 'no unreceipted side effects').

serve#

Run as MCP server (stdio transport)

bulla serve [-h]
full help from published wheel
usage: bulla serve [-h]

options:
  -h, --help  show this help message and exit

init#

Interactive wizard to generate a composition YAML

bulla init [-h] [-o OUTPUT]
full help from published wheel
usage: bulla init [-h] [-o OUTPUT]

options:
  -h, --help           show this help message and exit
  -o, --output OUTPUT  Output file path (default: <name>.yaml)

hosts#

Manage and inspect MCP host integrations

bulla hosts [-h] {list} ...
full help from published wheel
usage: bulla hosts [-h] {list} ...

positional arguments:
  {list}
    list      List registered MCP hosts and which configs are present on this
              system

options:
  -h, --help  show this help message and exit

frameworks#

Manage and inspect framework adapters (LangGraph, CrewAI, Anthropic Messages)

bulla frameworks [-h] {list} ...
full help from published wheel
usage: bulla frameworks [-h] {list} ...

positional arguments:
  {list}
    list      List registered framework adapters and parse-mode support

options:
  -h, --help  show this help message and exit

import#

Convert framework-native tool definitions into a Bulla manifest

bulla import [-h] [--out FILE] [--audit] [--format {text,json,sarif}] [--mode {static,runtime}] framework source
full help from published wheel
usage: bulla import [-h] [--out FILE] [--audit] [--format {text,json,sarif}]
                    [--mode {static,runtime}]
                    framework source

positional arguments:
  framework             Framework name (e.g. anthropic-messages, langgraph,
                        crewai). Use 'bulla frameworks list' to see registered
                        adapters.
  source                Source file path, directory, or '-' for stdin

options:
  -h, --help            show this help message and exit
  --out FILE            Write manifest JSON to FILE (default: stdout)
  --audit               Pipe through bulla audit immediately
  --format {text,json,sarif}
                        Audit output format (only relevant with --audit)
  --mode {static,runtime}
                        Parse mode (default: static; runtime reserved for
                        future sprint)

experimental#

Research-only surfaces (not part of the stable Bulla API)

bulla experimental [-h] {invent,verify-invention,explain-invention,apply-invention,select-invention,plan-enrichment,respond-enrichment,refine-envelope,verify-refinement,assess-finality,explain-finality,repair-reliance,check-candidate,checkpoint} ...
full help from published wheel
usage: bulla experimental [-h]
                          {invent,verify-invention,explain-invention,apply-invention,select-invention,plan-enrichment,respond-enrichment,refine-envelope,verify-refinement,assess-finality,explain-finality,repair-reliance,check-candidate,checkpoint} ...

positional arguments:
  {invent,verify-invention,explain-invention,apply-invention,select-invention,plan-enrichment,respond-enrichment,refine-envelope,verify-refinement,assess-finality,explain-finality,repair-reliance,check-candidate,checkpoint}
    invent              Synthesize an FRSL-1 predicate package or a checked
                        negative exit
    verify-invention    Replay package gates and objective failure
                        certificates
    explain-invention   Render a compact human explanation of a synthesis
                        result
    apply-invention     Apply an independently checked package to one shared-
                        vocabulary structure
    select-invention    Govern an offered non-unique package with a signed
                        selection receipt
    plan-enrichment     Compute exact Pareto-minimal observable plans and a
                        justified request
    respond-enrichment  Sign CONSENT, REFUSE, COUNTEROFFER, or PROVIDE for one
                        plan
    refine-envelope     Admit consented evidence and emit a monotone
                        refinement certificate
    verify-refinement   Replay state inclusion and all envelope-refinement
                        gates
    assess-finality     Apply the experimental closure/authority/reserve
                        finality controller
    explain-finality    Emit or replay typed minimal blockers and sufficient
                        finality routes
    repair-reliance     Enumerate exact inclusion-minimal repairs in a
                        declared finite catalog
    check-candidate     Gate an external FRSL-1 proposal under an explicit
                        disclosure budget
    checkpoint          Issue or verify a signed append-only witness
                        checkpoint

options:
  -h, --help            show this help message and exit

showcase#

Run the full algebraic repair loop demo on bundled MCP manifests

bulla showcase [-h] [--json]
full help from published wheel
usage: bulla showcase [-h] [--json]

options:
  -h, --help  show this help message and exit
  --json      Emit machine-readable JSON instead of human-readable output