Developers
What actually exists.
Endpoints
Base URL for this deployment: https://<your-crescent-host>. There is no root /v1 and no public OpenAI-compatible API or developer keys yet — the chat endpoint is a guest-rate-limited relay for the Crescent app.
curl https://<your-crescent-host>/api/status
# {"nvidia":false,"preview":true,"signer":true,"local":false,...} (booleans only)
curl https://<your-crescent-host>/api/receipt-key
# {"configured":true,"alg":"Ed25519","key_id":"crescent-…","public_key_b64":"…"}curl -N https://<your-crescent-host>/api/chat \
-H 'Content-Type: application/json' \
-d '{
"provider": "nvidia", // "nvidia" | "preview" | "local"
"mode": "auto", // "auto" | "fast" | "deep"
"system": "Be concise.",
"max_tokens": 512, // capped at 4096
"messages": [{"role":"user","content":"Hello"}]
}'
# Server-sent events:
# data: {"type":"meta","provider":"nvidia","model":"nvidia/nemotron-3.5-lightning-30b-a3b","reason":"auto: short text → Lightning"}
# data: {"type":"delta","text":"Hi"}
# data: {"type":"done","usage":{…}|null,"receipt":{…}}
# Errors before streaming: 400 invalid body · 409 route unavailable · 413 too large · 429 rate limitedReceipts
Format crescent.receipt/1. The signed bytes are the canonical JSON (recursively sorted keys, no whitespace) of the receipt without signature_b64. request_sha256 commits to model, system, messages (images by their own SHA-256) and max_tokens; response_sha256 commits to the full completion text.
const payload = canonicalize({ ...receipt, signature_b64: undefined });
const key = await crypto.subtle.importKey("raw", b64(receipt.signer.public_key_b64), { name: "Ed25519" }, false, ["verify"]);
const ok = await crypto.subtle.verify({ name: "Ed25519" }, key, b64(receipt.signature_b64), new TextEncoder().encode(payload));
// Then compare receipt.signer.public_key_b64 with GET /api/receipt-keyTry it on Proof. Cost is always null (“not priced”); usage appears only when the upstream reports it.
Server setup
NVIDIA_API_KEY— from build.nvidia.com. Enables Nemotron Super VL and Lightning.CRESCENT_RECEIPT_SIGNING_SEED— configured automatically; derives the stable Ed25519 key.LOCAL_RUNTIME_URL,LOCAL_RUNTIME_MODEL, optionalLOCAL_RUNTIME_KEY— your OpenAI-compatible server (e.g. a tunnel to a Hermes or Bolt host).
Hermes Bridge
Hermes Agent is an MIT-licensed Python agent harness — skills, memory, tools and external inference endpoints. It is not a model and not a JavaScript package, and it cannot run inside Crescent's serverless functions. Crescent's “Hermes Companion” is a character profile, not a running Hermes process.
- Run Hermes on your own machine or VM (Python), configured to call Nemotron via NVIDIA's API or a local model.
- Expose an OpenAI-compatible endpoint from that host behind authentication (e.g. a reverse proxy with a bearer token).
- Set
LOCAL_RUNTIME_URL/LOCAL_RUNTIME_MODEL/LOCAL_RUNTIME_KEYon Crescent's server. The key stays server-side; the browser never sees it. - Select “Self-hosted” in Chat or Orbit. With privacy mode local-only, Orbit refuses any other route.
Self-hosted Bolt
Bolt 74B-A9B is a downloadable model (~24 GB). Crescent does not assume a hosted ID. Serve it with an OpenAI-compatible runtime on your hardware and point the self-hosted route at it. Labelled “runtime required” until configured.
Roadmap
- · Developer API keys — hashed server-side, scoped, revocable, with usage caps (requires accounts).
- · Optional synced history with per-user row-level security.
- · Attestation field populated only when verifiable hardware attestation exists.
- · Possible future launchpad — only with audited on-chain contracts. Nothing exists today.