Three changes to cut deploy time: 1. deploy.sh: Pi and VM deploy concurrently (wall time = max, not sum) 2. deploy.sh: Build cache capped at 2GB instead of nuked after 24h, so pnpm install layer is reused between deploys 3. Dockerfile: runtime stage uses --prod (skip devDeps). Moved tsx from devDependencies to dependencies since it's used in CMD.