AGP is defined by bytes, not by a language — the cross-language vectors in spec/test-vectors are the contract. If a new SDK produces the same canonical bytes and signatures, it's conformant. A language port is one of the highest-impact contributions you can make — and a great self-contained project to own.
Why it matters
Two reference SDKs (Python, TypeScript) agree on every byte today. A third independent implementation is what turns AGP from "a Python+TS dialect" into a real protocol.
What a port needs (priority order)
- Canonicalization — RFC 8785 JCS (use a vetted lib if your language has one).
- Signing/verification — Ed25519 detached signatures per ADR 0001: set
signature = {key_id, alg}, JCS-canonicalize, sign, attach value.
- Schema validation against the JSON Schemas (event, policy, decision-request/response, discovery, actor).
- Pass the vectors —
spec/test-vectors/v0.1-*.json. Green = conformant.
- (optional) policy DSL evaluator, mirroring Python/TS.
Claim one
Comment with your language (Rust, Go, Java, C#, Ruby, …). We'll spin up openagp/sdk-<lang> (or adopt your prototype). Reference: sdk-python and sdk-typescript — same shape, same fixtures, same vectors.
Definition of done
sign+verify round-trip, byte-identical to the reference on v0.1-signatures.json.
- All
spec/test-vectors/v0.1-*.json pass.
- Short README +
sign / verify / validate public API.
Want to scope it first? Open a thread in Discussions. Mentoring available.
AGP is defined by bytes, not by a language — the cross-language vectors in
spec/test-vectorsare the contract. If a new SDK produces the same canonical bytes and signatures, it's conformant. A language port is one of the highest-impact contributions you can make — and a great self-contained project to own.Why it matters
Two reference SDKs (Python, TypeScript) agree on every byte today. A third independent implementation is what turns AGP from "a Python+TS dialect" into a real protocol.
What a port needs (priority order)
signature = {key_id, alg}, JCS-canonicalize, sign, attachvalue.spec/test-vectors/v0.1-*.json. Green = conformant.Claim one
Comment with your language (Rust, Go, Java, C#, Ruby, …). We'll spin up
openagp/sdk-<lang>(or adopt your prototype). Reference:sdk-pythonandsdk-typescript— same shape, same fixtures, same vectors.Definition of done
sign+verifyround-trip, byte-identical to the reference onv0.1-signatures.json.spec/test-vectors/v0.1-*.jsonpass.sign/verify/validatepublic API.Want to scope it first? Open a thread in Discussions. Mentoring available.