ExoArmur Core – deterministic governance and replayable audit layer for execution
Project description
ExoArmur Core
Deterministic execution governance for AI agents. Every action passes through a policy gate, produces a cryptographic audit trail, and is deterministically replayable.
5-Minute Proof
pip install exoarmur-core
python examples/quickstart_replay.py
Or inline:
from exoarmur import ReplayEngine
from exoarmur.replay.event_envelope import CanonicalEvent
import hashlib, json
payload = {"kind": "inline", "ref": {"event_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV"}}
event = CanonicalEvent(
event_id="01ARZ3NDEKTSV4RRFFQ69G5FAV",
event_type="belief_creation_started",
actor="demo",
correlation_id="corr-1",
payload=payload,
payload_hash=hashlib.sha256(
json.dumps(payload, sort_keys=True, separators=(",", ":")).encode()
).hexdigest(),
)
engine = ReplayEngine(audit_store={"corr-1": [event]})
report = engine.replay_correlation("corr-1")
print("Replay result:", getattr(report.result, "value", report.result))
print("Failures:", report.failures or "none")
Run the full suite (1033 tests, three-run stability gate):
git clone https://github.com/slucerodev/ExoArmur-Core.git
cd ExoArmur-Core
pip install ".[dev]"
python -m pytest -q
What It Does
ExoArmur sits between your AI decision layer and execution targets. It enforces that every action:
- Passes a policy decision point before it runs
- Produces a cryptographic audit trail tied to the original intent
- Is deterministically replayable — same inputs always reconstruct the same trace
- Can be vetoed or queued for operator approval
Decision Source → ActionIntent → PolicyDecisionPoint → SafetyGate → [Approval?] → Executor → ExecutionProofBundle
What It Is Not
- Not an LLM or agent framework
- Not a general workflow engine
- Not a distributed systems platform
ExoArmur is a governance and accountability layer that wraps whatever agent framework you already use.
Architecture
| Layer | Path | Purpose |
|---|---|---|
| Core engine | src/exoarmur/ |
Deterministic replay, audit, policy enforcement |
| V2 governance | src/exoarmur/execution_boundary_v2/ |
ProxyPipeline, approval workflow, executor boundary |
| Contracts | spec/contracts/ |
Immutable V1 data shapes |
| Examples | examples/ |
Quickstart and demo scripts |
Key invariants:
- ProxyPipeline is the sole execution boundary — all actions route through it
- Executors are sandboxed, untrusted plugins
- Determinism is enforced by CI — three-run stability gate on every push
- V1 contracts are immutable — new capabilities are additive and feature-flag gated
Feature Flags
V2 capabilities default to off:
| Flag | Purpose |
|---|---|
EXOARMUR_FLAG_V2_FEDERATION_ENABLED |
Multi-cell coordination |
EXOARMUR_FLAG_V2_CONTROL_PLANE_ENABLED |
Governance control plane |
EXOARMUR_FLAG_V2_OPERATOR_APPROVAL_REQUIRED |
Human approval gate |
Governance Pipeline Demo
EXOARMUR_FLAG_V2_FEDERATION_ENABLED=true \
EXOARMUR_FLAG_V2_CONTROL_PLANE_ENABLED=true \
EXOARMUR_FLAG_V2_OPERATOR_APPROVAL_REQUIRED=true \
python scripts/demo_v2_restrained_autonomy.py --operator-decision deny
Expected output:
DEMO_RESULT=DENIED
ACTION_EXECUTED=false
AUDIT_STREAM_ID=det-...
Replay the audit stream:
python scripts/demo_v2_restrained_autonomy.py --replay <AUDIT_STREAM_ID>
CI
Every push runs:
- Core Invariant Gates — three deterministic test runs, boundary enforcement, repo cleanliness
- Multi-Platform Tests — Python 3.8–3.12 on Linux, macOS, Windows
- Security Scan — CodeQL + pip-audit
- V2 Demo Smoke Test — full governance pipeline end-to-end
Current: 1033 passing, 11 skipped, 11 xfailed. No external infrastructure required for the core suite.
Live Demo (Requires NATS JetStream)
docker compose up -d
EXOARMUR_LIVE_DEMO=1 python -m pytest tests/test_golden_demo_live.py -v
Documentation
License
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Contributing
Issues and PRs welcome. All contributions must pass the full gate suite including the three-run stability check (python scripts/infra/stability_ci.py).
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file exoarmur_core-2.0.1.tar.gz.
File metadata
- Download URL: exoarmur_core-2.0.1.tar.gz
- Upload date:
- Size: 579.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad81935ba1ab38240a5af29a2549bc38539c858b0f3c64d525fa1b64cdca883c
|
|
| MD5 |
97dc94771d98e6bf7cba77999469639b
|
|
| BLAKE2b-256 |
8715b5c93a12e3dbf4c8020c126fe5787be6a20a3f37e3db4eb4d5de86bdb157
|
Provenance
The following attestation bundles were made for exoarmur_core-2.0.1.tar.gz:
Publisher:
publish-pypi.yml on slucerodev/ExoArmur-Core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exoarmur_core-2.0.1.tar.gz -
Subject digest:
ad81935ba1ab38240a5af29a2549bc38539c858b0f3c64d525fa1b64cdca883c - Sigstore transparency entry: 1280220531
- Sigstore integration time:
-
Permalink:
slucerodev/ExoArmur-Core@247f16f45171f558972a552f5db41d62272fb7f8 -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/slucerodev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@247f16f45171f558972a552f5db41d62272fb7f8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file exoarmur_core-2.0.1-py3-none-any.whl.
File metadata
- Download URL: exoarmur_core-2.0.1-py3-none-any.whl
- Upload date:
- Size: 461.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0c565fb706aff5f48e6a7de186eee9de575402197f6fdc36c8af63476f7de0b
|
|
| MD5 |
d7025b1e7c53a8b01101a5b6f3be34a9
|
|
| BLAKE2b-256 |
c41002f6042caa72d608d23ecccfb02de5d2893ac922dda1acc6e61b1ca8084a
|
Provenance
The following attestation bundles were made for exoarmur_core-2.0.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on slucerodev/ExoArmur-Core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exoarmur_core-2.0.1-py3-none-any.whl -
Subject digest:
d0c565fb706aff5f48e6a7de186eee9de575402197f6fdc36c8af63476f7de0b - Sigstore transparency entry: 1280220539
- Sigstore integration time:
-
Permalink:
slucerodev/ExoArmur-Core@247f16f45171f558972a552f5db41d62272fb7f8 -
Branch / Tag:
refs/tags/v2.0.1 - Owner: https://github.com/slucerodev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@247f16f45171f558972a552f5db41d62272fb7f8 -
Trigger Event:
push
-
Statement type: