> ## Documentation Index
> Fetch the complete documentation index at: https://docs.darkbloom.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# darkbloom CLI: complete command reference

> Complete reference for every darkbloom subcommand — serve, start, stop, status, doctor, models, earnings, login, and more — with flags and usage examples.

The `darkbloom` binary is the provider agent CLI. Every operation — starting and stopping the provider, checking status, managing models, viewing earnings, and updating the agent — goes through this command. All subcommands support the `-v` / `--verbose` flag for more detailed log output.

```bash theme={null}
darkbloom [--verbose] <subcommand> [options]
```

***

## serve

Start the provider in the foreground. The provider connects to the coordinator, begins serving inference requests, and logs to stdout. Press `Ctrl+C` to stop.

```bash theme={null}
darkbloom serve [options]
```

<AccordionGroup>
  <Accordion title="Options">
    | Flag                    | Default                               | Description                                                                                                                  |
    | ----------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
    | `--model <id>`          | largest downloaded model              | Model to serve. Can be specified multiple times to serve more than one model simultaneously.                                 |
    | `--all-models`          | off                                   | Serve all downloaded models that fit in memory.                                                                              |
    | `--port <n>`            | `8000`                                | Port for the local API server.                                                                                               |
    | `--backend-port <n>`    | `8100` (from config)                  | Port for the inference backend process.                                                                                      |
    | `--coordinator <url>`   | `wss://api.darkbloom.dev/ws/provider` | Coordinator WebSocket URL.                                                                                                   |
    | `--local`               | off                                   | Run in local-only mode with no coordinator connection.                                                                       |
    | `--idle-timeout <mins>` | `60` (from config)                    | Minutes of inactivity before the backend shuts down to free GPU memory. Set to `0` to keep the backend running indefinitely. |
    | `--no-auto-update`      | off                                   | Disable the automatic update check at startup.                                                                               |
  </Accordion>

  <Accordion title="Examples">
    ```bash theme={null}
    # Serve with the default model
    darkbloom serve

    # Serve a specific model
    darkbloom serve --model qwen3.5-27b-claude-opus-8bit

    # Serve multiple models
    darkbloom serve --model qwen3.5-27b-claude-opus-8bit --model mlx-community/gemma-4-26b-a4b-it-8bit

    # Keep the backend running even when idle
    darkbloom serve --idle-timeout 0
    ```
  </Accordion>
</AccordionGroup>

***

## start

Start the provider as a background daemon. The process is registered with launchd, persists across reboots, and auto-restarts if it crashes. Equivalent to `darkbloom serve` but daemonised.

```bash theme={null}
darkbloom start [options]
```

<AccordionGroup>
  <Accordion title="Options">
    | Flag                    | Default                               | Description                                                             |
    | ----------------------- | ------------------------------------- | ----------------------------------------------------------------------- |
    | `--model <id>`          | value from config                     | Model to serve.                                                         |
    | `--coordinator <url>`   | `wss://api.darkbloom.dev/ws/provider` | Coordinator WebSocket URL.                                              |
    | `--idle-timeout <mins>` | `60` (from config)                    | Minutes of inactivity before the backend shuts down to free GPU memory. |
  </Accordion>

  <Accordion title="Examples">
    ```bash theme={null}
    # Start with config defaults
    darkbloom start

    # Start with a specific model
    darkbloom start --model mlx-community/Qwen3.5-122B-A10B-8bit
    ```
  </Accordion>
</AccordionGroup>

***

## stop

Stop the background daemon gracefully. Sends a termination signal to the running provider process and waits for it to exit cleanly.

```bash theme={null}
darkbloom stop
```

***

## status

Print hardware information, connection status, and the current serving configuration.

```bash theme={null}
darkbloom status
```

The output includes your Apple Silicon chip model, memory size, GPU core count, and memory bandwidth, along with whether the provider is connected to the coordinator and which model is active.

***

## doctor

Run a full diagnostic check and report any problems. Use this when the provider fails to start or connect, or after installing the agent for the first time.

```bash theme={null}
darkbloom doctor [--coordinator <url>]
```

Doctor checks the following in order:

1. Hardware detection (chip model, memory, GPU cores)
2. System Integrity Protection (SIP) — must be enabled
3. Secure Enclave (`eigeninference-enclave` binary availability)
4. MDM enrollment status
5. Inference runtime (vllm-mlx / mlx-lm import and version)
6. Downloaded models
7. Coordinator connectivity

Each check is marked pass or fail. For any failures, doctor prints the specific remediation steps.

<Tip>
  Run `darkbloom doctor` before you run `darkbloom serve` for the first time. It will catch configuration problems before they show up as cryptic errors during startup.
</Tip>

***

## models list

List the models you have downloaded locally, along with their estimated memory usage.

```bash theme={null}
darkbloom models list [--coordinator <url>]
```

Pass `--coordinator` to also fetch the full catalog from the network and show which additional models your hardware could run.

To download a model interactively:

```bash theme={null}
darkbloom models download
```

To download a specific model without the interactive picker:

```bash theme={null}
darkbloom models download --model <id>
```

***

## earnings

Show your current balance, total earnings, and recent payout history.

```bash theme={null}
darkbloom earnings [--coordinator <url>]
```

The output shows:

* **Balance** — amount available for withdrawal
* **Total earned** — cumulative lifetime earnings
* **Jobs served** — total number of inference requests completed
* **Recent payouts** — last five individual request payouts with model and amount

For full earnings details and withdrawal options, use the web console or see the [earnings guide](/provider/earnings).

***

## update

Check for a newer version of the provider agent and install it if one is available.

```bash theme={null}
darkbloom update [--coordinator <url>] [--force]
```

| Flag      | Description                                                            |
| --------- | ---------------------------------------------------------------------- |
| `--force` | Re-download and install even if you are already on the latest version. |

The provider also checks for updates automatically at startup and prints a notification if a newer version is available. Auto-updates in the background can be managed with `darkbloom autoupdate`.

***

## login

Link this machine to your Darkbloom account using a device code flow. Running `darkbloom login` opens your browser to the account linking page and displays a short code in the terminal. After you approve the link in the browser, the provider saves an auth token and uses it for all subsequent connections.

```bash theme={null}
darkbloom login [--coordinator <url>]
```

If the machine is already linked, the command prints the current status and exits without re-linking. Run `darkbloom logout` first if you need to switch accounts.

***

## logout

Unlink this machine from your Darkbloom account. The locally stored auth token is deleted. The provider will continue to run and serve requests, but earnings will not be credited to your account until you run `darkbloom login` again.

```bash theme={null}
darkbloom logout
```

***

## logs

View provider logs.

```bash theme={null}
darkbloom logs [--lines <n>] [--watch]
```

| Flag             | Default | Description                                         |
| ---------------- | ------- | --------------------------------------------------- |
| `--lines <n>`    | `50`    | Number of recent log lines to show.                 |
| `-w` / `--watch` | off     | Follow logs in real time (equivalent to `tail -f`). |

***

## autoupdate

Enable or disable automatic background updates.

```bash theme={null}
darkbloom autoupdate <enable|disable|status>
```

When enabled (the default), the provider checks for updates every 30 minutes while running and installs them automatically. When disabled, you manage updates manually with `darkbloom update`.

```bash theme={null}
# Check current setting
darkbloom autoupdate status

# Disable automatic updates
darkbloom autoupdate disable

# Re-enable automatic updates
darkbloom autoupdate enable
```

***

## Global flags

| Flag               | Description                                         |
| ------------------ | --------------------------------------------------- |
| `-v` / `--verbose` | Enable debug-level logging for the current command. |
| `--version`        | Print the installed version and exit.               |
| `--help`           | Print usage for any command or subcommand.          |
