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 --helpdemo#
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}] certificatefull 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] certificatefull 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_filefull 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 currentfull 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] manifestfull 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] compositionfull 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] tracefull 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 sourcefull 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