Skip to Content
DocumentationDevice Registration

Device Registration

Hardware intake, identity assignment, and evidence capture.

Overview

When a new device arrives, it must be registered into the Floppy.WTF system before provisioning. Registration creates a verifiable identity record backed by content-addressed evidence (photos).

Device ID Format

Pattern: FLOPPY-{TYPE}-{SEQ}

Type CodeHardware ClassExamples
DELDellInspiron, OptiPlex, Latitude
LENLenovoThinkPad, IdeaPad
HPEHP/HPEProBook, EliteDesk
RPIRaspberry PiPi 4, Pi 5, Pi Zero 2W
HIWHIWONDERTurboPi, SpiderPi, JetAuto
SEDSeeed StudioreTerminal, XIAO
ARDArduinoMega, Portenta
ESPEspressifESP32, ESP32-S3
NVDNVIDIAJetson Nano, Jetson Orin
PINPine64PineBook Pro, PinePhone
BGLBeagleBoardBeagleBone Black, BeaglePlay
VRTVirtual MachineQEMU, VirtualBox, cloud
GENGeneric/OtherAny unlisted hardware

Sequence: zero-padded 5-digit counter per type.

Examples:

  • FLOPPY-DEL-00001 — First Dell laptop
  • FLOPPY-RPI-00003 — Third Raspberry Pi
  • FLOPPY-HIW-00001 — First HIWONDER robot
  • FLOPPY-SED-00001 — First Seeed terminal
  • FLOPPY-NVD-00001 — First NVIDIA Jetson
  • FLOPPY-VRT-00001 — First VM

Device Identity Schema

// Laptop example { "deviceId": "FLOPPY-DEL-00001", "model": "Dell Inspiron 15 3535", "serial": "ABC1234XYZ", "hostname": "dell-dev-01", "hardware": { "cpu": "Intel i5-8250U", "ramGB": 8, "disk": { "type": "SSD", "sizeGB": 256 }, "gpu": "Intel UHD 620", "macAddress": "aa:bb:cc:dd:ee:ff" }, "role": "dev", "status": "received", "evidence": [], "registeredAt": "2025-01-15T10:30:00Z" } // Robot example { "deviceId": "FLOPPY-RPI-00001", "model": "Raspberry Pi 4 + HIWONDER TurboPi", "serial": "RPi4-HW-042", "hostname": "xrobot", "hardware": { "cpu": "BCM2711 Cortex-A72", "ramGB": 4, "disk": { "type": "SD", "sizeGB": 512 }, "macAddress": "dc:a6:32:xx:xx:xx" }, "role": "robot", "status": "active", "evidence": [], "registeredAt": "2025-02-01T14:00:00Z" }

CLI Commands

floppy device register

Register a new device.

# Register a laptop floppy device register \ --model "Dell Inspiron 15" --serial "ABC1234XYZ" --role dev \ --cpu "Intel i5-8250U" --ram 8 --disk "SSD:256" # Register a robot floppy device register \ --model "Raspberry Pi 4 + HIWONDER TurboPi" --serial "RPi4-HW-042" --role robot \ --cpu "BCM2711" --ram 4 --disk "SD:512" # Register a terminal floppy device register \ --model "Seeed reTerminal E1001" --serial "E1001-X7" --role terminal \ --cpu "BCM2711" --ram 4 --disk "eMMC:32"

Behavior:

  1. Validate all required fields
  2. Generate next device ID for hardware type
  3. Set status to received
  4. Create registry/devices/{deviceId}.json
  5. Print device ID and summary

floppy device attach-photo

Attach photographic evidence to a device.

floppy device attach-photo FLOPPY-RPI-00001 ./front.jpg --label "chassis-front"

Behavior:

  1. Validate device ID exists
  2. Read photo file
  3. Strip EXIF metadata (privacy + hash stability)
  4. Compute SHA256 of stripped image
  5. Copy to registry/evidence/{hash}.jpg
  6. Update device record with evidence entry
  7. Print hash confirmation

floppy device list

floppy device list floppy device list --role dev floppy device list --status provisioned

floppy device verify

Verify evidence integrity.

floppy device verify FLOPPY-RPI-00001

Recomputes SHA256 for each evidence artifact and compares against the recorded hash.

floppy device update-status

Transition device lifecycle state.

floppy device update-status FLOPPY-RPI-00001 --status verified

Lifecycle States

received ──► verified ──► provisioning ──► provisioned ──► active retired
StateMeaning
receivedHardware intake complete, not yet inspected
verifiedPhysical inspection passed, ready to provision
provisioningNixOS flash in progress
provisionedOS installed, not yet deployed
activeIn service
retiredDecommissioned

Evidence Handling

EXIF Stripping

Before hashing, all EXIF/metadata is stripped from photos:

  • GPS coordinates removed
  • Camera info removed
  • Timestamps removed
  • Orientation preserved (applied to pixel data)

This ensures:

  1. Privacy protection — no location data leaks
  2. Hash stability — same photo from different transfers produces same hash

Content-Addressing

Evidence files stored by hash, not filename:

registry/evidence/ ├── a1b2c3d4...jpg # SHA256 of normalized image ├── e5f6g7h8...jpg └── ...

Benefits:

  • Deduplication — same photo = same hash = stored once
  • Tamper detection — content change = hash change
  • Filename-independent — renaming doesn’t affect integrity
Last updated on