Skip to main content

Open protocol for signing AI-assisted code provenance with Ed25519; shipping software root of trust with SSX360 hardware support in progress.

Project description

Matrix Scroll

Signed provenance for agent-assisted Git commits — verify offline, one command.

Matrix Scroll is a cryptographic evidence layer: when an AI agent (Cursor, Claude Code, Copilot, etc.) produces a commit, a signed commit envelope records actor, tool, and optional scope. Verify locally or in CI without trusting the IDE. The v0.2.x reference SDK ships an emulated Ed25519 root of trust with Git hooks; SSX360/NXP SE050 hardware signing is the compatible reference-device path in progress.

Honest limits

  • Shipping now: L1 emulated Ed25519 software key; Git post-commit hooks; Scroll Gate PR verification (0.2.3+); delegation attestation schema (0.2.4+)

  • In progress: SSX360 SE050 hardware provider; YubiKey PKCS#11 bridge

  • Not: IAM, sandbox, prompt-injection filter, or agent runtime

  • 📜 Spec: SPEC.md — wire format, canonical encoding, document types.

  • 📋 Commit envelope schema: schemas/commit-envelope.v1.json

  • 📄 Whitepaper: docs/WHITEPAPER.md — why Git commits, implementation guide.

  • ⚖️ Comparison: docs/COMPARISON.md — vs Sigstore, agentmark, Alien, ForgeProof.

  • 💬 Support: SUPPORT.md — issues, Discussions, security contact.

  • 🛡 Agentic AI controls: docs/AGENTIC_AI_SECURITY.md maps Matrix Scroll to the joint Careful Adoption of Agentic AI Services guidance.

  • 🔐 Algorithm: Ed25519 (RFC 8032). Private keys are never exposed by the SDK API.

  • 🧪 Conformance vectors: vectors/ — for non-Python implementations.

  • 🌐 Site: https://matrixscroll.com

  • 🔧 Reference device: SSX360 (NXP SE050 hardware path in progress).

Agent provenance for Git commits

pip install "matrixscroll>=0.2.1"
matrixscroll hook-install

export MATRIXSCROLL_ACTOR_TYPE=agent
export MATRIXSCROLL_TOOL=cursor
git commit -m "feat: agent-assisted change"

matrixscroll envelope-verify "$(git rev-parse HEAD)"

See docs/quickstart-git.md and run examples/demo/agent-commit-demo.sh.

CI verify (single manifest)

- uses: SSX360/matrixscroll-verify-action@v1
  with:
    manifest: examples/agentic_ai_evidence_manifest.signed.json
    matrixscroll-version: "0.2.4"
    require-mode: emulated

Scroll Gate (PR commit range)

Developers publish envelopes to git notes before PR review:

matrixscroll envelope-publish-notes --base origin/main --head HEAD
git push origin refs/notes/matrixscroll
- uses: actions/checkout@v4
  with:
    fetch-depth: 0
- uses: SSX360/matrixscroll-verify-action@v1
  with:
    head-ref: ${{ github.event.pull_request.head.sha }}
    base-ref: ${{ github.event.pull_request.base.sha }}
    source: notes
    matrixscroll-version: "0.2.4"
    summary-output: provenance-summary.json

See docs/quickstart-git.md and examples/ci/protected-branch.yml.

Policy flags (--require-mode, --trusted-keys, actor/delegation policy) ship in 0.2.2+.

Quickstart (Python API)

pip install "matrixscroll>=0.2.1"
import matrixscroll

print(matrixscroll.status())
# {'schema': 'matrixscroll.identity.v1', 'available': True,
#  'mode': 'emulated', 'device_id': 'MS-A3F2-9C81', ...}

# Sign a release manifest, commit envelope, evidence pack, or SBOM
signed = matrixscroll.sign_manifest({"release": "v1.0.0", "artifacts": [...]})

assert matrixscroll.verify_manifest(signed)

CLI

$ matrixscroll status
{
  "available": true,
  "device_id": "MS-A3F2-9C81",
  "mode": "emulated",
  "public_key": "...",
  "schema": "matrixscroll.identity.v1"
}

$ matrixscroll sign release.json > release.signed.json
$ matrixscroll verify release.signed.json
{"device_id": "MS-A3F2-9C81", "mode": "emulated", "ok": true, "signed_at": "..."}

matrixscroll verify exits 0 on a valid signature, 2 on any failure (tampered manifest, missing signature block, wrong schema/algorithm, mismatched device id, malformed public key, unreadable file). Pipe it from CI without parsing the output.

How it works

   your IDE / agent / CI
            │
            │  commit envelope, release manifest, evidence pack, SBOM
            ▼
   matrixscroll.sign_manifest(...)  /  post-commit hook
            │
            │  canonical JSON  (sorted keys, ASCII-escaped, no NaN,
            │                   signature block excluded from input)
            ▼
   IdentityProvider          ──►  Ed25519 signature
   (L1 emulated today,
    SSX360 / SE050 roadmap)
            │
            ▼
   signed document  ──►  matrixscroll.verify_manifest(...)
                         (anyone, anywhere, offline)

Switch providers with MATRIXSCROLL_MODE. Hardware mode reports unavailable until the SE050 transport ships.

Compliance levels

Level Provider Backed by Status
L1 Emulated EmulatedProvider Software key, file-backed (0600) ✅ Shipping
L2 Hardware HardwareProvider NXP SE050 secure element (SSX360) 🛠 In progress
L3 Attested future L2 + remote attestation 🗺 Roadmap

status() exposes the active level via the mode and available fields.

Storage and trust boundaries

  • Emulated key store: ~/.matrixscroll/device.json (override with MATRIXSCROLL_HOME).
  • The directory is created 0700; the seed file is opened 0600 with O_CREAT|O_EXCL so the private seed is never momentarily world-readable.
  • A corrupt or truncated store fails loud (IdentityError) rather than silently minting a fresh identity.
  • The planned hardware path holds nothing private on disk — the seed is sealed in the secure element.

Reference implementation, not the only one

Matrix Scroll is a protocol. This Python package is the reference. We welcome implementations in Rust, Go, TypeScript, and embedded C — run them against vectors/ to self-certify. See CONTRIBUTING.md.

Agentic AI guidance proof

The repo includes a machine-readable control matrix at controls/agentic_ai_controls.json, an example bounded-agent evidence manifest at examples/agentic_ai_evidence_manifest.json, and executable checks in tests/test_agentic_guidance.py.

License

  • Code: Apache-2.0 (LICENSE).
  • Specification text (SPEC.md, vectors/): CC0 1.0 — public domain.

Security

See SECURITY.md. Report vulnerabilities privately to security@matrixscroll.com or via a GitHub Security Advisory.

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

matrixscroll-0.2.5.tar.gz (74.0 kB view details)

Uploaded Source

Built Distribution

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

matrixscroll-0.2.5-py3-none-any.whl (39.6 kB view details)

Uploaded Python 3

File details

Details for the file matrixscroll-0.2.5.tar.gz.

File metadata

  • Download URL: matrixscroll-0.2.5.tar.gz
  • Upload date:
  • Size: 74.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for matrixscroll-0.2.5.tar.gz
Algorithm Hash digest
SHA256 ab8054b04626a6ba5c9a0d96be32a465c650a84e4e1b72adfb5e3f254bc47c15
MD5 043ac317016f1adb17ff6396e2ae004f
BLAKE2b-256 5adc5df53c86fa19429fdb313c86c5a4d674a5a9c37f3040f9eea2a8f34fa8d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for matrixscroll-0.2.5.tar.gz:

Publisher: publish.yml on SSX360/matrixscroll

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file matrixscroll-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: matrixscroll-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 39.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for matrixscroll-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2ae2ca40690141b96247f2650099e98f81f8f1f096a0de5a374843ce80b2cd06
MD5 afe8efc716ccc7940d45359b177ad4e5
BLAKE2b-256 c28b27dc50e943889f9ca50391708966f20e62877f9f345e70e6bf28bb3869c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for matrixscroll-0.2.5-py3-none-any.whl:

Publisher: publish.yml on SSX360/matrixscroll

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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