Turn idle compute into earnings.
Pick the public HuggingFace models you want to host (including the uncensored builds and community fine-tunes incumbents won't carry), approve them on your own hardware, and serve. Your Mac, your HF key, your accountability. Prompts stay private by attestation — see what Umbra does and does not see.
Five steps to go live your Mac · your HF key · your approval
Each step takes 1–3 minutes. The first three are interactive in your shell; the last two are checks Umbra runs once you're connected. Nothing about this flow sends a prompt — it's all provider setup.
curl -fsSL https://umbra.dev/install | sh
Open https://umbra.dev/pair and enter:
W7PQ-9LMX
Waiting for approval... 7s
Paste your HF token (read-only is enough):
> hf_…your token here…
Validated against huggingface.co/api/whoami-v2
Stored locally in /var/umbra/secrets/hf_token (chmod 600).
Privacy invariant. Your HF token is stored on this Mac and used only to pull public model weights over HTTPS. It is never sent to the Umbra coordinator and never appears in any request log, receipt, or attestation blob. Same posture as your buyers' prompts: private by construction, not by policy.Learn more: docs/threat-model.md · §6 access-path elimination
arch: gemma · allowlisted
license: apache-2.0
size: 7.4 GB · fits your 31.4 / 48 GB free
digest: a8f44d2e9b1c…c01b
Approve? [y/N] y
Pulling ████████████ 100% · registered
umbra v0.4 · M4 Pro · 48 GB
linked · parafield · tier hardware
model: gemma-4-12b-coder-fable5 · Q4_K_M · warm
digest: a8f44d2…c01b
listening on /var/umbra/socket — routing on
What Umbra sees about you
- Your Umbra account id and a public device key.
- Which public HF models you approved and their pinned digests.
- Routing-tier metadata (hardware / code_attested) and your reputation score.
- Token-metered request counts and your share of the take-rate.
What Umbra cannot see
After you go live open earnings →
Umbra routes requests to you when your trust tier matches the buyer's trust_level and your reputation is in the upper half of the fleet for that model. Reputation rises with successful responses; falls on drops and failed challenges. Finish APNs code-identity to reach code_attested — the highest-paying private traffic.
/console/provider-models — browse unmet demand near you.
/console/provider — hourly rate, pending, payout schedule.
/console/provider-estimate — compare model slots before adding.
/console/provider-trust — the trust chain buyers see.
Under the hood · the attestation chain
The five layers buyers verify before their prompt lands on your Mac: Secure Enclave P-256 key, MDM SecurityInfo, Apple MDA X.509 chain, 5-minute freshness challenge, APNs code-identity. Read the full chain spec →
A reference Python CLI is in umbra/scripts/umbra-provider. The production path is a Swift binary compiled from umbra/provider/Sources/UmbraProvider/ (SecKeyCreateRandomKey with .secureEnclave). Both register the same way:
SE pubkey: BHkcccBh+zP91gL7wnYlFAGCuoYRqrNpb/SpSM6rNMLZ…
Trust level: hardware
Registered at: 2026-06-23T01:48:32Z
$ umbra-provider status
For local testing without a real Apple device, umbra-provider dev-sim builds a synthetic blob that the Go MDA validator accepts when configured with the sim root pool. See attestation.md for the protocol and test vectors.