Download sovereign/README.md from Snapkitty/pax-coder: direct link, hf CLI and curl.
- Browser
- Download file 8.46 kB
-
https://huggingface.co/Snapkitty/pax-coder/resolve/main/sovereign/README.md
- Command line
-
hf download hf://Snapkitty/pax-coder/sovereign/README.md
-
curl -L -o README.md https://huggingface.co/Snapkitty/pax-coder/resolve/main/sovereign/README.md
Sovereign Node Key System
This directory contains the cryptographic authorization infrastructure for PAX-Coder.
What This Is
The Sovereign Node Key system provides:
- Ed25519 Node Authorization β cryptographic identity with authorization for protected operations
- Node Authorization Record β external authority-signed proof that this node is authorized
- Repository Commitment β SHA-256 hash of the repository state at key generation time
- Prior-Art Timestamp β tamper-evident record that this work existed at a particular git commit
- Authorization Verification β tools to verify node authorization status
- Verification Scripts β tools to independently verify integrity and authorization
How to Use
Step 1: Generate a New Node
cd pax-coder/sovereign
./generate_node_key.sh
This creates:
node.jsonβ Public identity manifestnode_pk.pemβ Public key (PEM format)manifest.jsonβ Repository file list with hashesprior_art.jsonβ Prior-art timestamp recordverification.jsonβ Cryptographic verification record.node_skβ PRIVATE KEY (never committed, permissions 400)
Step 2: Request Authorization
Contact PAX-Coder at:
Provide your node.json (public identity only). Do NOT share .node_sk.
Step 3: Receive Authorization Record
After approval and provisioning, you receive:
authorization.jsonβ Authority-signed authorization record for your node
The authorization record contains:
- Your node ID and public key
- Authorization status (ACTIVE, REQUESTED, SUSPENDED, REVOKED, EXPIRED)
- Authorization scope (what operations you can perform)
- Issue/expiration dates
- Authority signature
Step 4: Verify Authorization
./verify_node_key.sh # Verify node identity integrity
../scripts/verify-node-authorization # Verify authorization status
Verify Existing Authorization
./verify_node_key.sh # Verify node key integrity
../scripts/verify-node-authorization # Verify authorization status
Checks (node key):
- All public files are present and valid JSON
- Private key has correct permissions
- Git commit exists in repository
- Repository commitment hash is correct
Checks (authorization):
- Authorization record exists
- Authorization status is ACTIVE
- Authorization has not expired
- Node ID matches
- Revocation status is not REVOKED
Security Model
What This Proves
β Node Identity β Cryptographic identity of the node (Ed25519 public key)
β Node Authorization β External authority has approved this node for protected operations
β Authorization Status β Node is ACTIVE, REQUESTED, SUSPENDED, REVOKED, or EXPIRED
β Authorization Scope β What protected operations this node is authorized to perform
β Integrity β Repository state at a specific git commit
β Timestamp β Work existed no later than this UTC time
β Authenticity β Outputs are signed with a specific Ed25519 key
β Non-repudiation β Holder of the private key can sign artifacts
What This Does NOT Prove
β Alone without authorization record β Node identity alone does not prove authority
β Legal ownership β No embedded legal claims
β Blockchain confirmation β Timestamp is local only (unconfirmed)
β Work quality β Only proves authorization and existence, not correctness or usefulness
Public vs. Private
Never commit to git:
.node_sk(private key file)- Any file containing the private key material
- Passwords or passphrases
Safe to commit:
node.json(public identity)node_pk.pem(public key)manifest.json(repository fingerprint)prior_art.json(prior-art record)verification.json(cryptographic metadata)
Files
node.json
Public identity manifest. Contains:
node_idβ Unique identifieralgorithmβ "Ed25519"public_key_hexβ Public key in hex formatcreated_at_utcβ ISO 8601 timestamprepositoryβ GitHub repo pathgit_commitβ Commit hash at generation timeversionβ System version
manifest.json
Repository state snapshot. Contains:
filesβ Object mapping each tracked file to its SHA-256 hashgenerated_at_utcβ When manifest was createdgit_commitβ Which commit this reflects
prior_art.json
Prior-art timestamp record. Contains:
artifactβ "PAX-Coder"repositoryβ GitHub pathgit_commitβ Commit hashrepository_sha256β Hash of the manifestnode_idβ Node that signed itcreated_at_utcβ UTC timestampstatusβ "UNCONFIRMED" (or "BITCOIN-CONFIRMED" if anchored)
verification.json
Cryptographic record. Contains:
node_idβ Node identifieralgorithmβ "Ed25519"repository_commitment_algorithmβ "SHA-256"repository_commitmentβ The actual commitment hashgit_commitβ Which commitmanifest_fileβ Path to manifestverification_timestampβ When verified
.node_sk
PRIVATE KEY FILE β Never commit, share, or upload.
File permissions: 400 (owner read-only)
Stored locally for signing operations:
export PAX_NODE_KEY=$(cat sovereign/.node_sk | xxd -p | tr -d '\n')
Workflow
1. Generate Key (Once)
./generate_node_key.sh
Outputs all files. Private key is generated once and kept secure.
2. Commit Public Files
git add sovereign/node.json sovereign/manifest.json sovereign/prior_art.json sovereign/verification.json
git commit -m "Add Sovereign Node Key public identity"
DO NOT commit .node_sk.
3. Verify (Any time)
./verify_node_key.sh
Confirms all artifacts are consistent.
4. Sign Outputs
Use the private key (externally or via environment):
openssl dgst -sha256 -sign sovereign/.node_sk -out output.sig output.ptx
Verify with public key:
openssl dgst -sha256 -verify <(openssl pkey -in sovereign/node_pk.pem -pubin -outform DER) -signature output.sig output.ptx
Key Rotation
To rotate to a new key:
- Generate new key in a new subdirectory (e.g.,
sovereign/v2/) - Record the old public key in a rotation record
- Sign the rotation record with the old key
- Commit new key and rotation record
- Keep old private key in secure archive (not in git)
Example rotation record:
{
"old_node_id": "pax-coder-1234567890",
"new_node_id": "pax-coder-1234567999",
"rotation_reason": "scheduled rotation",
"rotation_timestamp": "2026-08-18T00:00:00Z",
"signature_by_old_key": "..."
}
Verification for Others
To verify this artifact (without the private key):
- Clone the repository
- Run
./sovereign/verify_node_key.sh - Check that all files are present and valid
- Compare the git commit hash with the timestamp
- Verify the repository commitment by spot-checking a few files:
sha256sum sovereign/node.json # Should match value in manifest.json - Confirm the node's public key (from
node.json) against any signatures
CI/CD Integration
Add to .github/workflows/security.yml:
- name: Check for private key material
run: |
if grep -r "BEGIN.*PRIVATE\|-----END.*PRIVATE" sovereign/ --include="*.json"; then
echo "ERROR: Private key material in public files"
exit 1
fi
- name: Verify node key integrity
run: |
cd sovereign
bash verify_node_key.sh
Questions?
- What does this prove? See "Security Model" section above.
- Is this blockchain-based? No, it's local + optional Bitcoin anchoring. See
prior_art.jsonstatus. - Can I use a different algorithm? Yes, but Ed25519 is recommended. Update
algorithmfield innode.json. - What if I lose the private key? Key rotation required; new public identity generated; old key recorded.
- Can I backup the private key? Yes, but store encrypted in a secure vault outside git.
Generated by: PAX-Coder Sovereign Node Key System
License: Same as PAX-Coder (BSL-1.1 / AGPL-3.0 / MPL-2.0)