Skip to content

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 (Clients workflow, 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 with outcrop --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 pull refuses 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, confirm git log --oneline -1 matches the remote tip, then re-run ./scripts/demo-canvas.sh (rebuilds automatically).