Getting started with recipes
The promise in one sentence: one command-line tool drives a real MetaMask build, and then proves what it did. This is the first video in the series and the shortest path into everything else.
Video recording in progress
Same eight steps, same commands, same expected output — it is genuinely useful before the recording exists, which is why it is here rather than a "coming soon" page. Your progress is shared with How it works: tick a step in either place and it is ticked in both. How it works carries the longer explanations and the full "if it fails" notes for each step.
What the video covers
| Beat | What is on screen |
|---|---|
0:00 | The promise — one CLI drives the wallet and proves what happened. |
0:30 | Install into a clean checkout, then doctor. One failure gets fixed by following the error's own instruction — twenty seconds, no dwelling. |
1:15 | launch — the real app comes up under harness control. |
1:45 | actions, and the line that matters: you never guess capabilities, you discover them. Then two live calls — read the wallet state, then one UI action visibly moving the app. |
3:00 | The same steps as a recipe: run executes the graph and adds assertions. This is the jump from driving to proving. |
4:00 | Open the artifacts directory. summary.json, the trace, the screenshot. |
4:30 | Close on the cheatsheet — everything just done, on one page. |
Artifact you finish with: a green summary.json you produced yourself.
Follow along
-
Get the CLI
Install globally, confirm it resolved, then work from inside a product checkout.
$ npm i -g @deeeed/metamask-harness@latest $ mm-harness --version0.34.x — any 0.34 or newer -
Run doctor, follow what it tells you
Read-only readiness check. Each finding names the exact command that fixes it — including, often,
doctor --fixitself.$ mm-harness doctor $ mm-harness doctor --fixpass extension bridge present ready=true fixed=[runtime-context] failed=[] -
Launch the app
Platform auto-detects. Mobile needs an explicit target; core is headless and says so.
$ mm-harness launch # extension $ mm-harness launch ios # mobile -
Discover the vocabulary
The line to remember: you never guess capabilities, you discover them. This list is the capability boundary, not a sample of one.
$ mm-harness actions --categories $ mm-harness actions --category ui -
Drive it: read wallet state
One action through the real engine path. Reads first — they cannot break anything.
$ mm-harness call read_state -
Drive it: move the UI
Keep the app on screen. This is the beat where a terminal command visibly moves a real build.
$ mm-harness call navigate page=perps -
Prove it: run a recipe
The same operations composed into a graph with assertions.
--planvalidates first without touching anything.$ mm-harness run --list $ mm-harness run wallet.smoke --plan $ mm-harness run wallet.smoke --artifacts-dir ./first-recipe-artifacts -
Open the evidence
The closing shot of the video, and the reason for all of it. Start with
report.md, then the summary, then the trace when you want to know why.$ cat first-recipe-artifacts/report.md $ cat first-recipe-artifacts/summary.json