Fleet Registry & Node Management
Central inventory, automated provisioning engine, and operational runbooks for the InTEGr8or Homelab Fleet (Intel NUCs, Raspberry Pis, and edge nodes).
1. Fleet Overview
| Node ID | Hostname | Model / Hardware | CPU Cores / Threads | RAM | Storage | Tailscale IP | Status | Primary Role |
|---|---|---|---|---|---|---|---|---|
nuc01 |
NUC01 |
Intel NUC 11 Performance (NUC11PAHi5) | 4c / 8t @ 4.2 GHz | 8 GB DDR4 (1x 8GB) | 250 GB WD Black SN770 | 100.88.63.109 |
Online | Primary Dev Box |
nuc02 |
NUC02 |
Intel NUC 13 Pro Slim (NUC13ANKi5000) | 12c / 16t @ 4.6 GHz | 16 GB DDR4 (1x 16GB) | 512 GB TEAM NVMe | 100.99.32.117 |
Online | High-Compute / Worker |
nuc03..08 |
Pending | Intel NUCs (NUC10/11/13 mix) | TBD | TBD | TBD | Pending | Unboxed | Cluster Nodes |
pi-nodes |
Pending | Raspberry Pi 5 / 4 | 4c / 4t (ARM64) | 4GB / 8GB | NVMe / MicroSD | Pending | Online | IoT / Edge |
Detailed machine-readable specifications are tracked in inventory/devices.json.
2. Repository Structure
fleet-registry/
├── inventory/
│ ├── devices.json # Source of truth: hardware specs, MACs, IPs, and roles
│ └── schema.json # JSON Schema for devices.json (`fr schema --write`)
├── src/fleet_registry/
│ ├── core/ # Business logic: models, inventory I/O, SSH, audit, reconcile
│ ├── cli.py # `fr` command line (Typer + Rich)
│ ├── tui/ # `fr` dashboard (Textual)
│ └── render.py # Rich tables shared by CLI and TUI (verkit theme)
├── tests/
├── usb/
│ ├── preseed.cfg # Master Debian unattended installer configuration
│ └── grub-menu.cfg # Fast boot entry configuration for USB installer
└── docs/
├── battery-backup-guide.md # 19V Mini DC-to-DC UPS and USB-PD trigger guide
└── 1password-headless-guide.md # Zero-secrets Windows Hello biometrics over SSH
3. The fr CLI / TUI
fleet-registry is a cross-platform Python tool (Windows, WSL, Linux, macOS). fr is the
short alias for fleet-registry.
Install
Anywhere (from PyPI):
uv tool install fleet-registry
uv tool upgrade fleet-registry # later
In this checkout, mise activates a per-OS venv (.venv-windows /
.venv-linux) holding an editable install, so fr here always runs the working-tree code:
mise trust && mise install && mise run setup # once (re-run setup when deps change)
Usage
| Command | What it does |
|---|---|
fr |
Open the TUI dashboard (a audit, A audit all, u apply audit, p ping, r reload, q quit) |
fr list [--ping] |
Fleet table, optionally with SSH reachability |
fr show nuc02 |
One device's inventory record |
fr audit nuc02 |
Audit hardware/network/OS over SSH and diff against the inventory |
fr audit --all --update |
Audit every addressable node and write measured changes |
fr audit nuc03 --update --add |
Register a freshly installed node |
fr audit nuc02 --json |
Raw audit data |
fr config [--inventory PATH] [--ssh CLIENT] |
Show / set user settings |
fr schema --write |
Regenerate inventory/schema.json |
fr version |
Installed vs. latest PyPI version |
Audits only update measurable fields (CPU, cores/threads, RAM, slots, MAC, IPs, Tailscale,
OS, kernel); hand-written descriptions like model, storage, and role are never touched.
RAM slot details need passwordless sudo for dmidecode on the node.
Finding the inventory: --inventory → $FLEET_REGISTRY_INVENTORY → inventory/devices.json
in the current directory or a parent → fr config --inventory PATH. To use fr outside the
checkout, run once: fr config --inventory ~/repos/fleet-registry/inventory/devices.json.
SSH client: fr shells out to OpenSSH so ~/.ssh/config host aliases apply. On Windows
and in WSL it uses the Windows OpenSSH client (C:\Windows\System32\OpenSSH\ssh.exe), so
the 1Password / Windows Hello agent works with no socket bridge. Override with $FLEET_SSH or
fr config --ssh ssh.
Development & releases
mise run test # pytest
mise run lint # ruff + mypy
mise run release # verkit: bump patch, tag vX.Y.Z, push → GitHub Actions publishes to PyPI
mise run release minor
Rich output uses the shared verkit theme.
4. Quick Start: Provisioning a New NUC
Step 1: Automated Debian Install via USB
- Plug the Debian Installer USB into the new NUC and connect an Ethernet cable.
- Power on and tap
F10for the boot menu. Select the USB drive. - Select
Automated Headless Install (Preseed). - The installer prompts once for a hostname (e.g.
nuc03), then automatically wipes the NVMe drive, installs Debian headless, sets up usermstouffer, pre-injects your SSH keys, enables passwordlesssudo, and reboots.
Step 2: Connect via SSH
From Windows or WSL:
ssh mstouffer@<hostname>.local
# or using the host alias:
ssh nuc02
Step 3: Hardware Audit & Inventory Registration
fr audit nuc03 --update --add
5. Documentation & Operational Runbooks
Metadata
Release files for fleet-registry 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fleet_registry-0.1.0.tar.gz | 20.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fleet_registry-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.4 kB
Release files / fleet_registry-0.1.0.tar.gz
| Download URL | fleet_registry-0.1.0.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15687f02f1f9c8975425cfa68fe94c50a4ca93ac2cf8a0394472312189017119
|
|
BLAKE2b-256 checksum How to use checksums |
9b871c4c5e945b2d1f597f2aa0028bb811f942238288dcb41368e7a486274490
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / fleet_registry-0.1.0-py3-none-any.whl
| Download URL | fleet_registry-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ccc5657e9d116ed587bfc77e1959678a743397ad1ed90bc13bce29730e0ccf8
|
|
BLAKE2b-256 checksum How to use checksums |
c34fe9283b6946ae7fa2ab8aa771342c87d9f097c03b0a161575cf8834043e3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency log