Skip to main content
TermMeaning
CoordinatorRust service running inside a Nitro Enclave (the Nautilus pattern). Brokers inference jobs: runs the auction, issues dispatch tokens, signs routing receipts. Never runs inference itself.
NodeRust binary run by independent GPU providers. Joins the libp2p mesh, bids on inference requests, runs the model, signs a ProofOfInference per completed job.
chat-relayerA second Nitro Enclave service backing chat.pinaivu.ai, following the same Nautilus pattern as the coordinator. Adds cross-session memory via embeddings + Walrus. See Memory layers.
GatewayStateless OpenAI-compatible service backing api.pinaivu.com. Per-key auth, no memory layer, plain HTTP — not an enclave.
EnclaveAn AWS Nitro Enclave — an isolated VM with no external storage and only a VSOCK channel to its parent. Used here to make the coordinator’s (and chat-relayer’s) signing key tamper-resistant.
NautilusThe architectural pattern of running a service inside a Nitro Enclave, attesting it with NSM, and registering the attested key on-chain so its outputs are independently verifiable. Both the coordinator and chat-relayer follow it.
NSMNitro Security Module — a virtual TPM-like device that produces COSE_Sign1 attestation documents binding an Ed25519 pubkey to the running PCRs.
PCRPlatform Configuration Register — a SHA-384 digest measuring code identity. PCR0 = enclave image, PCR1 = kernel, PCR2 = application.
EIFEnclave Image Format — the bootable artifact nitro-cli runs. Built from a kernel + initramfs by eif_build.
SidecarLong-lived TypeScript Express server colocated with the coordinator inside the enclave. Holds the Sui operator private key and signs PTBs on the coordinator’s behalf.
Operator keySui Ed25519 keypair that pays gas and holds Cap<ENCLAVE>. Lives in the sidecar’s memory only. Not what authorises payouts — that’s the enclave key.
Enclave keyThe Ed25519 keypair the coordinator generates fresh at every boot. Bound into the NSM attestation document. Registered on-chain as the canonical signer for Pinaivu receipts.
Enclave<ENCLAVE>On-chain shared object storing the enclave’s registered pubkey. Created by pinaivu::enclave::register_enclave.
Cap<ENCLAVE>On-chain owned object proving admin rights over EnclaveConfig<ENCLAVE>. Held by the operator address.
VaultOn-chain shared object holding the Pinaivu treasury per coin type. settle() is the only path that moves funds out, gated by a coordinator-signed receipt.
RoutingReceiptSigned audit artefact for one completed inference job. Holders of (receipt, coordinator_pubkey) can verify offline; the on-chain vault checks the same signature when disbursing.
CompletionAckWhat a node sends back to the coordinator after finishing a job. Carries Vec<ProofOfInference> — one per contributing node.
ProofOfInferenceA node-signed attestation: “I (with this Ed25519 pubkey) processed input with this hash, produced output with this hash, in N ms.”
DispatchTokenWhat the coordinator returns to a client after the auction. The client hands it to the node to authorise the work; the node verifies it was issued by the registered enclave.
ApalisRust async job-queue library, Postgres-backed. Used for the deadline watcher and settlement worker.
VSOCKLinux virtio socket used between the EC2 host and an enclave. The enclave has no other network path.
NanoXPayment unit — 1 X = 10⁹ NanoX. All bid prices and payout amounts are in NanoX.
IntentMessageBCS-encoded envelope { intent: u8, timestamp_ms: u64, payload } used for coordinator/chat-relayer signatures. The intent byte scopes the signature so one artefact type’s signature can’t be replayed as another.
.env.runtime.dynamicHost-side file holding post-boot discovered values (e.g. PINAIVU_ENCLAVE_OBJECT_ID). Concatenated with ~/.env.runtime and pushed into the enclave via VSOCK:7000 at startup. Survives deploys; .env.runtime itself is overwritten on every deploy.
Admin endpointPOST /v1/admin/set-enclave-id and GET /v1/admin/settlements/{request_id}. Authenticated with X-Sidecar-Secret.
log_forwarderNative Rust thread in init that polls /tmp/coordinator.log and streams new bytes to VSOCK:5000 via libc::send(MSG_NOSIGNAL). Replaces an earlier socat EXEC:tail -f chain that block-buffered after the first burst.
WalrusContent-addressed decentralized storage network — genuinely decentralized, alongside the GPU node mesh. Used for the routing-receipt archive and for chat session/memory blobs. See Decentralization & verifiability model.
libp2p meshThe open gossipsub + request-response network nodes join to receive inference requests, bid, and ack completions. No permission from Pinaivu required to join.
Intra-session memoryNode-side conversation continuity within a single chat session, backed by an encrypted Walrus blob chain. See Memory layers.
Cross-session memorychat-relayer-side long-term user facts, recalled via pgvector similarity search over encrypted Walrus blobs. See Memory layers.
zkLoginSui primitive that derives a self-custodied address from an OAuth (OIDC) identity via a zero-knowledge proof — no seed phrase. Used by the developer console for seedless sign-in. See zkLogin Authentication.
Ephemeral keyThrowaway Ed25519 keypair the browser generates per zkLogin session. It signs transactions; the ZK proof binds it to the user’s address until maxEpoch. Distinct from the coordinator’s enclave key.
Salt (zkLogin)Per-user secret mixed with the JWT sub/aud to compute the addressSeed, hiding the OAuth↔Sui-address link. In production it should be held by a persistent salt service (e.g. Enoki).
addressSeedThe value (genAddressSeed(salt, "sub", sub, aud)) that, with the OIDC issuer, deterministically yields the zkLogin Sui address and is embedded in the zkLogin signature.
maxEpochThe Sui epoch after which a zkLogin proof and its ephemeral key expire — the effective session lifetime. Set via additionalEpochs when requesting the nonce.
EnokiMysten Labs’ hosted zkLogin service. Pinaivu uses it for the salt-backed nonce and for generating the ZK proof from the OAuth JWT.