@@ -187,6 +187,28 @@ Managed by [mise](https://mise.jdx.dev/) — versions from `.mise.toml`. Always
187187Rust via rustup (` rust-toolchain.toml ` ), Node/pnpm/Go via mise. System packages (Tauri prereqs, WebKitGTK dev libs) via
188188apt.
189189
190+ ### Running commands via SSH (for agents)
191+
192+ ` mise activate ` doesn't work in non-interactive SSH one-liners. Use explicit PATH setup instead. Also, ` DISPLAY=:0 ` must
193+ be set — without it, ` @wdio/xvfb ` (bundled with ` @wdio/local-runner ` ) auto-wraps worker processes with ` xvfb-run ` , which
194+ breaks Node.js IPC channels (` Error: write EINVAL ` on ` process.send() ` ).
195+
196+ ** Always run ` pnpm install ` first** — the VM bind-mounts its own ` node_modules ` over the shared macOS ones, so they need
197+ to be kept in sync with the lockfile separately.
198+
199+ ``` bash
200+ # SSH one-liner setup (paste this prefix before any command)
201+ MISE_PATH=" /home/veszelovszki/.local/share/mise/installs"
202+ export PATH=" $MISE_PATH /node/25.6.0/bin:$MISE_PATH /pnpm/10.29.2:$MISE_PATH /go/1.25.7/bin:$PATH "
203+ export DISPLAY=:0
204+
205+ # Run E2E tests via SSH (full one-liner)
206+ ssh veszelovszki@192.168.1.97 ' MISE_PATH="/home/veszelovszki/.local/share/mise/installs" && export PATH="$MISE_PATH/node/25.6.0/bin:$MISE_PATH/pnpm/10.29.2:$MISE_PATH/go/1.25.7/bin:$PATH" && export DISPLAY=:0 && cd ~/cmdr && pnpm install && cd apps/desktop && pnpm test:e2e:linux:native'
207+ ```
208+
209+ If mise tool versions change (check ` .mise.toml ` ), update the paths above. Find installed paths with ` mise where node ` ,
210+ ` mise where pnpm ` , etc.
211+
190212### Common tasks
191213
192214``` bash
@@ -204,7 +226,8 @@ software-emulated GPU). Real Linux machines with a GPU don't need this.
204226- ** Shared folder not mounted** : ` sudo mount -a `
205227- ** node_modules bind mounts not active** : ` mountpoint -q ~/cmdr/node_modules || sudo mount -a `
206228- ** VM IP changed** : Check inside VM: ` ip addr show | grep 'inet ' | grep -v 127.0.0.1 `
207- - ** pnpm/node not found** : ` eval "$(mise activate bash)" `
229+ - ** pnpm/node not found** : ` eval "$(mise activate bash)" ` (interactive) or use the explicit PATH from "Running commands
230+ via SSH" above (non-interactive)
208231
209232## Files
210233
0 commit comments