Playground¶
The tool room, live in your browser. The editor below is a tasks.py
whose tool calls all go through toolroom's typed handles; the prompt is
fm — footman, toolroom's
host, which the handles detect and route through on every call. Python
(and both packages) load into the page via
Pyodide on first use — nothing is installed on
your machine, and nothing you type leaves it.
The browser sandbox, said plainly: it has no processes and one thread,
so every spawned child is simulated — it succeeds and its output
says [simulated] — and runs are sequential. Everything else is the
real thing: the flag translation, .argv building whole command lines
without running anything, taught errors, --json, --dry-run plans —
and fm test runs the real pytest, in-process through the handles,
right here in the page. The prompt completes too: press Tab
and the candidates come from footman's manifest walk, rebuilt from
whatever the editor says.
Press Run. The gate fails — one of the tests is wrong on purpose.
Read pytest's diff, fix fizzbuzz (or the test), and run it green.
Then try fm ship to watch .argv build a docker compose line
without a docker in sight, --dry-run lint --fix to see the exact
command a flag becomes, and deploy produ to read a taught error.