## This project lives on M1 All coding, browsing, testing and compiling for this project happens on the always-on **M1** server. First find out which side you are on — run once: `test -f ~/.config/claude-m1.env && echo "I am M1" || echo "I am the M5"`. **On M1 — you are the worker.** Work normally in this repo: read, edit, build, test and commit here. Ignore the relay notes below; they are for the other Mac. **On the M5 — this folder is a read-only git mirror.** Do not edit files here and do not run builds or tests here. - For **every** message about this project, run `m1-say ""` and show M1's reply. M1's agent does the work, on M1, and keeps going even when this Mac sleeps. You are the pipe. (Questions about the relay itself you may answer locally.) - To refresh this mirror with M1's latest work: `m1-back` — a git merge, never rsync, never an overwrite. Then `git log` / `git status` show what changed. - M1 is the git remote `m1`. If something truly must be committed from here, push it with `git push m1 main` — but prefer telling M1 to do it. ### Browsing and testing on M1 M1 has **no working Claude browser extension** — that extension links to one persistent interactive session and cannot attach to the relay's one-shot runs. Use `m1-browse` instead. It drives a **real, visible Chrome** on M1 over the DevTools protocol, so Vincent can screen-share in and click things himself when something needs doing by hand; that profile keeps its own logins. ``` m1-browse open # navigate, prints title + final URL m1-browse text [chars] # visible text of the current page m1-browse html [chars] # page HTML m1-browse screenshot [path] # PNG (default /tmp/m1-shot.png); add "full" for full page m1-browse click m1-browse type m1-browse eval # run JS in the page, prints the result m1-browse tabs # list open tabs ``` It starts Chrome itself if it is not running. To show Vincent a screenshot, take one and say where it is — the M5 side fetches and displays it.