Sitemap
Visualize your physical mining infrastructure and monitor performance spatially
Overview
Tables and charts are useful for fleet-wide analysis, but some problems are spatial - a row of miners overheating because of an airflow issue, a rack drawing more power than expected, or a section of the facility with disproportionate error rates. The Sitemap lets you see your facility the way it's physically laid out, with heatmap overlays for temperature, hashrate, and power consumption, so you can spot patterns that would be invisible in tabular data.
The Sitemap is accessible from the Sitemap tab in the Commander navigation.

Understanding the Sitemap
The Sitemap is how you tell Commander where every miner lives in your facility. It mirrors your physical layout — buildings, containers, rows, racks — so you can monitor and manage your fleet spatially, not just as a flat list of IP addresses.
The key idea is simple: everything is a grid, and grids go inside other grids.
The Site grid
Your site is the top-level grid. You define how many columns and rows it has, and then place items into those cells. Items come in two types:
- Groups — organize things together (like a building, container, or room)
- Racks — hold your actual miners

Think of the site grid as a blank table. You choose its size (e.g. 3 columns by 1 row), and then drop groups or racks into whichever cells you want. You don't have to fill every cell.
Groups are grids too
When you create a group, it gets its own grid inside it. You define the number of columns and rows for that group, and then place racks (or more groups) into its cells.

In the example above, "Container 1" is a group with a 3×2 grid. Four of its six cells contain racks, and two cells are left empty. Empty cells are perfectly fine — your grid size just needs to be large enough to hold everything you want to place inside.
Racks are where the miners live
A rack is the final type of grid. Instead of holding other groups or racks, each cell in a rack holds one miner.

You define a rack's size based on its physical layout. For example, if a rack has 6 shelves with 4 miners per shelf, you'd set it to 4 columns by 6 rows (24 miner slots total). Commander color-codes each cell as a heatmap so you can visually spot issues — a hot miner (shown in orange) stands out immediately, and empty slots are shown with a dashed border.
Putting it all together
Here's how the three types of grids nest together in a real facility:
Notice how Building 2 has racks placed directly inside it (no level 2 groups needed), while Building 1 uses level 2 groups to add an extra layer of organization. Both patterns work in the same site.

Nesting rules
Groups can hold other groups, but only up to two levels deep. Here's what's allowed and what's not: Two valid patterns:
-
Site → Level 1 group → Level 2 group → Racks — Use this when you need an extra layer of organization. For example: Site → Building → Room → Racks.
-
Site → Level 1 group → Racks — Use this when one layer of grouping is enough. For example: Site → Container → Racks.
You can even mix both patterns in the same site. Some groups might have level 2 sub-groups, while others hold racks directly.
What's not allowed: Three levels of groups (e.g. Building → Floor → Room → Racks). If you need this, combine two levels into one — for example, name your level 2 group "Floor 2 - Room A" instead.
Navigating the Sitemap page
Site-Level KPIs

At the top of the Sitemap page, aggregate KPI cards display performance metrics for the selected Site:
- Mapped Miners (Site miners with a Sitemap location associated / Total miners in the Site)
- Hashrate (TH/s)
- Power Consumption (MW)
- Efficiency (J/TH)
- Hashing Miners (count)
- Avg Temperature (°C)
All KPIs above are aggregated only for miners from the Site selected which also have been mapped to a position inside the Sitemap
Performance Map

The main area of the Sitemap displays your Groups and Racks with a grid view showing each miner slot. You can switch between three heatmap overlays using the tabs above the grid:
| Overlay | Description |
|---|---|
| Temperature | Color-codes each miner slot from blue (cool) to red (hot) based on the miner's avg board temperatures. |
| Hashrate | Color-codes slots based on the miner's current hashrate relative to its expected nameplate output |
| Power Consumption | Color-codes slots based on power draw relative to its expected nameplate consumption |
Empty slots are displayed as "Empty" in grey, indicating positions where no miner is assigned.
Inspecting a Miner
Hover the mouse over any occupied slot in the grid to open a detail panel on the right side of the screen. The panel displays:
- Position: The miner's row and column within the rack (e.g., Row 4, Column 1)
- Rack Name: The rack the miner belongs to (e.g., P7C)
- Parent Group: The group the rack is part of (e.g., Panel 7)
- Temperature: Current temperature with a visual gauge showing the temperature relative to the safe range
- Hashrate: Current hashrate in TH/s
- Power Consumption: Current power draw in Watts
- Error Status: Healthy, Failing, or N/A
- Hashing Status: Hashing, Idle, Offline, or N/A
- IP Address: The miner's network address
- MAC Address: The miner's hardware address
- Model: The miner hardware model
- Nameplate Hashrate: The miner's expected factory settings hashrate
- Nameplate Power: The miner's expected factory settings power consumption
The panel also provides quick actions:
- View Miner Details: Navigate to the full Miner Details page.
- Configure: Open the miner configuration dialog.
Managing Groups
Adding a Group

Click + Group to create a new group.
The Add Group dialog allows you to configure:
- Identity: Name the group. This is the label you will see on the sitemap for this container (building, row, panel, etc.).
- Group Size: Define the internal grid of this group: how many columns (width) and rows (height) of slots exist for placing child groups or racks inside this group. A small group preview grid updates as you change width and height so you can see the shape of the empty grid (rows × columns).
- Placement: Choose where this group sits in its parent: either the site top-level grid or inside another group. Also set the row and column index of the single cell this group occupies in that parent grid.
Managing Racks

Adding a Rack
Click + Rack to create a new rack.
The Add Rack dialog allows you to configure:
- Identity: Name the rack (e.g. matches your site naming: panel + rack id).
- Rack Size: Define the miner slot grid for this rack: how many columns (rack width) and rows (rack height) of miner positions the rack has. This is not the position of the rack in the facility; it is the size of the rack’s own grid of miners.
- Placement: Choose where the new rack sits in the parent grid (site or group): parent, row, and column.
- Miner Assignment: Optionally map IPs (and discovery) to slots before or after saving. You can skip this and assign later; the section explains that.
- When creating a rack, you need to associate miners with slots. Commander supports two assignment modes:
- Auto-assign: Provide an IP address range (e.g.,
10.206.0.1-100) and Commander will automatically assign miners to rack slots based on their IP addresses.- Allocation Order: Controls how miners are placed into slots when some IPs in the range don't have a miner. Non-sequential (no gaps) compacts miners into consecutive slots with no empty spaces - if your range is
.1-.20and only.1,.3, and.5have miners, they'll appear in slots 1, 2, 3. Sequential preserves positional consistency by leaving gaps for missing IPs - the same three miners would appear at positions 1, 3, and 5, with slots 2 and 4 empty. Use Sequential if slot position should match the last octet of the IP address. - Fill Direction: Choose between "Left to Right, Top to Bottom" or other fill patterns to match your physical wiring layout.
- Allocation Order: Controls how miners are placed into slots when some IPs in the range don't have a miner. Non-sequential (no gaps) compacts miners into consecutive slots with no empty spaces - if your range is
- Manual entry: Manually assign specific IP addresses to individual rack slots.
- Auto-assign: Provide an IP address range (e.g.,
- After configuring the rack layout and IP assignments, click Scan to discover miners at the specified IPs and populate the rack grid.
- When creating a rack, you need to associate miners with slots. Commander supports two assignment modes:
Importing via CSV
If you have a large facility or are migrating from another fleet management tool, setting up your sitemap through the UI one rack at a time can be slow. Commander supports CSV import to let you define your entire sitemap structure and miner assignments in bulk.
There are two CSV files, each handling a different part of the setup:
| CSV file | What it does |
|---|---|
| Layout CSV | Defines the sitemap structure — groups, racks, their sizes, and where they sit in the hierarchy |
| Location CSV | Maps individual miners to specific positions inside racks |
You can use them independently. For example, you might import a layout CSV to build the structure, then assign miners through the UI later. Or if your structure already exists, you can import just a location CSV to populate racks with miners.
Both templates are available for download from the Sitemap page by clicking Import.
Layout CSV
The layout CSV defines every group and rack in your sitemap. Each row is either a group or a rack.
Columns:
| Column | Required | Description |
|---|---|---|
type | Yes | Either group or rack. |
name | Yes | A unique name for this item (e.g., Container 1, Rack 3A). |
rack_width | Racks only | Number of columns in the rack's miner grid (positions per shelf). |
rack_height | Racks only | Number of rows in the rack's miner grid (shelves). |
group_width | Groups only | Number of columns in the group's child grid. Defaults to 1 if omitted. |
group_height | Groups only | Number of rows in the group's child grid. Defaults to 1 if omitted. |
parent_group_name | No | The parent group this item belongs to. Leave empty for top-level items. |
row | Yes | Row position within the parent's grid (0-based). |
column | Yes | Column position within the parent's grid (0-based). |
0-based indexing: The first row is
0, the first column is0. A rack at row 2, column 3 means the third row down and fourth column across.
Example — two containers with racks inside:
This creates:
Order of rows matters: Groups must appear before the racks or child groups that reference them as parent_group_name. If Rack 1A references Container 1, then the Container 1 row must come first in the file.
Common mistakes:
- Putting two items at the same row and column in the same parent — each cell can only hold one item.
- Setting
rack_width/rack_heighton a group, orgroup_width/group_heighton a rack — these fields apply to their respective types only. - Trying to nest three levels of groups — Commander supports a maximum of two.
Location CSV
The location CSV maps miners to specific positions inside racks. Each row places one miner in one slot.
Columns:
| Column | Required | Description |
|---|---|---|
miner_ip | At least one of miner_ip or mac | The miner's IP address. |
mac | At least one of miner_ip or mac | The miner's MAC address. |
row | Yes | Row position within the rack (0-based). |
column | Yes | Column position within the rack (0-based). |
rack_name | Yes | The name of the rack this miner belongs to. Must match a rack name from your sitemap. |
Example — assigning miners to a 4-column, 6-row rack:
This places six miners in Rack 1A: four across the first shelf (row 0, columns 0–3) and two on the second shelf (row 1, columns 0–1).
Tips
- You can provide IP address, MAC address, or both. At least one is required so Commander can identify the miner.
- The
rack_namemust exactly match a rack that already exists in your sitemap (either created via UI or imported via the layout CSV). - You don't have to fill every slot — empty positions will show as "Empty" in the sitemap grid.
- If a miner is already assigned to a position, importing a new location CSV will overwrite the previous assignment.