Submit an implementation

Send your AIM/AIW metadata. The Store validates it, assigns an Implementation ID, normalizes ResourcePolicies, signs a trust statement and returns the published metadata.

No Implementer ID yet? Register first. To see a valid submission, press Load example below, then Validate only — no credentials needed.

The secret string from your registration.

Required to publish, and must match AIMName in your metadata. Everything is validated against the MPAI-AIF V3 schema. Where this Store holds a schema for the AIM you name, it also reports how you differ from that reference build, as non-blocking advisories; it checks the shape of your Implementations and ResourcePolicies, never your numbers.

Letters, numbers and underscores.

Required keys: Identifier, APIProfile, Description, ExternalPorts, SubAIMs, Topology, Implementations, DataXMData. Your ExternalPorts must match the AIM you declare.

Used instead of the text box above.

Archive

You host the archive; the Store signs its URL and hash. The URL must match the ImplementationURI in your metadata. ("Validate only" doesn't need it.)

How to get the SHA-256 and the size

Linux, macOS or WSL:

sha256sum your-aim.zip     # the 64-character hash
stat -c %s your-aim.zip    # the size in bytes

Windows PowerShell:

Get-FileHash your-aim.zip -Algorithm SHA256
(Get-Item your-aim.zip).Length

Or straight from the published URL:

curl -s -L "YOUR_URL" -o a.bin && sha256sum a.bin && stat -c %s a.bin

The size must match what your server reports.

Proves you authored this submission, not just that you hold the token. Made with your signing key.

How to produce the authorship signature

Run this where your private key lives — the Store never sees it.

MSHA=$(printf '%s' "$(jq -cSa . your_aim.json)" | sha256sum | cut -d' ' -f1)
jq -cSa -n --arg i "YOUR_IMPLEMENTER_ID" --arg m "$MSHA" --argjson a '{
  "download_url":"https://you.example/aims/pkg.tar.gz","sha256":"<64 hex>","size":123
}' '{_type:"mpai-submission",spec_version:"2.0",implementer_id:$i,metadata_sha256:$m,artifact:$a}' \
  | tr -d '\n' > manifest.json
openssl pkeyutl -sign -inkey mpai_key.pem -rawin -in manifest.json -out sub.sig
xxd -p -c 256 sub.sig | tr -d '\n'   # paste this hex into the field above

Keep the a in jq -cSa — it is needed to match the Store's canonical bytes. Requires OpenSSL 3.0+; sign a file, never a pipe.

Validate only shows the preview without storing, assigning an ID or signing. No Implementer ID or token needed.