---
sidebar_position: 5
---

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

# Default Jobs

Default Jobs are reusable fallback workload profiles for provider nodes. Assign a profile to a node, and Lium can run that workload while the node is idle and unrented.

:::info Runtime priority
Default Jobs are best-effort idle workloads. Customer rentals always have priority, and a running Default Job can be stopped when the node is needed for a rental or when the assignment is disabled, cleared, changed, or deleted.
:::

![Default Jobs overview](./assets/default-jobs-overview.png)

## What Default Jobs are

Use Default Jobs to:

- Save a reusable workload profile in the Provider Portal.
- Assign that profile to one or more owned nodes.
- Bulk-assign a profile across a larger fleet.
- Leave a node in the **Lium Default Job** state to let Lium run its own idle workload there and keep the unrented incentive.

Default Jobs do not create customer rental records, billing records, or customer pods.

## Default Jobs and the unrented incentive

On an idle node, running your own Default Job and earning the [unrented incentive](../rewards/emission.mdx#unrented-pool) are **mutually exclusive**. Per node you choose one:

- **Lium Default Job** — Lium runs its own Default Job on the idle node; the node keeps the **unrented incentive**. See [Lium Default Jobs on idle nodes](#lium-default-jobs-on-idle-nodes).
- **Miner: your job** — you assign your own Default Job (Pearl Mining or Custom Docker); it earns for you, but the node forfeits the **unrented incentive** while it's assigned.
- **Miner Empty Job** — a tiny no-op container holds the node so Lium's idle jobs can't start; the node earns **no unrented incentive** but stays fully rentable. See [Create a Miner Empty Job](#create-a-miner-empty-job).

This trade-off applies only while the node is idle. When a customer rents the node, it earns rental income and the rented-pool share exactly as before, regardless of any Default Job assignment.

## Lium Default Jobs on idle nodes

When a node is idle and has no Default Job of your own assigned, Lium automatically runs its own Default Job on it. This turns unused capacity into revenue that backs the [unrented incentive](../rewards/emission.mdx#unrented-pool), while the node keeps earning that incentive as usual.

How Lium Default Jobs behave:

- **Automatic.** Nothing to configure on your side; the rollout is gradual across the fleet.
- **Customer rentals always win.** When a customer rents the node, the Lium Default Job stops within seconds and the rental starts as usual. Rentability and rental earnings are not affected. When the rental ends and the node is idle again, a Lium Default Job can start again automatically.
- **Your own Default Job takes priority.** If you assign your own Default Job to the node, the Lium Default Job yields and your job runs instead — with the [unrented-incentive trade-off](#default-jobs-and-the-unrented-incentive) described above.
- **Visible in Node Activity.** Every Lium Default Job start and stop appears in **Node Activity** in the [Provider Portal](https://provider.lium.io), alongside your rentals and your own Default Job runs.

### Which Lium Default Job runs on your node

On capable idle nodes, Lium runs **Dolphin** — a paid AI inference worker for the dphn.ai network — instead of a lighter fallback workload. Lium earns from the inference; your node keeps its [unrented incentive](../rewards/emission.mdx#unrented-pool) and stays fully rentable, exactly as described above. There is nothing to enable — eligible nodes are picked up automatically.

A node is eligible for Dolphin when it has:

- An **Ada-generation or newer GPU** (RTX 40-series/Ada, Hopper, Blackwell — RTX PRO 6000 included). Ampere and older (A100, RTX 30-series, V100, T4) are not eligible.
- **70 GB or more of GPU memory** in total across the node's GPUs (a single smaller card does not qualify; several cards can add up).
- **NVIDIA driver 580 or newer** (CUDA 13). Older drivers are skipped.
- **At least ~130 GB of free disk** and an **x86 (amd64) CPU**.

Nodes that do not meet these requirements still run a Lium Default Job while idle and still keep the unrented incentive — Dolphin simply does not run on them. To make an eligible card qualify, keep its NVIDIA driver on 580 or newer.

## Before you start

Before creating a Default Job, make sure:

1. You are signed in to the [Provider Portal](https://provider.lium.io) with your provider hotkey.
2. Your provider is connected, either self-hosted or through the [Lium.io Central Provider Server](../provider-configuration.md).
3. You have at least one registered node. See [Managing Nodes](./managing-nodes.md).
4. For Pearl Mining, you have your Akoya pool wallet and worker values.
5. For Custom Docker, you have a public image and a command that keeps the container running.

## Create a Pearl Mining profile

Pearl Mining is a locked preset. You only provide a profile name and the required pool environment values; the image, tag, storage, volume, and port are set by the template.

1. Open **Default Jobs** in the Provider Portal.
2. Click **Create Job**.
3. Select **Pearl Mining**.
4. Enter a **Job Name**.
5. Add the required environment variables:
   - `AKOYA_POOL_WALLET`
   - `AKOYA_POOL_WORKER`
6. Click **Save Default Job**.

The Pearl Mining preset uses:

| Field | Value |
|---|---|
| Image | `registry.akoyapool.com/akoya-miner:1.0.2` |
| Storage limit | 20 GB |
| Volume | `/root` |
| Internal port | `22` |

![Pearl Mining Default Job modal](./assets/default-jobs-pearl-mining-modal.png)

## Create a Custom Docker profile

Use Custom Docker when you want to run your own long-running container on idle nodes.

1. Open **Default Jobs** in the Provider Portal.
2. Click **Create Job**.
3. Select **Custom Docker**.
4. Fill the required fields:
   - **Job Name**: a readable name for the profile.
   - **Image** and **Image Tag**: for example, `alpine` and `3.20`.
   - **Command / Args**: a command that keeps the container alive, such as `sleep infinity`.
   - **Disk Limit GB**: required, from 1 to 100 GB.
5. Add optional fields if your image needs them:
   - **Environment Variables** as `KEY=value` lines.
   - **Volumes** as comma-separated mount paths.
   - **Internal Ports** as comma-separated container ports.
   - **Minimum VRAM MB** and **Minimum GPU Count** for node-fit requirements.
6. Click **Save Default Job**.

:::warning Keep the process running
If the Custom Docker command exits, the Default Job run ends. Use a long-running worker process, service command, or an explicit command such as `sleep infinity` for smoke testing.
:::

![Custom Docker Default Job modal](./assets/default-jobs-custom-docker-modal.png)

## Create a Miner Empty Job

Use **Miner Empty Job** to keep both your own and Lium's default jobs off a node while it is idle — it runs a tiny no-op container that holds the node without doing any work, uses no GPU, and has no fields to configure.

The simplest way is to assign it straight from the node's dropdown; the portal creates the preset for you:

1. Open **Default Jobs** in the Provider Portal.
2. In the **Node Assignment** table, open the node's **Default Job** dropdown (or tick several nodes to use the bulk dropdown).
3. Select **Miner Empty Job**. For a bulk assignment, then click **Apply to selected**.

You can also create it as a saved profile from **Create Job** — it appears alongside Pearl Mining and Custom Docker — but that is optional, since selecting it in the dropdown creates and assigns it in one step.

While a node is assigned Miner Empty Job:

- **Lium does not run its own Default Job** on that node.
- **The node earns no unrented incentive** while it sits idle — the same trade-off as running your own Default Job, because Miner Empty Job *is* your own job.
- **The node stays fully rentable.** Customer rentals and rental earnings are unaffected.

To let Lium's Default Jobs and the unrented incentive resume, set the node back to **Lium Default Job**.

## Assign profiles to nodes

After saving a profile, assign it in the **Node Assignment** table.

### Assign one node

1. Find the node row.
2. Open the **Default Job** dropdown.
3. Select the profile.

### Assign multiple nodes

1. Select the checkboxes for the target nodes.
2. Choose a profile from the bulk assignment dropdown.
3. Click **Apply to selected**.

To remove an assignment, choose **Lium Default Job**. Each node can have only one active Default Job assignment.

![Default Job node assignment](./assets/default-jobs-assignment.png)

## Monitor runs and activity

The Default Jobs page shows runtime signals in two places:

- **Node Assignment**: current assignment state, runtime status, last event time, runtime today, and failure reason when available.
- **Node Activity**: recent customer rentals and Default Job runs across your owned nodes, including [Lium Default Job](#lium-default-jobs-on-idle-nodes) runs started automatically on your idle nodes.

Assignment statuses include **Lium Default Job**, **Assigned**, and **Disabled**. Runtime statuses can include **Idle**, **Starting**, **Running**, **Stopping**, **Failed**, or **Blocked**.

![Default Job activity table](./assets/default-jobs-activity.png)

## Disable, clear, or delete

Use the smallest action that matches what you want:

| Action | Where | Result |
|---|---|---|
| Disable a profile | Edit the Default Job and turn the **Enabled** switch off | The profile is kept, but the runtime will not start it. Existing assignments remain visible. |
| Clear an assignment | Set a node to **Lium Default Job** | The node no longer has an active fallback workload assignment. |
| Delete a profile | Open the profile details and click **Delete** | The profile is removed and its active assignments are cleared. |

When a running Default Job becomes inactive because the profile or assignment changed, the runtime stops it on a later runner cycle.

## Limits and behavior

- Default Jobs run only on active, idle nodes with an enabled profile assignment.
- Running your own Default Job forfeits the node's unrented incentive while it is assigned; leaving a node in **Lium Default Job** keeps the incentive. See [Default Jobs and the unrented incentive](#default-jobs-and-the-unrented-incentive).
- Customer rentals have priority over Default Jobs.
- A node can have only one active Default Job assignment.
- Custom Docker disk limits must be between 1 and 100 GB.
- The runtime checks node fit before launch, including free GPUs, optional minimum GPU count, optional minimum VRAM, disk space, and required internal ports.
- Runs are best-effort and can be skipped or stopped by runtime conditions.
