Meta
Provider discovery. The host reads it when the user connects a provider and checks `protocol`, `services` and `limits`.
Protocol version, offered services, limits, proof-of-work parameters, viewer pages, server functions and the operator. No authentication.
Provider metadata.
application/json- response
protocol*integerservices*array<>limits*Defaults (DEFAULT_LIMITS): store 1,000,000 bytes / 1,000 keys / 64,000 bytes per value; channels 5 open, TTL 60–86,400 s (default 900), 5 peers, 4,096-byte frames, 60 frames/min, 64 mailbox slots; push 100 pending; functions 60 calls/min; 20 joins per IP per minute.
pow*Proof of work for POST /v1/devices.
pages*array<>Static viewer pages served at /w/<plugin>/<page>.
functions*array<>operator*curl -X GET 'https://cloud.example.org/v1/meta'{ "protocol": 1, "services": [ "store" ], "limits": { "store": { "maxBytes": 0, "maxKeys": 0, "maxValueBytes": 0 }, "channels": { "maxOpen": 0, "minTtlS": 0, "maxTtlS": 0, "defaultTtlS": 0, "maxPeers": 0, "frameBytes": 0, "framesPerMin": 0, "mailboxSlots": 0 }, "push": { "maxPending": 0 }, "functions": { "callsPerMin": 0 }, "joinsPerIpPerMin": 0 }, "pow": { "difficulty": 0, "salt": "string" }, "pages": [ { "plugin": "string", "page": "string" } ], "functions": [ { "plugin": "string", "name": "string", "version": 1 } ], "operator": { "name": "string", "contact": "string", "privacyURL": "http://example.com" }}cloud-protocol package
@pku-harness/cloud-protocol: the zod wire schemas, path builders, envelope crypto, share-link helpers, proof of work and token challenge that the app, providers and viewer pages share.
Devices and auth
A device's cloud identity is an Ed25519 signing key plus an X25519 box key, nothing else: no student ID, no name. Registration costs a proof of work; plugin tokens are minted from a signed challenge and live 10 minutes.