BLA
BLA (Blind LLM Agents) is the open-source Blue Defense MCP and CLI built to protect software artifacts against automated AI reverse-engineering workflows.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Tamper-evident receipts for AI agents: signed, hash-chained and verifiable offline by anyone. Open-core CLI and verifier (MIT) plus paid Cloud anchoring.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Tamper-evident receipts for autonomous agents.
jaredklopstein.github.io/provenant ·
@lacre/core ·
@lacre/verifier
Agents write structured receipts of every consequential action they take. Provenant hash-chains and signs them, so anyone can later prove the record was not altered — and see exactly which record was, if one was.
Agents are the users. Humans read this during incidents, audits and security reviews. The write path is designed for agents; the read path for humans.
provenant init --json
provenant record --action refund.issue \
--action-detail '{"customer_id":"c_8812","amount_usd":42.50}' \
--side-effect-class irreversible \
--idempotency-key refund-c_8812-0001 --json
provenant chain verify --json
Trying it? The packages are not on npm yet, so run Provenant from a source checkout: Getting started from source covers clone and build, a first receipt, and an offline check of a real anchored bundle.
Free — Provenant Core (MIT):
null and a stated
reason — never as a flattering 0--json on every command, and a self-describing manifestCommands: init, keygen, agent register, agent list, record,
chain verify, chain head, receipts query, anchor now, anchor list,
discover. Unknown options are rejected, not ignored — a mistyped flag
could otherwise change what gets recorded — so the documented shorthands
(--agent, --from, --to) are real aliases and every alias is listed in
discover.
Free — provenant-verify (MIT): standalone offline bundle verification,
including full RFC 3161 timestamp checking. Verifying is never paywalled.
Paid — Provenant Cloud: RFC 3161 anchoring against a real timestamp authority, and evidence bundle export (JSON, PDF, HTML).
Partly built, and not to be presented as working — the collector
authenticates correctly (RFC 9421, with replay and body-swap rejection tested)
but POST /receipts is a documented "not implemented"; and invoice computation
is real while nothing has ever called Stripe. Details in
packages/cloud/README.md.
Not built yet: contracts and approvals (Phase 3); leases and fencing tokens (Phase 4); MCP adapter (Phase 5).
# free: record and verify locally
provenant record --action refund.issue --action-detail '{"amount_usd":42}' --json
provenant chain verify --json
# paid: anchor to an authority you don't control, then export evidence
provenant-cloud anchor now --backend tsa --json
provenant-cloud bundle export --format both --out evidence.json --json
# anyone, offline, with no Provenant server and no commercial code
node packages/verifier/bin/lacre-verify.mjs evidence.json --trust digicert-root.pem
A self-hosted chain is self-attested. It proves internal consistency. It does
not prove the operator left history alone — an operator with database access
could rewrite everything, including the verification output that says everything
is fine. chain verify says so in its own response, every time.
That gap is the product boundary. External anchoring (paid) commits the chain head to an RFC 3161 timestamp authority the operator does not control, which is what turns a log into evidence. We are not withholding a feature; we are selling the one property a local system physically cannot provide about itself.
How seriously we take this: packages/cloud/test/forgery.test.ts models an
adversary with full database access, the append-only triggers dropped, and the
agents' signing keys. It rebuilds the entire chain — every hash relinked, every
receipt re-signed — and confirms local verification is completely fooled. Then it
confirms the anchored bundle still fails, because the one thing the adversary
cannot forge is the authority's signature. See
ADR 0003.
The local append-only database triggers stop application bugs and accidents, not a determined operator. Do not oversell them.
draft-sharif-agent-audit-trail may change. We pin the version we implement
and document exactly where we diverge (see
ADR 0002) — notably we default to Ed25519
where the draft specifies ECDSA P-256, so we claim alignment, not
conformance.anchored_through_seq and warns about
un-anchored receipts rather than letting "anchored: true" imply more than it
should.agent list derives per-agent contract-violation, lease-expiry and
approval-escalation rates. Two design choices worth knowing:
Unmeasurable is null, never 0. Contracts are Phase 3 and leases are
Phase 4, so those rates cannot be computed yet. Reporting 0.0 would render a
flawless compliance record for an agent nobody has ever checked — precisely the
flattering false signal this product exists to prevent. A null carries a
plain-language reason instead.
The numbers describe self-reported conduct. They are derived from receipts the agent chose to write. An agent that silently declines to record its failures will look perfect. Receipts make recorded behaviour tamper-evident; they cannot make unrecorded behaviour visible. Useful for spotting a degrading agent, useless against a deliberately deceptive one — and that caveat ships inside the response, not just here.
| Local chain | Anchored chain | |
|---|---|---|
| Detects casual tampering | yes | yes |
| Detects a full rebuild by the operator | no | yes |
| Detects backdating after the anchor | no | yes |
| Detects truncation of the un-anchored tail | no | no |
That last row is why Cloud anchors continuously: new receipts are batched and
the chain head is anchored at most every 15 minutes, which bounds the forgeable
window to 15 minutes. The CLI says so in anchor list output rather than
leaving you to work it out.
packages/
core/ MIT. Receipts, chaining, identity, CLI, local verify.
verifier/ MIT. Standalone offline verifier. Zero cloud, zero core.
cloud/ Commercial. Anchoring, bundles, collector, billing.
core must never import cloud. verifier must never import either, and must
not import a network module. This is enforced by
scripts/check-boundaries.mjs as the first CI step, not by convention — see
ADR 0001 for why the verifier's
independence is stricter than it strictly had to be.
fix block with
ready-to-execute arguments and state whether the action executed.next_actions carries fully-formed
calls with ids filled in, not endpoint names.--fields, --depth,
explicit truncated.Everything needed to operate this service is in one unauthenticated call:
provenant discover --json
It returns the full action list with input/output JSON Schemas, the error code
table with fix shapes, pagination conventions, and a literal ordered quickstart
from nothing to a first verified receipt. If an agent needs this README, the
manifest is incomplete — that is a bug in the manifest.
Reference clients: TypeScript · Python
pnpm install
pnpm run ci # boundaries, typecheck, tests
Test-first is mandatory for anything touching the hash chain, fencing tokens, idempotency or signature verification. Those are the only places correctness genuinely matters, and the places where a bug destroys the product's credibility.
core and verifier are MIT. cloud is commercial — see
packages/cloud/LICENSE.commercial.