Build server sn1-1f0ccb
sn1-1f0ccb is an appliance-class x86 box on the home LAN used as a general worker. Today it has two roles: it is the camera-stream source for the edge appliance (a simulator that loops clips as RTSP cameras) and the host for Rust builds of the appliance search-engine. It also runs the webhook receiver that the appliance’s agents post to. The hostname is its identity; the roles can change. Registered roles: camera-stream-source, appliance-builder.
Access
Section titled “Access”Connect as pi with the Mac’s key: ssh pi@192.168.1.12. The mDNS name sn1-1f0ccb.local resolves only when the Mac is on the same subnet; scripts use the reserved address. pi has passwordless sudo and is in the docker group. The address 192.168.1.12 comes from DHCP with a reservation for the box’s MAC in the home router; the reservation has not been proved by a lease lapse. The appliance stores camera streams as raw addresses, so this address must not move.
Baseline
Section titled “Baseline”Observed on 6 October: Ubuntu 22.04.5, kernel 6.8.0, Intel i3-8130U (4 threads), 7 GB RAM, 1.7 TB disk with 1.7 TB free, Intel UHD 620 with VAAPI at /dev/dri/renderD128, one wired interface enp2s0. Docker 29.1.3 from Ubuntu’s package, enabled at boot. No Mender, no Tailscale, no ffmpeg on the host. rsync and python3 are present. Nothing here is managed by this repository.
What runs
Section titled “What runs”| Component | Recorded facts |
|---|---|
| Camera simulator | Status: observed Container: camera-simulator Image: gcr.io/test-ai-243511/camera-simulator:1.0.19 Ports: 80 dashboard and API, 554 RTSP, 8554 legacy RTSP, on all interfaces Supervision: Docker restart always; Docker enabled at boot Network: host; /dev/dri passed in; library mounted at /videos Reboot: Seen running after the 6 October reboot |
| Webhook receiver | Status: observed Unit: webhook-receiver.service Port: 8090 on all interfaces Supervision: systemd, enabled at boot since 2026-10-06, Restart=always Source: webhook-receiver.py in the appliance repository notes folder; not maintained here User: pi Reboot: Enabled at boot; not yet verified across a reboot |
| Search-engine build (cargo on the host) | Status: reported Toolchain: rustup in /home/pi/.cargo (stable 1.94.1 present; the script installs 1.89.0 to match the product Dockerfile) Source copy: /home/pi/appliance-build (rsync of app/svc/search-engine and app/shared/shared-rs from the Mac) Runtime: Invoked over SSH; no resident service or listening port Source size: 7 MB on 6 October 2026 |
The simulator seeds one path per file in the library on first start and keeps the path list in .cam-sim-state.json inside the library directory. A path’s ffmpeg runs only while it has readers, with the copy encoder, so seven cameras cost little. The dashboard is http://192.168.1.12/; GET /api/paths lists paths and readers; the RTSP credentials are the simulator’s defaults and are not written here.
The receiver answers 200 to every request and appends one JSON line per call to /home/pi/webhooks/received.jsonl. Its source is webhook-receiver.py in the appliance repository’s notes folder (see source map); this repository does not maintain it.
Important locations
Section titled “Important locations”| Component | Recorded facts |
|---|---|
| Video library copy and simulator state | Status: observed Persistence: Copied from the appliance on 2026-10-05 (24 files, 24 GB). The simulator keeps its path definitions in .cam-sim-state.json inside this directory; deleting the directory loses the seven configured paths. Path: /home/pi/camera_simulator/videos |
| Receiver log | Status: observed Persistence: Append-only JSON lines. Each run renames the current file to received-before-<run>.jsonl and the run copies its own lines into the appliance repository notes. Old files can be deleted when no longer wanted. Path: /home/pi/webhooks/received.jsonl |
| Cargo build directory | Status: observed Persistence: Build cache only (7.6 GB on 2026-10-06, from a 1 September debug build). Safe to delete; the next build takes longer. Path: /home/pi/search-engine-target |
Earlier working directories /home/pi/sheets, /home/pi/search-engine and /home/pi/tracker-bench-target remain on the host; their purpose and size were not re-verified.
Normal operation and recovery
Section titled “Normal operation and recovery”Runs of the test bed restart the simulator on purpose; see run a baseline. Building and swapping the search-engine is a separate workflow. Recovery recipes, including a dead receiver and a moved address, are in the test bed runbook.
Do not run a heavy build during a measurement run: the simulator shares the four threads. Do not delete the library directory to free space; the path definitions live inside it.
Unknowns and verification
Section titled “Unknowns and verification”Facts above were read on 5 and 6 October. The only measurement run so far (run 1) was interrupted by the power loss. Not verified: the DHCP reservation across a lease lapse, the receiver unit across a reboot, the release build on this host. The 6 October reboot at 08:55 UTC was a house power loss that also rebooted the appliance; the journal shows no shutdown line.