AXM  Protocol
Genesis kernel Core hub
Chat spoke Show spoke Embodied spoke Fleet spoke SFN spoke
AXM Ecosystem · Hardware Custody Spoke

AXM SFN

Prove what a machine attested it did. Every custody tick of a fabrication run — TPM-bound, chained with BLAKE3, sealed at session boundary — verifiable offline, with no vendor infrastructure in the loop.

SPOKE hardware custody
KERNEL axm-genesis 1.0.0rc1
SUITE axm-hybrid1
STREAM AXLF / AXLR
LICENSE AGPL-3.0
§ 01

What It Seals

axm-sfn turns a fabrication node — a Klipper/Moonraker 3D printer today, any CNC or industrial machine tomorrow — into a node that cannot lie about what it made. At session boundary the Python spoke compiles the custody hot buffer into a signed AXM Layer 2 journal shard through the frozen axm-genesis kernel. Genesis compiles and signs; the spoke only reads and hands over evidence.

TPM-Bound Session Journals

Every custody packet is signed by a TPM 2.0 RSA-PSS key that never leaves the node; quotes bind PCR platform state to points in the chain. A VM cannot impersonate a physical node — the hardware attests, offline, to what it did.

The BLAKE3 Custody Chain

A 1 Hz custody clock ticks whether or not the printer talks — silence is recorded, not ignored. Packets are chained with BLAKE3 into a gap-free stream; any discontinuity is E_BUFFER_DISCONTINUITY, the same hard failure as a forged signature.

Sealed-Before-Break Validity

The TPM's classical RSA signatures ride inside the shard's post-quantum axm-hybrid1 seal. An RSA break in 2040 cannot forge a shard sealed in 2026 — the hybrid seal is a cryptographic time capsule over the hardware evidence.

§ 02

The Custody Pipeline

One tamper-evident path from the printer host to a kernel-sealed shard. The Go daemon owns the hot loop; the Python spoke owns exactly one thing — handing evidence to the kernel in a single compile pass. Nothing here reimplements signing, hashing, or Merkle construction.

1

Go axm-edge daemon

Runs next to Klipper on the printer host. A 1 Hz custody ticker snapshots Moonraker state, evaluates the Material-Process Profile, calls tpm.SignPacket(), and computes the BLAKE3 chain link — independent of Moonraker event arrival.

2

SQLite hot buffer

Packets append to a SQLite WAL hot buffer (buffer.db) that survives network outages and power loss. The optional uploader emits local segment digests for monitoring — it is not the shard seal.

3

One-pass axm-sfn compile

At session boundary the spoke reads buffer.db read-only, serializes custody to cam_latents.bin (AXLF/AXLR), and hands the stream, the verbatim packet bytes, and the TPM evidence to compile_generic_shard via extra_content / extra_ext (RFC 0006). No reseal, no injection.

4

Kernel-sealed axm-hybrid1 shard

The axm-genesis kernel computes the Merkle root, signs with axm-hybrid1 (Ed25519 ‖ ML-DSA-44), derives the sh1_ identity from the manifest bytes, and self-verifies. Out comes an AXM Layer 2 journal shard any party can verify offline.

§ 03

Evidence In The Seal

Three canonical JSONL extension tables ride under the shard's axm-hybrid1 Merkle seal. Each indexes bytes stored in content/ by (offset, length, sha256) — the archival rule is hash-over-stored-bytes, so a spec-only verifier never has to reproduce the compiler's canonicalization. All three are sealed in one pass; packets@1 and tpm-attestation@1 are registered in the kernel by RFC 0006.

Extension table Stored in What it carries
ext/streams@1.jsonl content/cam_latents.bin AXLR record locators: frame_id → offset / length / status / chain hash into the custody stream.
ext/packets@1.jsonl content/packets.bin The verbatim canonical packet bytes, indexed by (seq, offset, length, packet_sha256). Hash-over-stored-bytes binds each AXLR record to its packet.
ext/tpm-attestation@1.jsonl content/tpm-attestation.bin TPM trust chain: per-packet signatures, quotes (PCRs, nonce, attest blob), signing-key + AK public areas, and the EK certificate chain.

tpm-attestation@1, not attestation@1

The TPM table is named tpm-attestation@1 to stay distinct from RFC 0005's unrelated attestations@1 (proof-of-when). A session recorded without a TPM produces no such table — absence is the honest statement that no hardware evidence exists.

§ 04

Quick Start

Build · Keygen · Compile a Session bash
# Build the Go edge daemon
$ go build ./cmd/axm-edge/
 
# Install the Python spoke (pulls the pinned axm-genesis kernel)
$ cd python && pip install -e .
 
# Generate an axm-hybrid1 key — 3904-byte secret + .pub, kept offline
$ axm sfn keygen --out sfn-key.bin
 
# Compile a finished custody session into a sealed shard
$ axm sfn compile --db buffer.db --session <session_id> \
    --key sfn-key.bin --out ./shards
✓ Shard compiled and verified: shards/shard_<session_id>
Verify Against The Pinned Kernel pytest
# 23 tests — incl. a compile→verify roundtrip and shard-only chain recomputation
$ cd python && pip install -e '.[dev]' && python -m pytest
....................... 23 passed
 
# No default signing key, ever — a signature proves integrity, never authenticity.
# TPM optional in dev: no /dev/tpmrm0 → software-only mode, recorded honestly.
§ 05

The Three Record Types

Same kernel, same shard format, three domains. Each spoke seals a different question; none of them forks the kernel.

axm-show — Mission Authorization

What may fly, under which ceiling — a one-shot seal over a drone-show specification, with the LAANC ceiling enforced at compile time.

axm-fleet — Lifecycle

What is running on a deployed asset and how it got there — a supersedes chain of record shards over time.

axm-sfn — Hardware Custody

What the machine attested it did — TPM-bound fabrication session journals, sealed at session boundary. This spoke.