Recipes
Everyday workflows: dev servers, syncing, many phones.
Short, copy-pasteable workflows for using your phone as a dev machine. Each assumes you've paired a phone called pixel. With only one phone plugged in, you can drop the name.
Run a web app on the phone, open it on your laptop
Start the dev server on the phone, then forward its port.
# 1. on your computer: open a shell on the phone horus ssh pixel # 2. now on the phone: start the app cd /workspace/projects/my-app npm install npm run dev
Note the port it prints (often 3000 or 5173). In a second terminal window on your computer:
horus forward pixel 3000
http://localhost:3000 → pixel port 3000 (until the phone is unplugged)
Open http://localhost:3000 in your laptop's browser. On the phone itself, you can also tap the localhost link in a Horus terminal.
Drive a coding agent from your laptop keyboard
A real keyboard and a big screen, with the agent running on the phone.
horus ssh pixel cd /workspace/projects/my-app claude
The first run installs the agent into your home folder on the phone (a minute or two), then starts it. That copy is separate from the one the app's tile uses, so you may need to sign in once more. Works the same with codex and opencode.
Edit on your laptop, run on the phone
Keep a folder on the phone matching one on your computer. Run it again whenever you want to send changes.
horus sync ./my-app/ pixel:/workspace/projects/my-app/ horus ssh pixel -- "cd /workspace/projects/my-app && npm test"
Put quotes around a command that uses && or |. Otherwise your computer's shell handles those parts instead of the phone.
Get results back
# one file horus cp pixel:/workspace/projects/my-app/report.html . # a whole folder horus cp -r pixel:/workspace/projects/my-app/dist ./dist-from-phone
Many phones at once
Pair each phone once with its own name, like horus pair SERIAL --name p1. Then treat them as a small fleet:
# who's here? horus devices # update every phone's copy of a project horus exec --all -- git -C /workspace/projects/app pull # run the test suite everywhere at once horus exec --all -- "cd /workspace/projects/app && npm test" # check battery and temperature on each horus status p1 horus status p2
p1 | 42 passing p2 | 42 passing
Jobs that should outlive the connection
When you close horus ssh or unplug the cable, commands started in that shell are usually stopped too. For long jobs, start them in the background and send their output to a file:
horus ssh pixel -- "cd /workspace/projects/app && nohup npm run build > build.log 2>&1 &" # later horus ssh pixel -- tail -n 20 /workspace/projects/app/build.log