Files
work-app/CLAUDE.md
T
Vincent 72916d3c79 Tell the M1 agent how to browse: m1-browse, not the Chrome extension
The Claude browser extension cannot work on M1 — it links to a single
persistent interactive session, and the relay runs one-shot processes. It
drives a real visible Chrome over CDP instead, so manual intervention over
screen sharing still works and logins persist.
2026-09-03 19:44:19 +02:00

2.1 KiB

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 "<the message>" 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 <url>          # 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 <selector>
m1-browse type <selector> <text>
m1-browse eval <js>           # 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.