Running the canvas via Dispatch (from your phone)¶
The macOS canvas is the one Outcrop piece that needs a real Mac to run. Everything is staged so that launching it is a single Dispatch task sent from the Claude mobile app to your Mac.
One-time setup (on the Mac)¶
- Claude desktop app installed and signed in (Dispatch picks up tasks from it).
- Xcode command line tools (
xcode-select --install), Rust (rustup.rs), Homebrew. - The repo cloned, e.g.
git clone https://github.com/jeffreyclegg/outcrop && cd outcrop(the default branch,main, is the right one).
Dispatch it¶
From the Claude mobile app, send a Dispatch task to your Mac:
In ~/outcrop (branch main), pull latest and run ./scripts/demo-canvas.sh — report any build errors; the canvas window staying open is success.
Or from a terminal on the Mac directly:
claude --bg "cd ~/outcrop && git pull && ./scripts/demo-canvas.sh"
scripts/demo-canvas.sh does the rest: installs the protoc plugins if
missing, generates the Swift gRPC clients from the contracts, copies the
fixture corpus to a scratch bundle, builds the engine binary, and launches
the canvas via swift run — the app spawns-or-adopts the shared engine
itself over a Unix socket (docs/ENGINE.md); no server to manage, no port.
What you should see¶
Two toolbar buttons (Add Query Card / Add Graph Card), a scenario picker, and
draggable cards on a pannable, zoomable canvas. Flip the scenario in the
picker and every card re-renders against the selected scenario — that's the
demo. Layout persists as the canvas record (canvases/default.md in the
open bundle).
Notes¶
- Dispatch runs on your machine; if the Mac is asleep or the desktop app isn't running, the task waits for it.
- Compile-verification of the Swift sources happens in CI (
Clientsworkflow, macOS job) — by the time you dispatch, the build should already be known-green. If the dispatch hits a build error anyway, paste it back into any Claude session with this repo and it can fix and push.
Troubleshooting (learned in the field)¶
- The canvas shows mock data / says it's running solo — ask the engine:
outcrop --root <bundle> engine status. A stale or wrong-version engine is retired withoutcrop --root <bundle> engine stop(death is verified by the file lock, so it's safe to re-run); relaunch the canvas and it starts a fresh engine itself. git pullrefuses with "divergent branches" — a Dispatch session left a local commit. Inspect it first (git show --stat HEAD); if it's demo debris,git reset --hard origin/<branch>; if it's real work,git pull --rebase.- "I don't see the new features" — you're looking at a stale app instance
or a stale checkout.
pkill -x OutcropCanvas, confirmgit log --oneline -1matches the remote tip, then re-run./scripts/demo-canvas.sh(rebuilds automatically).