📦 gfnet-simulator network: orion

Local/edge simulator of GFNet — control plane (gfnet-api) + GRAIN gateway/message fabric (gfnet-gateway). Synthetic data only, NOT production.

Issuer: https://api.gfnet.dev · Gateway keys: /.well-known/jwks.json · Health: /health

MethodPathPurpose
GET/healthliveness + network + release identity
GET/versionrelease identity {name, version, gitSha}
GET/.well-known/jwks.jsonGFNet gateway co-sign public keys
GET/_idp/.well-known/jwks.jsonmock-IdP token verification keys
POST/oauth2/tokenmint a JWT {sub, scopes?, participant?}
POST/_dev/jwtdev: mint a JWT (env-gated)
POST/v1/entitiesregister an entity (issues a 6-char GRN)
GET/v1/entities/:grnfetch an entity
POST/v1/signing-keysregister a participant ES256 key
POST/v1/invitescreate an invite
POST/v1/invites/:id/acceptaccept -> relationship + roles
POST/v1/entitlementsgrant an entitlement
GET/v1/entitlements/checkhot-path scope check {subscriber, entity}
POST/v1/servicesregister a service group + instance
GET/v1/services/:groupdiscover a service
GET/v1/catalogueslist catalogues
POST/v1/services/:ref/invokeGATEWAY: run a signed GRAIN request through the pipeline
GET/v1/outboxinspect routed + fanout outbox rows
GET/v1/planslist plans

No PII on the network — GRNs only. Three-layer auth (JWT → FGA → entitlement, +plan cap on writes), fail-closed. Every network-visible mutation goes through the transactional outbox. JCS (RFC 8785) + ES256 for every GRAIN signature.