# Laptop + USB setup Use Claude Code on the laptop or Codex with local terminal access. Start it in the workspace and say `/chloe-os change my cassette colors` or simply describe a change. A Claude browser chat can discuss code but cannot reach the laptop's USB player. Tools: Node 20+, Git, unzip/zip, Android SDK platform-tools (`adb`), Java **17** for the game, Android SDK platforms **33 and 36**, build-tools **35.0.0 and 36.0.0**. Android Studio's SDK Manager can install the SDK packages; accept Android licenses with `sdkmanager --licenses`. Set `ANDROID_HOME` to that SDK and `JAVA_HOME` to Java 17. Add `$ANDROID_HOME/platform-tools` to PATH. On macOS, Homebrew packages `node`, `openjdk@17`, and `android-platform-tools` supply the first tools; SDK Manager supplies the rest. The scripts also discover the original setup's local `android-sdk`. First connect: use a data-capable USB cable, unlock the FiiO JM21. Settings → About device → tap Build number seven times. Developer options → USB debugging. Accept the laptop's RSA prompt on the player. `node developer/skill/chloe-os/scripts/chloe.mjs doctor` explains missing tools, no device, unauthorized devices and multiple players. It ignores Wi-Fi/network ADB devices. Recheck authorization if it changes. ## Existing app updates need the same private keys Public source deliberately contains no signing keys. The original setup laptop has `companion/chloe-local.keystore` for CHLOE//OS and `~/.android/debug.keystore` for both games. Miguel can transfer those existing files locally to the same paths on Chloe's laptop; make a backup of any debug key already there first. A local owner-key transfer ZIP is supplied separately on the player under `Documents/CHLOE-OS/Developer/PRIVATE-owner-keys.zip`, if prepared by the owner. It belongs only on her local laptops, never on chloeos.xyz or in Git. The included `scripts/keys.mjs inspect|import FILE.zip` checks the local transfer manifest and refuses to overwrite a different key. Use the import command rather than unpacking over existing files. The companion alias is `chloe` (development store password `chloe-local-build`); games use Android's debug alias/password. Those passwords are development conventions, not copies of the private key itself. A build with a newly generated key cannot update an installed app signed by the original one. The installer detects this before attempting an update and tells you what to transfer. Preserve her saves. New apps under a new `dev.chloe.creations.*` package can use the laptop's own debug key. Keep that key for their future updates. ## Backups and recovery `chloe.mjs backup` produces a timestamped local folder: all three installed APKs and supported game-save archives via `run-as`. Android limits another app's data; do not claim the companion's preferences or a non-debuggable game's saves were copied if they were not. The script records per-item success in `backup.json`. To copy the developer folder separately, use `node developer/skill/chloe-os/scripts/device.mjs pull /sdcard/Documents/CHLOE-OS/Developer ./device-developer-backup`. The launcher can export a `.lawnchairbackup` through Home settings → menu → Create backup; save it before changing the home layout. Existing launcher backups are in `Documents/CHLOE-OS`. To restore a game archive, first make a current backup, force-stop that package, inspect the archive paths, then stream the matching `run-as` archive back into that same package's private data. Do not swap a different app's archive. Restoring the launcher backup uses Lawnchair's UI and may ask to allow the music widget again.