- connect-board.ps1 / .bat: PowerShell twin of connect-board.sh so teams on Windows 11 attach the USB Uno Q to the local self-host stack (adb forward + self-register; -Watch for auto-reattach; .bat bypasses execution policy) - provision-wifi.sh: idempotent nmcli join over adb, venue WiFi baked as default - provision-fleet.sh: run the WiFi step per board during fleet bring-up - REQUIREMENTS.md: Windows 11 section (Docker+WSL2, native adb, USB driver), 'does adb see your board?' check, and correct the WiFi reality (board needs venue WiFi for the cloud brain; we pre-join it) Co-Authored-By: Claude Opus 4.8 <[email protected]>
7.1 KiB
APESS 2026 Workshop — Laptop Prerequisites
"Design the Agent Your Building Deserves" · 27 July · a 5-hour build session. Do these before you arrive so we spend the session building, not installing.
Companion docs:
WORKSHOP-FLOW.md(what you'll do) ·ONBOARDING.md(how the board comes up).
How it runs (so the prerequisites make sense)
Each team runs the whole platform on its own laptop — a small Docker stack (web + API) that comes up with one command. Your Arduino Uno Q plugs into that same laptop over USB. Everything on your laptop is localhost: the browser, the API, and the board all talk on your machine. Once the stack is up and the board is plugged in, it auto-connects to your team — no codes, no accounts. The one thing that leaves the box: the board reaches its AI cloud brain over the venue WiFi — but we pre-join each board to that network before you get it, so there's nothing for you to set up.
Most teams are on Windows 11 (a few Macs). Both work the same way; the only difference is the command you run to attach the board — see the Windows / macOS notes below.
So each team needs one "board laptop" with a few things pre-installed. Extra teammates just need a browser pointed at that laptop.
TL;DR
- Board laptop: install Docker, adb, and git; pull the workshop bundle ahead of time.
- Everyone else: a modern browser is enough.
- No accounts, no API keys — the AI cloud access is baked into the board app.
What the workshop provides (do NOT install)
- Arduino Uno Q (4 GB) board + USB-C cable — one per team.
- ADXL355 accelerometer(s) + wiring — the FabLab kit.
- Cloud AI access — baked into the board app. No Anthropic/Claude account needed.
- Boards pre-joined to the venue WiFi — the board uses it only to reach the AI cloud; you don't configure any network.
- The web app itself (you run it locally from the bundle below).
The team "board laptop" — pre-install these (large downloads, do them at home)
- Docker — Docker Desktop (macOS/Windows) or Docker Engine + Compose (Linux).
Verify:
docker run hello-worldsucceeds. - adb (Android platform-tools) — the USB bridge to the board.
Verify:
adb versionprints a version. (macOS:brew install android-platform-tools.) - git — to fetch the workshop bundle. Verify:
git --version. - ~10 GB free disk — Docker images (web + API) + the board's App Lab base image (~0.9 GB).
- The workshop bundle, pre-fetched so you're not downloading on the WiFi at 14:00:
(Also pre-pull the App Lab base image on the board — it's fetched on first Run.)
git clone <workshop-repo-url> # [instructor: final repo/bundle URL] cd <repo>/deploy/lan docker compose up -d --build # pre-build the images once, at home docker compose down # then stop until the day
On Windows 11 (most teams)
- Docker Desktop with the WSL2 backend (enable it in the installer).
docker run hello-world. - adb — download Android SDK platform-tools for Windows, unzip it, and add the folder to your
PATH (so
adb versionworks in a new terminal). Run adb on Windows itself — not inside WSL. - Git for Windows — gives you
git+curl(used by the stack). - Uno Q USB driver — plug the board in; Windows usually installs a driver automatically. It's
working when
adb deviceslists the board asdevice(see the check below). If it shows nothing orunauthorized, reinstall the driver / re-plug and accept any prompt on the board. - To attach the board you'll run
connect-board.bat(double-click) orconnect-board.ps1— both live indeploy\lan\.
On macOS (a few teams)
- Docker Desktop,
brew install android-platform-tools(adb),git. Attach with./deploy/lan/connect-board.sh.
First check: does adb see your board?
The #1 thing to get right up front. Plug the Uno Q in over USB and run:
adb devices
You want a line ending in device, e.g. 65301572 device. If it's empty, offline, or
unauthorized: re-plug, try a different USB port/cable, and on Windows reinstall the USB driver.
Get this working before the day — everything else assumes adb sees the board.
Everyone else on the team
- A current browser (Chrome/Edge recommended; Firefox works). That's it — you'll open the board laptop's local URL.
What you'll do on the day (no accounts, no claim codes)
- Bring the stack up:
cd deploy/lan && docker compose up -d→ openhttp://localhost:8090/. - Get the board app: in Team Registration, click Download the board app (served by your own
stack), then on the Uno Q: App Lab → Import an app → pick the zip → Run.
[instructor: confirm the App Lab access flow for the room] - Attach the board: plug the Uno Q into the board laptop over USB, then:
- Windows: double-click
deploy\lan\connect-board.bat(or run.\connect-board.ps1 -Watchto keep it auto-attaching on re-plug). - macOS: run
./deploy/lan/connect-board.sh(or--watch).
- Windows: double-click
- It just connects: type your team name and the board auto-binds to your team — no code. Unplug/replug is handled automatically; a Disconnect / Reconnect control is there if you need it.
- Build: walk Modules 1–3, submit your Agent Design Document.
Pre-flight self-check (before you travel)
- (Board laptop)
docker run hello-worldworks. - (Board laptop)
adb versionandgit --versionwork. - (Board laptop) Ran
docker compose up -d --buildonce (images built) and openedlocalhost:8090. - Laptop charged + charger packed (5-hour session).
- A current browser.
No accounts to create
- ❌ No Anthropic / Claude account or API key — the cloud key is baked into the board app.
- ❌ No claim codes — in this local USB setup the board auto-connects.
- ✅ Everything is localhost; nothing depends on the room WiFi.
Notes for the curious (why these specific tools)
- Docker runs the web + API stack in one command, identically on every laptop.
- adb carries the board over USB; the API (in a container) reaches it via
host.docker.internal. - The web runs on
:8090(not:8080) because:8080is the board's own port, forwarded over adb.
Instructor checklist (finalize before publishing to students)
- The workshop bundle URL (git repo or a downloadable archive) students clone/pull.
- Pre-built image distribution — consider publishing
apess-web/apess-apito a registry (or a USBdocker loadbundle) so teamsdocker compose upwithout a source build on the day. - Exact Arduino App Lab access on the Uno Q for the room (and whether it needs any login).
- Pre-seed the ~0.9 GB App Lab base image locally so 9 teams don't each pull it live.
- Decide whether
connect-board.sh --watchruns via a small launchd/systemd unit (hands-free re-plug).