---
name: dasha-compute
description: First call on Dasha Compute. OpenAI-compatible v1 chat/completions on community Macs — fail-loud no_mac_online when none advertise the model. Hosted Ask is POST /compute/api/chat, not a silent v1 swap. Use when probing healthz/network/models or posting chat/completions.
---

# Dasha Compute

Dasha Compute is Mac inference on getdasha.com — not Dasha.AI voice.

OpenAI-compatible inference. A run factory with a public signed receipt chain, not an account ledger.

## Build on Dasha

mint 53uxQtB9pcjWvCHguz3JTTndvuKqGxhrD37EetnCpump
Buy via site Buy — https://www.getdasha.com/how-to-buy · https://jup.ag/tokens/53uxQtB9pcjWvCHguz3JTTndvuKqGxhrD37EetnCpump
base_url https://lobby.getdasha.com/compute/api/v1
guest-keys POST /compute/api/guest-keys
mcp https://www.getdasha.com/compute/mcp.json
skill https://www.getdasha.com/compute/skill.md
UI is yours; we expose mint + run factory.

## When to use

You want a Mac to run a prompt. v1 chat/completions is community Macs. Hosted Ask is the browser. Not a ledger. Not Room.

## Brain / Hands / Files

Brain: Workers gateway + Hosted Ask + signed receipt chain.
Hands: Community Mac at /compute#provide, and the Hosted Workers AI floor. providers_online=0 means no Mac. Never invent capacity.
Files: Drives. R2 workspaces on the same dsk_ or guest dgk_ key. They work when no Mac is online.
GET /compute/api/v1 layers.brain / layers.hands / layers.files lists those paths. hands.online_count points at GET /compute/api/v1/network providers_online and does not invent a number. files.unbound.reason is drives_unavailable until R2 DRIVES is bound.

POST /compute/api/v1/drives {"name":"agent-workspace"}
GET /compute/api/v1/drives
GET /compute/api/v1/drives/:id
PUT GET DELETE /compute/api/v1/drives/:id/objects/*path
GET /compute/api/v1/drives/:id/objects?prefix=
POST /compute/api/v1/drives/:id/dream
Binding DRIVES. Bucket dasha-compute-drives. 8 MiB per object. 1 GiB per key owner. Unbound R2 fails loud drives_unavailable.
POST .../dream reads memory/ through Hosted Ask, or the whole drive when memory/ is empty, and writes memory/dreamed.json. {"format":"md"} writes memory/dreamed.md. Hosted offline fails loud hosted_offline. providers_online stays 0.
POST .../snapshot is metadata only. Chat does not write drive bytes. A drive_id on chat/completions is recorded on the job and receipt when a Mac runs the job. It does not put a Mac online. The kit does not pull the drive yet.

## Agents

base_url https://lobby.getdasha.com/compute/api/v1
OpenAI-compatible. OpenAI SDK, Aider, Goose, OpenHands (BYOK).
Mint: POST /compute/api/guest-keys
reasoning_effort low|medium|high (alias effort). Hosted applies it. Community may ignore — honesty on dasha.
MCP catalog (static, not streamable): https://www.getdasha.com/compute/mcp.json
Connect a tool via skill + kit. Not a video CMS.
v1 chat/completions = community Macs. None advertise the model → fail-loud `no_mac_online`
(poll /compute/api/network · join /compute#provide). Hosted Ask = browser POST /compute/api/chat
(status.live Workers AI) — never a silent v1 swap.

## Which key / which base

Compute: https://lobby.getdasha.com/compute/api/v1 · dsk_ or guest dgk_ (POST /compute/api/guest-keys)
OCM: https://www.getdasha.com/compute/ocm/v1 · ocm_live_
Never swap keys. Compute X session is not an OCM session.

## Create a key

Guest key: POST /compute/api/guest-keys — 24h chat+models, 3/hour/IP. Copy once.

curl -sS -X POST https://lobby.getdasha.com/compute/api/guest-keys -H 'Content-Type: application/json' -d '{}'

Or sign in at https://www.getdasha.com/compute#build for lasting dsk_.

## First call

Start with qwen3-4b - 27b-class picks can wait minutes for a Mac, and cold users hit that first.

base https://lobby.getdasha.com/compute/api/v1
www https://www.getdasha.com/compute/api/v1

curl -sS https://lobby.getdasha.com/compute/api/healthz
curl -sS https://lobby.getdasha.com/compute/api/v1/network
curl -sS https://lobby.getdasha.com/compute/api/v1/models

curl -sS https://lobby.getdasha.com/compute/api/v1/chat/completions \
  -H "Authorization: Bearer $DASHA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemma3-27b","messages":[{"role":"user","content":"hi"}]}'

from openai import OpenAI
OpenAI(base_url="https://lobby.getdasha.com/compute/api/v1", api_key=os.environ["DASHA_API_KEY"])

new OpenAI({ baseURL: "https://lobby.getdasha.com/compute/api/v1", apiKey: process.env.DASHA_API_KEY })

Pick `model` from the models list. Each entry carries pricing (pricing.request USD per chat - flat, no per-token metering) and measured tok/s when benchmarked.

## Receipts / Community / Hosted

Receipts: signed, chained, publicly verifiable. Chain: GET https://www.getdasha.com/compute/api/chain · signer key: https://www.getdasha.com/keys.json · machine verdict: https://www.getdasha.com/compute/api/verify · browser: https://www.getdasha.com/verify. GET https://www.getdasha.com/compute/api/receipts is authenticated retrieval for your own key.
Job receipts include `route` (`community`|`hosted`, same as x-dasha-route). `turns` only when already counted — never invented.
Verify a receipt without trusting this site: GET /compute/api/chain (receipts) + /keys.json (signer key). Rebuild the signed body as {"job_id":...,"engine":...,"tokens":...,"cents":...,"at":...,"prev_hash":...} - exactly those keys in that order (job_id string|null, engine string, tokens/cents non-negative integers, at unix-ms integer|null, prev_hash = previous receipt hash or "GENESIS"). receipt.hash = sha256(JSON.stringify(body)) hex; receipt.sig = ed25519 over the UTF-8 bytes of that hex string, verified with the signer's spki_pem; signer = first 16 hex chars of sha256(spki_pem). Chain continuity: each prev_hash equals the previous hash. Find your own receipt by the request_id you sent on chat/completions (echoed as receipt.request_id) or by job_id from the completion response. Machine verdict: GET /compute/api/verify?hash=<hash|job_id|request_id> - the 64-hex chain hash, the job_ id, or your request_id; the rcp_ receipt id is not a lookup key.
Community: a peer Mac runs the job.
v1 chat/completions: community Macs. None advertise the model → no_mac_online (poll /compute/api/network · join /compute#provide).
Hosted Ask: browser POST /compute/api/chat (status.live Workers AI). Not a silent v1 swap.
Hosted Flash: bigger-than-Mac (Spark / Engram-class Flash when offered). Model id `deepseek-flash` (Hosted). Never Community. Same base_url. Watch x-dasha-route.
Engram/SSD-stream local recipes stay Hosted/Provide-Max — not Air kit.
Hosted Astra: GPT-6 when offered. Model id `gpt-6-astra` (Hosted). Never Community. Same base_url. Watch x-dasha-route · x-dasha-model.
Async tools / mid-turn steering / computer use stay Hosted-class only.
Spend: read `x-dasha-route` (`community`|`hosted`) and `x-dasha-model` on chat/completions. `x-dasha-spend-usd` only when cost is known — Community omits USD when unknown.

## Provide speed

Community Macs publish measured tok/s via network capacity (measured_providers). Never invent.
Join a Mac at /compute#provide — kit soft-doctor and enroll-code live there.
Kit uses OLLAMA_KEEP_ALIVE (launch agent / service — a shell export is not enough).
Smaller is faster: qwen3-4b · qwen3-8b · gemma3-12b · gemma3-27b.
Send a recipe — MLX / Ollama / llama.cpp Apple Silicon. We pin winners.
Hosted-only when offered: Flash-class · DGX Spark · Qwen 3.8 Flash-Next · Astra. Never a Community Mac.

## More

packet https://www.getdasha.com/compute/llms.txt
agent.json https://www.getdasha.com/.well-known/agent.json
MCP: https://www.getdasha.com/compute/mcp.json
openapi https://www.getdasha.com/compute/openapi.json
key · cap · receipt: /caps · /compute/proof.md · /keys.json
