Overview
Darkbloom is a decentralized private-inference network for Apple Silicon. Consumers call a standard HTTPS, OpenAI-compatible API; a Go coordinator running in a GCP Confidential VM authenticates the request, picks a provider, handles billing and relays the payload; and providers are Macs running the `darkbloom` Swift CLI, which connect outbound over WebSocket and run inference in-process on the GPU via MLX. Because providers dial out, no port forwarding or inbound firewall change is needed to run one.
The hard problem the project sets itself is that the person running a provider node has root and physical custody of the machine doing your inference, yet must not be able to read your prompts or the responses. Darkbloom closes the software paths to that plaintext: inference runs in-process via MLX so there is no subprocess, local server or IPC to tap; the process denies debugger attachment at the kernel level with `PT_DENY_ATTACH` and blocks memory-reading APIs through Hardened Runtime; the coordinator re-seals every request with NaCl Box (X25519 + XSalsa20-Poly1305) to the provider's attested key; and a four-layer attestation chain — Secure Enclave signatures, MDM cross-checks, Apple Managed Device Attestation and APNs code-identity — proves each node's posture.
The project is careful about what it does and does not claim. Plaintext is exposed only inside the coordinator's hardware-encrypted Confidential-VM memory, is never logged or retained, and is immediately re-encrypted for the selected provider; the residual threat is the same one Apple accepts for Private Cloud Compute, namely physically de-soldering and probing memory. Darkbloom is labelled public alpha, with breaking changes and downtime expected, and its billing invariants, platform fee and payout rules are stated once in the billing document.
What it does
- OpenAI- and Anthropic-compatible API — most clients work by changing one base URL
- Providers are Apple Silicon Macs running a Swift CLI; inference runs in-process on the GPU through MLX
- Mandatory per-request NaCl Box encryption from the coordinator to the provider's attested X25519 key, with a fresh ephemeral key each request
- Provider hardening via Hardened Runtime, SIP and PT_DENY_ATTACH, immutable for the process lifetime
- Four-layer hardware attestation: Secure Enclave signatures, MDM SecurityInfo cross-check, Apple Managed Device Attestation and APNs code identity
- Per-response trust signals returned as X-Provider-Trust-Level, X-Provider-Attested, X-Provider-Encrypted and related headers
- Providers connect outbound over WebSocket, so no port forwarding or inbound firewall rules are required
Getting started
There are two ways in. As a consumer you point an OpenAI SDK at the Darkbloom base URL. As a provider you run the Swift CLI on an Apple Silicon Mac and let it sell idle capacity. Both paths are documented in the repository; the consumer path is the fastest thing to try.
Get an API key
Create a key in the Darkbloom console at console.darkbloom.dev. Keys look like sk-db-…; a Privy session JWT also works as the bearer token.
Point an OpenAI client at Darkbloom
The API is OpenAI-compatible, so the only change is the base URL. Use a model id returned by GET /v1/models.
from openai import OpenAI
client = OpenAI(
base_url="https://api.darkbloom.dev/v1",
api_key="sk-db-...",
)
stream = client.chat.completions.create(
model="gemma-4-26b",
messages=[{"role": "user", "content": "Hello, Darkbloom!"}],
stream=True,
)Check which provider served you
Committed responses carry provider headers — X-Provider-Trust-Level, X-Provider-Attested, X-Provider-Encrypted, X-Provider-Chip and X-Provider-Secure-Enclave. Set metadata_details: true (or the X-Darkbloom-Metadata-Details header) on POST /v1/chat/completions to get the same fields back in a JSON metadata object instead.
Run a provider node
On an Apple Silicon Mac, follow the Run a provider section of the README to install the darkbloom Swift CLI. The node connects outbound to the coordinator, so no inbound firewall changes are needed; payouts and the platform fee are documented in docs/architecture/billing.md.
Commands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Serve inference where the machine operator must not be able to read prompts or responses, without building your own confidential-computing stack
- Point an existing OpenAI or Anthropic SDK application at a cheaper inference backend by changing the base URL
- Monetise idle Apple Silicon capacity by running a provider node on hardware you already own
- Study a working design for attested, end-to-end encrypted inference across untrusted operator machines
How Darkbloom compares
Darkbloom alongside other open-source gpu & compute clouds tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Ray | ★ 43.8k | A distributed computing framework that scales Python and ML workloads for training, tuning, data processing, and serving. |
| Prefect | ★ 23.8k | A Python-native workflow orchestration tool for scheduling, running, and monitoring data and ML pipelines. |
| Dagster | ★ 16.1k | A data and ML pipeline orchestrator with a declarative asset model, built-in lineage, and observability. |
| Kubeflow | ★ 15.9k | A Kubernetes toolkit that brings together pipelines, notebooks, and training operators for running ML workflows at scale. |
| Kedro | ★ 11k | Python framework for production-ready data engineering and data science pipelines, hosted by the LF AI & Data Foundation: a project template, a Data Catalog of connectors, and a dependency-resolving pipeline abstraction. |
| SkyPilot | ★ 10.6k | A framework that runs AI jobs across clouds and Kubernetes, automatically finding and provisioning the cheapest available GPUs. |
| Metaflow | ★ 10.3k | A Python framework from Netflix for building and running data science and ML workflows that scale from laptop to cloud. |
| Darkbloom | ★ 521 | Private inference network that turns idle Apple Silicon Macs into an OpenAI-compatible cloud |