Council of AI — GSPC

Free, keyless AI-measurement board: board totals, per-axis reads, and offline-verifiable Ed25519 measurement cards.

Documentation

CSOAI — Council of AI

22 axes measured · 14 model fleets · 3 public leader scores · 8 fact runs · TIE is TIE · not a certificate.

22 axes measured · 14 model fleets · 3 public leader scores · 8 fact runs · TIE is TIE · not a certificate.

PyPI csoai-gspc npm csoai-gspc-mcp DOI 10.5281/zenodo.21991104 License MIT

Independent AI-governance measurement. This repository is the live site, API and signing pipeline behind councilof.ai: the 22-axis GSPC board, Ed25519-signed measurement cards, the signed Merkle public root and its transparency-log witness, the corrections ledger, the A2A agent card, the x402 manifest, and the PyPI / npm readers. Measurement, not certification.

derived 2026-09-05T14:30:46Z by scripts/github/org-readme.py — every number on this page is read live from the URLs in that script; if this page and the API disagree, the API is right.

The board today

GET https://councilof.ai/api/gspc — schema csoai.gspc-axes/0.5 · totals.public_count = 22 axis · 22 measured

#axisfamilykindnstatusseparationleader carried?
1governancegspcmodel-comparison237MEASUREDUNTESTEDno — own model led, excluded
2safetygspcmodel-comparison36MEASUREDTIEyes — accuracy 0.944
3provenancegspcmodel-comparison32MEASUREDUNTESTEDno — own model led, excluded
4continuitygspcmodel-comparison33MEASUREDUNTESTEDno — own model led, excluded
5conformancegspcmodel-comparison35MEASUREDUNTESTEDno — own model led, excluded
6opennessgspcmodel-comparison32MEASUREDUNTESTEDno — own model led, excluded
7machinery-conformitygspcmodel-comparison33MEASUREDUNTESTEDno — no signed card
8caregspcmodel-comparison199MEASUREDUNTESTEDno — own model led, excluded
9cross-realitygspcmodel-comparison32MEASUREDUNTESTEDno — no signed card
10detector-interopgspcmodel-comparison33MEASUREDUNTESTEDno — no signed card
11art5-safeguardgspcmodel-comparison36MEASUREDUNTESTEDno — own model led, excluded
12swarmgspcmodel-comparison37MEASUREDSEPARATEDyes — accuracy 0.384
13affectgspcmodel-comparison41MEASUREDUNTESTEDno — own model led, excluded
14jailgspcmodel-comparison71MEASUREDTIEyes — accuracy 0.5915
15provenance-controlsfinancialdeterministic-facts6MEASUREDno leader by design (facts run)
16reserve-attestationfinancialdeterministic-facts16MEASUREDno leader by design (facts run)
17regulatory-frameworkfinancialdeterministic-facts16MEASUREDno leader by design (facts run)
18distribution-integrityfinancialdeterministic-facts16MEASUREDno leader by design (facts run)
19custody-disclosurefinancialdeterministic-facts16MEASUREDno leader by design (facts run)
20ai-adoption-componentsfinancialdeterministic-facts2MEASUREDno leader by design (facts run)
21labour-componentsfinancialdeterministic-facts2MEASUREDno leader by design (facts run)
22humanoid-labour-indexfinancialdeterministic-facts8MEASUREDno leader by design (facts run)

Counted from the axes array at derive time: 22 rows — MEASURED 22 — agrees with totals.axes. Separation over the 14 model-comparison axes: SEPARATED 1 · TIE 2 · UNTESTED 11. A TIE is not a win; UNTESTED is not a win; a facts run has no leader. Living stamp: SIGNED (did:web:csoai.org#board-attestation-1). Board data: CC-BY-4.0.

What a stranger can verify in four curls

# 1. the lid — the one sentence the board is allowed to say about itself
curl -s https://councilof.ai/api/gspc | python3 -c 'import sys,json; print(json.load(sys.stdin)["totals"]["lid"])'

# 2. the signed public root — Merkle root, leaf count, timestamp (card_count MUST equal len(card_sha256))
curl -s https://councilof.ai/root.json | python3 -c 'import sys,json; r=json.load(sys.stdin); print(r["merkle_root"], r["card_count"], len(r["card_sha256"]), r["as_of"])'

# 3. pin the card key from the DID document — never trust the key a card ships with
curl -s https://csoai.org/.well-known/did.json | python3 -c 'import sys,json,base64; k=[v for v in json.load(sys.stdin)["verificationMethod"] if v["id"].endswith("#card-attestation-1")][0]["publicKeyJwk"]["x"]; print(base64.urlsafe_b64decode(k+"="*(-len(k)%4)).hex())'

# 4. verify any card against that pinned key — three states only: VALID · INVALID · UNCHECKABLE
pipx run --spec 'csoai-gspc[verify]' csoai-gspc verify "$(curl -s https://councilof.ai/signed/card_index.json | python3 -c 'import sys,json; print(json.load(sys.stdin)["cards"][0]["card"])')"

The integrity stack

layerlive nowwhere
1 · Ed25519-signed measurement cards335 cards (n_cards == n_cells: True), one key d4cb0eaa… = did:web:csoai.org#card-attestation-1/signed/card_index.json · how to verify
2 · Signed Merkle public rootcsoai.public-root/v1 · root 6347384aa686… · 167 leaves (card_count == len(card_sha256): True) · as_of 2026-09-05T12:39:29Z · signed: True/root.json · how to verify the root
3 · Transparency-log witnessRekor WITNESSED · OpenTimestamps STAMPED_PENDING_BITCOIN · EAS NOT_YET · witnessed root 6347384aa686… equals live root.json at derive time: True · pointer's own last drift check DRIFTED at 2026-09-05T12:39:37Z · conflict NONE/interop/root-witness-pointer.json · sidecar
4 · Corrections ledger46 entries · latest C-2026-0822-01 (2026-08-22) · signature_state STALE · CC-BY-4.0/api/corrections
Living board stampSIGNED under did:web:csoai.org#board-attestation-1/api/gspcmeasured_on.living_stamp
Third-party Hub cells826 cells: MEASURED 756 · UNMEASURED 70 · complete read: True/api/hub-cards
Keys (DID)did:web:csoai.org · 5 verification methods · card key x=1MsOqhbV9Q…/.well-known/did.json
A2A agent card · x402 manifestCouncil of AI — Measurement Agent, 6 skills · csoai.x402/0.2, network eip155:8453, mode live, 9 metered resources/.well-known/agent.json · /.well-known/x402.json

Three different card numbers appear above on purpose and are never reconciled here: the signed-card chain (335), the public-root leaf count (167) and the Hub cells (826) are three populations with three source URLs. Quote each with its URL.

Buyers (the one number): distinct_nonself_payers = 0 all-time · 0 in 30 d · 0 settlements · status MEASURED — read from /api/revenue. Published because a measurement body that hides its own zero has no standing to publish anyone else's.

Install the readers

pip install csoai-gspc          # 0.2.20260905 — board, axis, verify, root, snapshot
npx csoai-gspc-mcp              # 0.2.1 — stdio MCP server over the same endpoints

Products

productwhat you getdoor (live status at derive time)
commission-cardCommission a signed card (request-attestation)/api/request-attestation?subject=csoai&axis=honesty402
evidence-bundleEvidence bundle mapped to an obligation/api/evidence-bundle?obligation=article-50&subject=csoai&bundle=1402
eu-ai-act-packEU AI Act pack (Article 50 / 53 transparency)/api/evidence-bundle?obligation=article-53&subject=csoai&bundle=1402
swift-bank-packSWIFT/bank census evidence pack/api/evidence-bundle?obligation=dora&subject=csoai&bundle=1402
xrpl-asset-evidenceXRPL asset evidence card (per request)/api/rwa/evidence?asset=RLUSD402
signed-data-feedSigned data feed (assembly + cadence)/api/eunomia-data?feed=1402
provider-diff-feedProvider document diff feed/api/feeds/provider-diff?history=1402
receipts-batchReceipts batch (historical measurement leaves)/api/receipts/batch?from=2026-09-01&to=2026-09-05402

8 products read from docs/product/_INDEX.json (as_of 2026-09-05T12:20:02Z). A 402 means the door is metered by x402 and the amount appears only in that 402 challenge — never here, never on the board. Verification of every artefact is free.

Where the board is published

surfacewhat lands thereread back at derive timecarries the live root as_of?
Hugging Face dataset csoai/gspc-boardsnapshot/ — board.json + root.json byte-for-byte, SNAPSHOT.json, check-board.sh, gspc-axes.csv/.jsonlas_of 2026-09-05T12:39:29Z · merkle 6347384aa686… · 167 leaves · modified 2026-09-05T14:16:15.000Zyes
Hugging Face Space csoai/gspc-boardthe same snapshot/ folder beside the one living Spaceruntime RUNNING · modified 2026-09-05T14:20:16.000Zn/a
Kaggle dataset nicktempleman/csoai-gspc-living-boarda new dataset version per changed fingerprint; the subtitle carries as_ofHTTP 200 · latest ISO timestamp on the listing page 2026-09-05T12:42:38Zno — behind
GitHub mirror CSOAI-ORG/gspc-boardthe snapshot files on mainas_of 2026-09-05T12:39:29Z · merkle 6347384aa686… · 167 leavesyes
Zenodo 10.5281/zenodo.22293340a new version under the concept DOI, isDerivedFrom the methodology record 10.5281/zenodo.219911041 versions · latest 10.5281/zenodo.22347020 = as_of 2026-09-05T12:39:29Z (2026-09-05)yes
PyPI csoai-gspccsoai-gspc==0.2.<YYYYMMDD> — reader + verifier, snapshot bundled as package data0.2.20260905 · uploaded 2026-09-05T12:43:09 · Apache-2.0n/a
npm csoai-gspc-mcpstdio MCP server over the same endpoints (published by hand — the account is WebAuthn, so the daily spray cannot push here)0.2.1 · published 2026-09-04T05:55:01.892Z · Apache-2.0n/a

Pushed by scripts/spray/gspc-spray.py (daily, idempotent by as_of and fingerprint). The live root as_of at derive time was 2026-09-05T12:39:29Z; a surface that lags is shown lagging, not reconciled. Board data is CC-BY-4.0; the reader packages are Apache-2.0 / Apache-2.0.

Hosting and deploy

HostCloudflare Pages projectDeploy
councilof.ai / wwwcouncilof-aiGitHub Actions deploy.ymlwrangler pages deploy
csoai.orgcsoai-siteWrangler (csoai-site-deploy.yml)

Vercel is not the live host. The leftover Vercel Git links (csoai-v2-app, councilof-ai-src) were disconnected and those Vercel projects deleted on 31 Aug 2026.

Build (this repo):

npm run build:client
bash scripts/prerender-run.sh --dist dist/client --wait 900 --min 350
# GHA deploy.yml ships dist/client to Cloudflare Pages

Do not run npx vite build from the repo root (it picks up a dead src/). Do not vercel deploy this site.

Documentation

What we never do

  • Certify AI systems or issue compliance badges
  • Sell ratings, ranking position, or early sight of grades
  • Remediate or recommend fixes in exchange for fees
  • Take money in either direction from anything we rank

Surfaces

SurfacePurpose
councilof.aiMeasurement body — signed credentials, verify, scoreboard
csoai.orgPublic site / DID apex
meok.aiMEOK OS — yours, on your keys

License

MIT © CSOAI-ORG


Council of AI · CSOAI LTD · UK Companies House 16939677 · We measure. We sign. We re-attest.