Skip to content

Help wanted: port the AGP SDK to a new language (Rust, Go, Java, …) #16

Description

@Faux16

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)

  1. Canonicalization — RFC 8785 JCS (use a vetted lib if your language has one).
  2. Signing/verification — Ed25519 detached signatures per ADR 0001: set signature = {key_id, alg}, JCS-canonicalize, sign, attach value.
  3. Schema validation against the JSON Schemas (event, policy, decision-request/response, discovery, actor).
  4. Pass the vectorsspec/test-vectors/v0.1-*.json. Green = conformant.
  5. (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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedMaintainers welcome outside help on this issue

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions