Build on NUCALORIC.
The NUCALORIC API is OpenAI-compatible. If your code already talks to the Chat Completions API, change the base URL and the key.
Quickstart
- Create an account. It starts with $0.50 of credit.
- Open API keys in the app and create a key. It's shown once; store it as
NUCALORIC_API_KEY. - Point any OpenAI SDK at
https://YOUR-NUCALORIC-HOST/v1.
pip install openai from openai import OpenAI import os client = OpenAI(base_url="https://YOUR-NUCALORIC-HOST/v1", api_key=os.environ["NUCALORIC_API_KEY"]) r = client.chat.completions.create( model="qwen2.5-coder:7b", messages=[{"role": "user", "content": "Write a Python function that slugifies a title"}], ) print(r.choices[0].message.content) print(r.usage) # prompt_tokens, completion_tokens, total_tokens, cost_usd
Authentication
Send your key as a bearer token on every request. Keys start with nuc_live_. Only a hash is stored, so a lost key can't be recovered: revoke it and create a new one.
Authorization: Bearer nuc_live_…
Chat completions
POST /v1/chat/completions takes model, messages (system, user and assistant roles), and optionally max_tokens, stream and response_format. If you leave model out, the default general model is used.
curl https://YOUR-NUCALORIC-HOST/v1/chat/completions \ -H "Authorization: Bearer $NUCALORIC_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gemma4:12b", "messages": [ {"role": "system", "content": "You write release notes."}, {"role": "user", "content": "Summarize: fixed login bug, added dark mode"} ] }'
The response has the standard shape, with usage.cost_usd added: the exact amount charged for the call.
Streaming
Set "stream": true to receive server-sent events with chat.completion.chunk objects. The final chunk includes usage, and the stream ends with data: [DONE].
const stream = await client.chat.completions.create({ model: "qwen2.5-coder:7b", messages, stream: true }); for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
JSON output
Pass response_format: {"type": "json_object"} to get valid JSON, or {"type": "json_schema", "json_schema": {"schema": {…}}} to constrain output to a schema on open models.
Models
GET /v1/models lists every model available right now, with its price. Open models run on NUCALORIC hardware. Models tagged cloud are free third-party models through OpenRouter, and their providers may log prompts.
| Model | Best for | Input / 1M | Output / 1M |
|---|---|---|---|
| Loading models… | |||
Errors and limits
| Status | Meaning |
|---|---|
| 401 | Missing, invalid or revoked API key. |
| 402 | Balance too low. Output is capped to what your balance covers, and a request that can't afford 32 output tokens is refused. |
| 429 | More than 30 requests a minute, or more than 2 running at once, per account. |
| 503 | No model is available right now. |
Output is limited to 4,096 tokens per request.
Agents
Six agents come with every workspace: Staff Engineer, Product Lead, Support Lead, Growth Marketer, Ops & Finance and Chief of Staff. Start a conversation from a project, and the agent sees that project's purpose, milestone, tasks and docs. Save any reply into the project as a doc.
Plan with AI on a project turns its current milestone into four to eight tasks, using structured JSON output, and adds them to the board.
Hosting
Create a site, then upload a folder (an index.html at the root) or describe the page and let the code model write it. Sites are served at /s/your-site/. Your first 1 site is free; each additional site is $1.50 per 30 days, charged from your balance. Sites are limited to 5 MB and 300 files.
Hosted pages run in a sandbox with an isolated origin, so they can't touch a visitor's NUCALORIC session. As a result, localStorage and cookies aren't available to hosted pages.
Deploy: GitHub, Vercel, Netlify, Pterodactyl
Every site has one source and any number of destinations. NUCALORIC deploys static output: build in CI and point at the output folder, or commit it. Build scripts never run on NUCALORIC servers.
GitHub (source)
In Sites, choose GitHub and enter owner/repo or a github.com URL, plus an optional branch and folder (for example dist). The folder needs an index.html. Public repositories work without a token. For private ones, add a fine-grained token with Contents: read in Connections → GitHub.
Push to deploy: after the first import, the site card shows a payload URL and secret. In GitHub, go to Settings → Webhooks → Add webhook, paste both, set the content type to application/json, and choose push events. Pushes to the tracked branch redeploy automatically, and every request is verified with HMAC-SHA256.
Payload URL https://YOUR-HOST/api/hooks/github/<site-id> Content type application/json Secret <from the site card>
Vercel
Create an access token at vercel.com/account/tokens and add it in Connections → Vercel, with a team ID if the project belongs to a team. Publish → Vercel creates a production deployment named nucaloric-<site> and links it on the card.
Netlify
Add a personal access token (User settings → Applications) in Connections → Netlify. The first publish creates a Netlify site; later publishes zip-deploy to the same site.
Pterodactyl
In Connections → Pterodactyl, enter your panel URL, a client API key (Account → API Credentials), the server's short ID (from its URL) and a target folder (for example /www). Publishing writes every file into that folder through the client API. Pair it with a web-server egg, or any server that serves static files.
ZIP and everything else
Download ZIP on any site gives you the exact deployed files: drag them into Cloudflare Pages, or serve them anywhere containers run:
FROM nginx:alpine COPY . /usr/share/nginx/html
Railway, Render and Fly.io can also build directly from the same GitHub repository.
Terminal
The app's terminal runs workspace commands: help, projects, use <project>, tasks, add <title>, done <n>, plan, sites, balance, models and ai <prompt>, which streams an answer that's billed like any other call.
Billing
Everything draws from one prepaid balance, stored to the micro-dollar. New accounts get $0.50, every account gets $0.10 each calendar month, and credit packs add more by card (Stripe) or USDC (Solana Pay). Billing in the app shows every charge, usage by model, and payments.