Cloudflare Workers — GTP v1.1

Graf Forge

Sovereign Package Registry

Content-addressed storage, Ed25519-signed releases, agent-native API. The forge that ships with your Soul Key — not your PII.

GTP v1.1 Wire Protocol
SBI v1.0 Binary Encoding
BLAKE3 Content Addressing
Ed25519 Soul Key Auth

The Forge at the Edge

Graf Forge is cloud-native registry infrastructure. R2 for objects, D1 for refs, KV for sessions. BLAKE3 WASM at every edge node. GTP v1.1 as the single wire protocol.

⚙

GTP v1.1 Transport

Unified wire protocol for VCS + package distribution. One connection, all operations.

🔒

Ed25519 Auth

Challenge-response session tokens. Your Soul Key never leaves your machine.

📁

CAS + Refs

BLAKE3 content-addressed storage with atomic compare-and-swap ref updates.

📦

GPAK Streaming

Bulk object transfer with length-prefixed frames and BLAKE3 footer checksum.

One Protocol. Everything Ships.

GTP — Graf Transfer Protocol — handles version control, package distribution, and identity in a single wire protocol.

AUTH Challenge-Response

Ed25519 challenge → sign → session nonce. No passwords. No tokens to rotate.

BLAKE3(challenge ++ sig ++ secret)

CAS Content-Addressed Storage

R2-backed CAS. Push objects by CID, pull by CID. Every write is idempotent.

REF Atomic Ref Updates

Compare-and-swap on every ref write. Race-safe. Tags are immutable once created.

old_cid must match or reject

SBI Zero-Copy Encoding

Binary serialization for high-performance sync. No JSON overhead. CBOR-native.

PKG Package Distribution

Same protocol, same identity. graf publish seals with your SoulKey, pushes to registry.

GPAK Bulk Transfer

Pack multiple objects into a single framed stream. Length-prefixed frames, BLAKE3 footer.

GTP v1.1 Endpoints

Base URL: https://graf-forge.org/v1/repo/{owner}/{name}

GET / Content negotiation root (SBI, JSON, HTML)
POST /auth {owner}/{name} Initiate Ed25519 challenge-response
POST /auth/verify {owner}/{name} Verify signed challenge, issue session
PUT /cas/{cid} Upload CAS object by BLAKE3 CID
GET /cas/{cid} Retrieve CAS object by CID
POST /cas/exists {owner}/{name} Batch-check CID existence
GET /refs {owner}/{name} List all refs (branches, tags)
PUT /refs/{ref_path} Atomic CAS update with old_cid check
POST /negotiate {owner}/{name} DAG sync negotiation
GET /health Service health + dependency status

SBI Native For Agents

agent.sbi
// Content negotiation — binary first
GET /
Accept: application/x-sbi

// Authentication — Ed25519 challenge-response
POST /v1/repo/{owner}/{name}/auth
POST /v1/repo/{owner}/{name}/auth/verify

// CAS — push/pull by BLAKE3 CID
PUT  /v1/repo/{owner}/{name}/cas/{cid}
GET  /v1/repo/{owner}/{name}/cas/{cid}
POST /v1/repo/{owner}/{name}/cas/exists

// Refs — atomic compare-and-swap
GET  /v1/repo/{owner}/{name}/refs
PUT  /v1/repo/{owner}/{name}/refs/{ref_path}

// DAG sync
POST /v1/repo/{owner}/{name}/negotiate
challenge-response blake3-cids session-tokens per-agent-branches

JSON API For Developers

Init. Auth. Push.

Single static binary. GTP-native push. No build step required.

terminal
# Install Graf CLI
$ curl -fsSL https://graf.tools/install.sh | sh

# Create a repository
$ graf init --name my-project

# Generate your Soul Key identity
$ graf key generate
# → SoulKey: grf:a8b7c9d2 + Ed25519 keypair

# Authenticate with the forge
$ graf auth graf-forge.org

# Push to registry — GTP native
$ graf push graf-forge.org
# → Push complete: 4 objects, 176 bytes, 1 ref updated

Operational

Forge Operational
Native Push Live
Protocol GTP v1.1
Encoding SBI v1.0
Crypto BLAKE3 + Ed25519
Runtime Cloudflare Workers
Storage R2 + D1 + KV
SHA-256 Zero. None.