Open-source CLI to inspect and govern your runtime: a policy DSL you enforce free in CI, plus offline audit-ledger and Ed25519 signature verification.
Project description
infraveil — open-source CLI for runtime governance
Inspect and govern what changes your production — on your machine, trusting nothing from us. Write your governance rules in a small, readable policy DSL, enforce them free in CI, and verify your audit ledger and release signatures offline. The Infraveil control plane enforces the same policy centrally, so your local checks and your production reality can't drift apart.
This is the open core. You can run it with no account. The paid control plane is the part you can't self-host: the central authority graph, multi-tenant policy, the tamper-evident evidence store, fleet ops, and break-glass.
pip install infraveil
The policy DSL
A policy is the contract for what may change production and who must approve it. Keep it in your repo:
# production.infraveil
policy "production" {
version 1
deploy {
require_approval true
block_paths ".env", "secrets/**", "**/id_rsa"
max_files 50
}
agent "deployer" {
allow restart, deploy, rollback
deny delete, db_migrate, drop_table
blast_radius single_host
}
remediation {
block_categories auth, crypto, billing
require_approval true
}
}
Lint it, read it back in plain language, and enforce it:
infraveil policy lint production.infraveil
infraveil policy explain production.infraveil
infraveil policy check deploy-action.json --policy production.infraveil
policy check evaluates a proposed action (JSON) and exits 0 = allowed,
1 = denied or needs approval — drop it straight into a CI gate:
# .github/workflows/deploy-gate.yml (excerpt)
- run: infraveil policy check action.json --policy production.infraveil
An action looks like:
{ "type": "deploy", "paths": ["src/app.py"], "files_changed": 3 }
{ "type": "agent_action", "agent": "deployer", "action": "delete" }
{ "type": "remediation", "category": "auth" }
Use --approval-ok if your gate should pass when an action is permitted but
gated on human approval (exit 0 for needs_approval).
Verify, offline
Confirm your agent's audit ledger has not been edited, deleted, reordered, or gapped — re-hashing the chain yourself:
infraveil verify ledger /path/to/agent_audit_<id>.jsonl --head <anchor from dashboard>
Verify an Infraveil Ed25519 release/export attestation against the published
public key (requires pip install "infraveil[signatures]"):
infraveil verify signature --file release.bin --attestation attestation.json --pubkey <published hex key>
Why open source this
Two reasons, both honest:
- It's the security pitch. You should never trust a control plane you can't inspect. The code that has authority over your runtime, and the tools that verify us, are open so you can read and reimplement them.
- It's how good infrastructure spreads — devs adopt what they can run for free and read top to bottom. We commit to AGPL up front and will not relicense it out from under you.
License
Project details
Release history Release notifications | RSS feed
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 infraveil-0.1.0.tar.gz.
File metadata
- Download URL: infraveil-0.1.0.tar.gz
- Upload date:
- Size: 24.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 |
07c90fe8f7f39111b69e318a5b0b39e35f44bc070b5122460ffe1c09fb15480e
|
|
| MD5 |
18bae8ba4d0d5077fb0922ac22c799a8
|
|
| BLAKE2b-256 |
8246d374c71990c7b2ec6d3c084bc0d6a04d9411c034c01bc0eef55c1023ce80
|
Provenance
The following attestation bundles were made for infraveil-0.1.0.tar.gz:
Publisher:
publish.yml on infraveilhq/infraveil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infraveil-0.1.0.tar.gz -
Subject digest:
07c90fe8f7f39111b69e318a5b0b39e35f44bc070b5122460ffe1c09fb15480e - Sigstore transparency entry: 1873597657
- Sigstore integration time:
-
Permalink:
infraveilhq/infraveil@499a28ed705ad6d69a790a5d03cd7a81d67531b1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/infraveilhq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@499a28ed705ad6d69a790a5d03cd7a81d67531b1 -
Trigger Event:
release
-
Statement type:
File details
Details for the file infraveil-0.1.0-py3-none-any.whl.
File metadata
- Download URL: infraveil-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.0 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 |
340a8b012f7c0e40b89aaf87a982074d283983656eb68a170d8a30063369abd1
|
|
| MD5 |
fed4c60c3b4599d6b84ca77a64dce528
|
|
| BLAKE2b-256 |
06c7fdd05e1d4f07f6fa6839c7d0e04f25225d7a9eccb1d131f64a454e74ec1a
|
Provenance
The following attestation bundles were made for infraveil-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on infraveilhq/infraveil
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infraveil-0.1.0-py3-none-any.whl -
Subject digest:
340a8b012f7c0e40b89aaf87a982074d283983656eb68a170d8a30063369abd1 - Sigstore transparency entry: 1873597797
- Sigstore integration time:
-
Permalink:
infraveilhq/infraveil@499a28ed705ad6d69a790a5d03cd7a81d67531b1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/infraveilhq
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@499a28ed705ad6d69a790a5d03cd7a81d67531b1 -
Trigger Event:
release
-
Statement type: