Inventory
Track the full lifecycle of every physical miner in your fleet
Overview
The Inventory Management feature provides a persistent, hardware-level view of all ASIC machines managed by Commander. Unlike the Miners tab - which focuses on real-time telemetry and identifies machines by IP address - the Inventory tracks the physical miners themselves, uniquely identified by a stable Asset ID that persists across different scenarios.
The goal is to give operators a single source of truth for every miner they own, regardless of whether it's online, offline, being repaired, in storage, or decommissioned. Inventory replaces external spreadsheets and manual tracking processes by centralizing all hardware lifecycle and ownership information directly within Commander.
Key Concepts
Miners vs. Inventory — Two Views of Your Fleet
Commander gives you two distinct lenses on your hardware, and it's worth understanding the difference:
- Miners is the live, real-time view. It shows the devices your Agents are talking to right now — their hashrate, temperature, health, and online/offline state. A row here represents a machine as it is reporting at this moment. If a machine is unplugged, swapped out, or its control board changes, what you see on this page changes with it. Think of it as "what's running."
- Inventory is the persistent, hardware-level record. It tracks every physical ASIC you own as a durable asset — independent of whether it's currently powered on, hashing, or even installed. It holds the things telemetry can't: acquisition cost and date, supplier, warranty, hosting client, lifecycle status, custom fields, notes, and files. An asset stays on record through power cycles, redeployments, repairs, and storage. Think of it as "what you own."
| Miners | Inventory | |
|---|---|---|
| Answers | "What is running right now?" | "What hardware do we own?" |
| Data | Live telemetry (hashrate, temp, status) | Lifecycle, financial, ownership, custom metadata |
| Lifespan | Reflects the current moment | Persists across offline, repair, storage, redeployment |
| Identified by | What's reporting on an Agent (IP/MAC) | A stable Asset Code |
| Survives a control-board swap? | The miner record may change | Yes — the asset persists (and can be consolidated) |
How they connect: Commander automatically links an inventory asset to its live miner by MAC address (see Linking Inventory assets to Miners), so you can jump from an asset to its real-time telemetry and back. The two pages also share bulk-action tooling — for example, you can change an asset's lifecycle status directly from a selection on the Miners page.
In short: use Miners for operational, real-time monitoring; use Inventory as the system of record for the physical machines themselves.
Linking Inventory assets to Miners
An Inventory asset is automatically linked to a miner in the Miners tab (identified by miner_id) when there is a matching MAC address and Site. You can navigate this link in both directions — from a Miner Details page to its linked asset, and from an asset's Live Performance card to the running miner's detail page. If the miner physically moves or has a control board replaced, its associated Site or MAC Address will change, generating additional device entries.
When a control board swap or re-imaging leaves the same physical machine with more than one record, Consolidation merges them back into a single asset. The full history of all miner observations with assets is preserved, so operators can always trace which physical machine was at which IP over time.
Asset ID and Asset Code
Every miner in the Inventory is assigned a unique asset_id (a UUID generated automatically when the system first identifies the machine). This internal identifier is not shown to users directly. Instead, each asset is represented by a human-friendly Asset Code following the pattern [PREFIX]-[MODEL]-[SEQUENCE], unique within your Workspace. For example:
AM-S19XP-000001- the first Antminer S19 XP identified in the WorkspaceAM-S19XP-000002- the second Antminer S19 XPAM-S21-000001- the first Antminer S21
Why not use MAC address or Serial Number as the identifier?
MAC addresses change when you swap a control board, making them unreliable as a permanent miner identity. Serial numbers are manufacturer-assigned and tied to the chassis, but they are difficult to enter into the system at scale (often requiring manual input), and those that can be pulled automatically via API are still dependent on the control board. The Asset ID solves both problems by providing a stable identity that outlives any single component.
Lifecycle Statuses
Each Inventory asset has a lifecycle status that represents its current operational phase. These statuses are independent from the Agent-based statuses like Error Status or Hashing Status and are designed to track where a miner is in its physical lifecycle.
| Status | Description |
|---|---|
| Deployed | The miner is installed at a site and operational |
| Ready to Deploy | The miner has been imported by the user and is ready to be installed. It will automatically transition to Deployed once an Agent scans it on the network |
| In-Repair | The miner is unavailable due to repair or in transit for servicing |
| In-Storage | The miner is idle and physically stored, not deployed at any site |
| Retired | The miner has been permanently removed from the fleet |
| Consolidated | The asset was merged into another record (see Consolidating Assets). Like a deletion, this removes it from the main list |
Automatic Status Transitions
Two transitions happen automatically:
- When an Agent scans a new device and no matching inventory record exists, the asset is created with the status Deployed.
- When a manually imported asset with status Ready to Deploy is detected by an Agent scan (matched by MAC address and Site), it automatically transitions to Deployed, optionally overwriting stored metadata with what the Agent discovers (see the Lifecycle Status card on the Asset Detail Page).
All other status changes require manual user input. Notably, a Retired asset will remain Retired even if the Agent detects activity for a matching miner. In cases where miners with a status of In-Repair, In-Storage, or Retired are detected as active by an Agent, Commander will not silently change the status — instead it raises an activity conflict, displaying a notification banner on the Miners page that alerts the operator to the discrepancy, with a quick filter to view the affected miners.
Inventory Table

The Inventory page (/platform/commander/features/inventory/) displays all assets under management in a table with the following columns:
| Column | Description |
|---|---|
| Asset Code | The human-readable unique identifier for the asset |
| Lifecycle Status | The current lifecycle state of the asset (see Lifecycle Statuses above) |
| MAC Address | The miner's current MAC address |
| Serial Number | The manufacturer-assigned serial number |
| Manufacturer | The hardware manufacturer (e.g., Bitmain, MicroBT) |
| Model | The hardware model (e.g., Antminer S21 Pro, M50S_VK80) |
| Tags | Custom user-defined tags for organizing and categorizing assets |
| External ID | An optional identifier used by the customer in their own ERP or other management systems |
| Client ID | The hosting Client the asset belongs to, shown as the client's user-defined ID |
| Site | The Site the asset is associated with |
| Location | The physical position within the Sitemap hierarchy (e.g., Building 1 / R1 / C1) |
| Miner ID | The miner_id of the linked miner in the Miners tab, when the asset is deployed and currently detected by an Agent |
| Acquisition Date | When the miner was purchased |
| Acquisition Cost | The purchase price of the miner |
| Supplier | The vendor the miner was purchased from |
| Warranty Expiry Date | When the manufacturer warranty expires |
| First Seen | When the system first detected this asset |
| Retired At | The date the asset was retired (only populated when Lifecycle Status is Retired) |
| Custom Fields | Any Custom Fields your Workspace defines appear as additional columns alongside the standard ones |
The Inventory table supports pagination, CSV export, column visibility and reordering controls, and an Asset Filter button for building advanced filters using AND/OR conditions - the same filter builder pattern used in the Miners table.
Asset Detail Page

Clicking on any asset in the Inventory table opens the Asset Detail page, which provides a comprehensive view of the individual miner. The page is split into a content column and a side panel.
Content Column
- Lifecycle Status card — change the asset's status from a dropdown. When set to Ready to Deploy, an Overwrite metadata option lets the next Agent scan replace the stored values (MAC, serial, manufacturer, model) with what the Agent discovers.
- Details — Asset Code, MAC Address, Serial Number, Manufacturer, Model, External ID, and Client. Most fields are editable. Editing the MAC Address or Site will cause the asset to link to a different
miner_id, and Commander will inform you of this change. Editing the Manufacturer or Model manually may conflict with data reported by the Agent - Commander will notify you if a discrepancy is detected. - Custom Fields — your Workspace-defined Custom Fields, shown when any exist, editable in place.
- Financial — Acquisition Date, Acquisition Cost, Supplier, and Warranty Expiry.
- Notes & Files — a free-text note plus file attachments (upload and delete). This is useful for documenting repair history, including photos of physical damage, attaching purchase receipts or warranty documents, and recording any other information relevant to the asset's lifecycle.
Side Panel
- Activity Log — a paginated audit history of every change made to the asset, including status transitions, property edits, and
miner_idassociation changes. This provides a complete audit trail for each physical machine. - Live Performance — when the asset is Deployed and its MAC matches a running miner, this card links straight to that miner's Miner Details page for real-time telemetry.
Activity Conflict Banner
If an asset is marked as not running (In-Repair, In-Storage, or Retired) but the Agent still sees its miner active, a banner flags the mismatch so you can reconcile the record.
Importing Assets
Assets can be added to the Inventory in three ways:
Automatically via Agent Scans
When the Commander Agent scans your network and detects a new device, it automatically creates an Inventory record with the lifecycle status Deployed. The following fields are populated automatically from the scan: MAC Address, Manufacturer, and Model. No manual action is required.
Manually via the UI
Click the add button on the Inventory page to open a form where you can manually create a single asset. This is the same form shown in the Asset Detail page, allowing you to specify machine metadata, financial information, and lifecycle status. This is useful for pre-registering assets that haven't been deployed yet (e.g., miners in storage or in transit).
Manually via CSV Import
For bulk imports, upload a CSV file to create or update multiple assets at once. The CSV importer provides a preview with row-level validation before anything is written — valid rows and error rows are listed with messages, so you can fix and re-upload. Commander also performs matching detection, checking each MAC against the miners actually reporting at the target site: if any rows match existing Inventory records (by MAC address and Site), it tells you how many existing assets will be updated and lets you confirm before proceeding, and it warns about site mismatches where a MAC is found at a different site than the CSV specifies. Matching records have their data replaced by the values in the CSV file. Imports scale to large fleets (up to 100,000 rows), and custom-field columns are imported alongside the standard fields.
Deleting, Retiring, and Restoring Assets
When you remove an asset you're offered two paths:
- Retire keeps the asset in your Inventory with a Retired status badge — best for end-of-life hardware you still want on record.
- Delete hides the asset from the Inventory list (a soft archive). Critically, the Agent will not recreate a deleted asset even if it later discovers the same MAC, so an intentional delete sticks.
Deleted assets aren't gone for good. In Settings → Deleted Miners you'll find a searchable, sortable list of everything you've deleted (asset code, MAC, serial, status, and when it was archived). Select one or more and click Restore to bring them straight back into the main Inventory.

Consolidating Assets
When a control board is swapped (or hardware is otherwise re-imaged), the same physical machine can end up with two Inventory records. Consolidation merges them into one.
From an asset's detail page, choose Consolidate, search for the duplicate record, and resolve any conflicting fields side-by-side — both standard and custom fields — by picking which value to keep. On confirm, the surviving asset is updated, the duplicate is marked Consolidated (and removed from the main list), and both records' history is written for a full audit trail. Consolidation can merge records across sites, for cases where the same MAC appears at more than one location.

Inventory Bulk Actions
Similar to Bulk Actions on the Miners page, the Inventory supports bulk operations on multiple assets at once. Select assets using the checkboxes in the table, then click the Bulk Actions button to choose an operation.

Available Inventory Bulk Actions
| Action | Description |
|---|---|
| Edit Assets | Change metadata across the selection using one of three modes: same value for all, a different value per asset, or import from CSV. Custom fields can be edited here too |
| Delete Assets | Soft-archive the selection (with the option to Retire instead). Deletion can target an explicit selection or everything matching the current filter and search. A deleted asset will not reappear from an Agent scan — restore it from Settings → Deleted Miners |
Changing Lifecycle Status from the Miners Table
Lifecycle status can also be changed in bulk from the Miners table. Select multiple miners and use Bulk Actions → Change Lifecycle Status to move all of their linked Inventory assets to a new status (Deployed, Ready to Deploy, In-Repair, In-Storage, or Retired) in one operation. Each affected asset records the change in its activity log.
Inventory Actions Log
Inventory bulk actions are tracked in the same Actions Log used for miner commands. A toggle at the top of the Actions Log allows you to switch between viewing miner command actions and inventory actions, keeping the interface clean and performant.
Custom Fields
Beyond the standard asset metadata, each Workspace can define its own custom fields to track whatever it needs - purchase orders, rack owners, firmware tiers, RMA numbers, and so on.
Defining Fields

In Settings → Custom Fields, add a field with a label, optional help text, a type, an optional default value, and a required hint. Drag to reorder how the fields are displayed. The available field types are:
| Type | Use |
|---|---|
| Text | Free text (up to 2,000 characters) |
| Number | A validated decimal value |
| Date | A calendar date |
| Yes/No | A boolean toggle |
| Select | A dropdown of operator-defined options |
Editing Values
Custom fields appear in their own section on the Asset Detail Page and can be edited in place. They also show up as columns in the Inventory table, and they can be set in bulk - the same value for all selected assets, a different value per asset, or via CSV import. Custom fields are included in CSV import and export, keyed by the field's identifier.
When consolidating duplicate assets, conflicting custom-field values are shown side-by-side so you can choose which to keep.
Hosting Client Assignment
Inventory assets can be associated with a Client - a hosting customer record managed under Settings → Clients. Each Client captures contact details, an optional per-kWh price, and an optional Third-Party Pool assignment. Linking an asset to a Client gives operators a single view of which physical miners belong to which hosting customer, and makes the Client's negotiated pricing and preferred pool available as context wherever that asset appears.