A River Becoming: bitcube

Status, plan and log for the show machine

View the Project on GitHub gavaiken/river-bitcube

A River Becoming: running log and handoff for LLMs

Running record of what Gavin and Claude have done on this project, plus how to pick up from here. Append new sessions at the bottom (newest last). Never put passwords or tokens in this file.

Related files:

This repo is public. Never commit passwords, tokens, camera logins, private keys or phone numbers. Names, hostnames, IPs, ports, device usernames and account emails may be published (Gavin, 18 Oct). Secrets live only in untracked secrets.local.json on bitcube.


1. Project in one paragraph

LED + AI art installation for Gray Area (SF) that should read as a river. 20 LED ropes (8,000 px) are the rain/flow, ~30 HUB75 panels are “pools” in the flow, plus driftwood and river rocks. An AI “river” agent (Dave’s, on Modal) gets input from Reolink cameras at the gallery and at a real river (Starlink + solar). Prototyping happens at Agape (Gavin’s house). Install at Gray Area Oct 22–27, 2026. Gavin joined Oct 6 to handle pixel mapping and the CPU→LED path.

2. People

| Who | Role | |—|—| | Colin | Artist; lead / organiser, ordering | | Justine Sun Dela Cruz | Meeting notes, visual references, coordination | | Will Gardiner | Networking, cameras, Tailscale (tailnet owner), Windows box, rope-light app | | Dave (drocamor) | Agent + generated visuals on Modal; owns the river-agent repo | | Andi | HUB75 panels, Colorlight config (from their own Windows PC), TouchDesigner | | Lilian (Lily) | Rigging; Gray Area liaison with Seabrook | | Gavin | Pixel mapping, TouchDesigner harness; built the Chromatik model + TD patch on Oct 7 |

3. System architecture (current understanding)

Dave's visuals (Modal / web canvas)
        │
TouchDesigner on bitcube  ── "glue"
   ├─ crop 20×400 region ─► Art-Net (2.x.x.x /8) ─► AoShow rack controller ─► PSAC10 ×2 ─► 20 ropes
   └─ crop/rotate panel regions ─► 1080p frame ─► HDMI ─► Colorlight sender ─► 5A-75B ─► HUB75 panels
Cameras (Reolink, RTSP + pan/tilt) ─► GL.iNet router running Tailscale ─► Modal agent ("brain")

4. Access

GitHub

Tailscale

What runs on bitcube

5. Gavin’s own assets

6. Open items / next steps (as of 18 Oct 2026, 18:00)

The live checklist is docs/plan.md (items and open questions) and the session status is docs/execution-plan.md. This is the short handoff view.

Showing now: the local rain checkpoint (river-local-oct-18.toe, opened at login) on the 18 working ropes and HUB75 quad 1, with no Modal.

Waiting on people:

  1. Dave: OK to run gallery/sync.py on bitcube, whether SITE_TOKEN is set, and the canvas design size. Unblocks session D (his visuals on the ropes and HUB75, falling back to local rain). INGEST_TOKEN, location/channel names and clip cadence unblock session E (cameras into his agent).
  2. Andi: the receive-card layout for quad 2 and the panel-mount thread size (P2, plan item H).
  3. Will: retire RopeLights or keep it as a backup (it is stopped and has no trigger); OK to edit config.local.json; the Gray Area network (bitcube’s dual NIC, the cameras’ network); a fixed address for the gallery cam.
  4. Gavin / team: the swap test for ropes 9 and 17 (P1, deferred); whether the show needs a Commercial TouchDesigner licence; what the gallery shows if bitcube goes down (today the hardware’s own colour cycle).

Next work:

  1. Session I (Mac mini, running): interactive system docs (plan item M).
  2. From Wed 22 Oct at Gray Area (session G): re-run the pixel map on the hung ropes and HUB75 (plan item J, including each rope’s plug-end direction and the 170/340 universe boundaries), re-aim the gallery cam, set up the gallery network. Advertise the gallery cam’s new address from bitcube on Will’s tailnet and remove 10.0.7.76/32. Never advertise the venue’s own LAN from another device (docs/sessions/A.md, 17:50).
  3. bitcube has no GitHub credentials for river-agent: pull and push it from a machine that has them, or ask Dave for a deploy key. Needed before D and E.

Housekeeping (not urgent):

  1. Review the TeamViewer service (a second remote-access path).
  2. Optional: run tools\snapshot_task.ps1 once from an elevated PowerShell so RiverSnapshot also runs with nobody logged in.
  3. Gavin’s Oct 7 Chromatik model and pixel map were never copied to bitcube. The camera pixel map has replaced them for now; they’re only needed if item J uses them.
  4. Optional: an ongoing Signal link via signal-cli as a linked device (offered, not done). For now Gavin sends Signal messages himself.

Done from the 17 Oct list: TouchDesigner licence (Non-Commercial); river-agent access and clone; TD driving the ropes over Art-Net and HUB75 quad 1 over HDMI; box IPs (2.0.0.10/.11) and the universe mapping (Will’s config); colour order (RGB); live Art-Net overrides the boxes’ own program, and silence hands it back.


Session log

2026-10-17 (evening, Gavin + Claude on the mini via remote-control)

2026-10-18 (Gavin + Claude on the mini, then handoff to Claude on bitcube)

2026-10-18 ~01:00–01:25 (Claude Code on bitcube, solo after handoff)

2026-10-18 ~01:30–01:40 (Claude Code on bitcube): hardware feedback, rope tests, save fix

2026-10-18 midday (Gavin + Claude on the mini)

2026-10-18 afternoon (Gavin + mini Claude)

2026-10-18 15:36–16:00 (session B, Claude on bitcube): local rain checkpoint (plan item L)

2026-10-18 16:26– (session C, Claude on bitcube): camera snapshot, black LED window

2026-10-18 17:35 (Claude on bitcube): out-of-date doc lines fixed

2026-10-18 17:28–18:25 (session I, Claude on the Mac mini): system map (plan item M)

2026-10-18 18:46 (Claude on bitcube): HUB75 off for the day