Skip to main content

Harness- and domain-neutral Bayesian tool-call governance — a pure wire consumer of the Credence engine (credence-skin). Run credence-governor-daemon to serve it on :8787.

Project description

credence-governor-core

The harness- and domain-neutral Bayesian tool-call governance core for credence-governor — a pure wire consumer of the Credence engine (credence-skin). It carries no probabilistic code: all inference runs server-side in the engine, reached over the protocol-versioned JSON-RPC skin wire; this package only extracts features from a neutral event and drives proceed / block / ask decisions.

What's in it

  • schema.py — the harness-neutral contract: AgentToolEvent, Session, Message. Every adapter translates its native events into these shapes.
  • features/ + safety.py — the single source of truth for feature & taint extraction (waste loops, repetition, taint-flow, exfil chains). Adapters carry none of this; they send a Session and the daemon extracts.
  • session.py (BrainSession) — boots the warm beliefs and drives the engine's structure_bma / structure_observe / structure_decide / routing_* verbs.
  • daemon.py — the HTTP surface: POST /decide (synchronous, for subprocess-hook adapters), POST /sensor + GET /signals (SSE, for in-process plugins), /report, /ready. stdlib http.server; one lock serialises engine calls.
  • data/ — "coding-ness" as data: the bdsl/ feature schema + utility, the brain/*.counts.json warm beliefs, and profiles/. Swappable.

Install & run

Zero-config — with docker or podman on PATH, the daemon auto-runs the published engine image (ghcr.io/gfrmin/credence-skin:latest); no env vars needed:

pip install credence-governor-core   # pulls the engine's wire client (credence-skin-client)
credence-governor-daemon             # zero-config: auto-runs the engine via docker/podman

With uv — no separate install step. The package is credence-governor-core but the console script is credence-governor-daemon, so the --from is required (uvx otherwise looks for a PyPI package matching the command name):

# one-off / ephemeral — re-resolves each run (cached after the first):
uvx --from credence-governor-core credence-governor-daemon

# persistent — installs `credence-governor-daemon` onto PATH (~/.local/bin):
uv tool install credence-governor-core
credence-governor-daemon

Prefer uv tool install for a long-lived service, and required if you use an adapter's opt-in autostart — it spawns the bare credence-governor-daemon, which must be on PATH (an ephemeral uvx install is not). uvx is ideal for a quick "spin it up to test". Either way uv supplies only the Python host; the engine still comes from docker/podman (or the overrides below).

Overrides (resolution order: CREDENCE_SKIN_COMMANDCREDENCE_ENGINE_DIR → zero-config):

# prod: pin the engine image by digest (reproducible) — highest precedence
CREDENCE_SKIN_COMMAND="docker run --rm -i ghcr.io/gfrmin/credence-skin@sha256:<digest>" \
  credence-governor-daemon
# dev engine: a local checkout of the Credence engine
CREDENCE_ENGINE_DIR=/path/to/credence credence-governor-daemon

The daemon listens on http://127.0.0.1:8787 by default (CREDENCE_GOVERNOR_HOST / CREDENCE_GOVERNOR_PORT). Every adapter is a fail-open silent no-op until this daemon answers on :8787 — verify with curl -s localhost:8787/ready.

POST /decide {tool_name, input, session:{cwd, project_root, messages}}{action, features, event_id}.

Raw-event capture (opt-in)

The observation log stores only the extracted features of each decision, so when the extractor gains a feature, past traffic cannot be re-derived. Set CREDENCE_GOVERNOR_CAPTURE=1 (or a path) to additionally capture the raw (tool_name, input, session) of each governed call to ~/.credence-governor/raw_events.jsonl — a re-extractable corpus a later feature-engineering pass folds in as benign negatives (training.capture_corpus.load_capture). Off by default (raw sessions carry file contents + commands). String fields over CREDENCE_GOVERNOR_CAPTURE_MAXLEN (default 1 MB — a runaway-size guard, not a privacy cap; truncated records are excluded from the fold since they would re-extract to different features) are cut. Non-causal: capture never feeds a belief or a decision.

Tests

python -m pytest tests -q   # parity tests; no engine needed (pure extractor/manifest code)

License

AGPL-3.0-or-later.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

credence_governor_core-0.9.0.tar.gz (94.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

credence_governor_core-0.9.0-py3-none-any.whl (86.4 kB view details)

Uploaded Python 3

File details

Details for the file credence_governor_core-0.9.0.tar.gz.

File metadata

  • Download URL: credence_governor_core-0.9.0.tar.gz
  • Upload date:
  • Size: 94.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for credence_governor_core-0.9.0.tar.gz
Algorithm Hash digest
SHA256 8ba835344dfe04d98c84983a256dec497f0c430867a520edb6a686e25640553a
MD5 a21037301929d4dd37955fc7d08f0175
BLAKE2b-256 5527e537cfb916ecf3cf4fd6e4ce3703a015a35fad3f9befcc1b7a56c046a377

See more details on using hashes here.

File details

Details for the file credence_governor_core-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: credence_governor_core-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for credence_governor_core-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d2c5ce2e1c32007943bb68f0be23af9daa2acf4f3ab7d3268ad136243a1194df
MD5 f9236f5f9c1dee63b700edc5761dc021
BLAKE2b-256 505006013b08e61ba3d9d26a1938348d6046528b48abb7e5fb7a69a708aa5dc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page