Skip to content

A cooperative hive, not shared GPU memory

One pool can include phones, Windows, macOS, Linux and a Slurm gateway. Devices claim compatible independent tasks. This does not split a model across phones, turn macOS/Windows into native Slurm hosts, or supply distributed model training.

flowchart TD
    Human[Coordinator] --> Broker[Broker API]
    Oracle[Optional LLM recommendation] --> Validate[Schema and allowlist validation]
    Validate --> Approval[Dry run or explicit --apply]
    Approval --> Broker
    Broker <--> DB[(SQLite jobs and audit)]
    Broker <-->|Leased tasks and results| Browser[Android / iOS browser]
    Broker <-->|Leased tasks and results| Desktop[Windows / macOS / Linux worker]
    Desktop --> Inference[vLLM / SGLang endpoint]
    Broker <-->|Approved training profiles| Gateway[Linux Slurm gateway]
    Gateway --> Slurm[Existing Slurm controller]
    Slurm --> CPU[Linux CPU nodes]
    Slurm --> GPU[Linux GPU nodes with configured GRES]

The optional oracle proposes exactly one bounded task per command invocation. It cannot alter Slurm, run shell tools, enroll devices or choose arbitrary scripts. The default is a printed proposal; --apply explicitly authorizes submission. This is not an autonomous agent takeover or a safety-certified policy engine.

open-compute oracle --oracle-url http://127.0.0.1:8000 \
  --oracle-model coordinator-model \
  --goal 'Propose a small CPU demonstration'
# Add --apply to authorize submission of this one validated proposal.

Use --allow-model gemma to permit a served chat model or --allow-profile smoke to permit an installed training profile. Oracle training parameters must remain empty; administrator-installed profiles own their resource and time limits. Set OPEN_COMPUTE_ORACLE_KEY only if the configured endpoint needs authentication. Only the goal, allowed names, worker count and job kinds/states go to that endpoint; do not put confidential content in the goal. Local validation rejects unsupported task kinds, excessive budgets and unapproved models/profiles even if the LLM asks.

Recovery state machine

stateDiagram-v2
    [*] --> Queued
    Queued --> Running: compatible atomic claim
    Running --> Running: confirmed heartbeat
    Running --> Queued: lease expires / attempts remain
    Running --> Failed: expires after third claim
    Running --> Outbox: computation finishes / save locally
    Outbox --> Outbox: transport failure / retry
    Outbox --> Completed: broker accepts current lease
    Completed --> Completed: identical retry / no extra credit
    Outbox --> Rejected: lease expired or cancelled
    Queued --> Cancelled: administrator
    Running --> Cancelled: administrator

Outbox is worker-side state; until acceptance the broker still records Running. Expiry is processed on the next claim. See durability for limits.