Tools¶
Import a tool by name — from toolroom import git — and call it,
git.commit(…). No declaration needed: the bridge
translates keyword arguments into flags mechanically, and every tool on
your PATH already works. These pages document the stubs: what each
curated tool accepted at the version footman last read it from, with that
tool's own help text per flag.
Nothing here is a wrapper. The stubs are generated by fm tools.sync,
which asks the installed binaries what they take, and fm tools.audit
reports which tools have released a newer version since. A flag missing
from a stub still runs — every verb ends in **flags: Any, so a stub can
suggest but never forbid.
Where a flag defaults on, its documentation names the spelling that
turns it off, because that is the one thing the bridge cannot infer:
clean=off emits mkdocs build --dirty, not --no-clean.
The In-process column is a deliberate choice, not a capability dump.
Tasks run concurrently as threads, and a tool call is normally a subprocess —
isolated, trivially parallel. A Python tool with a [console_scripts] entry
point can run in footman's own process instead, skipping the spawn:
- default — footman prefers in-process.
mkdocs(macOS stripsDYLD_*from subprocesses, so cairo only resolves in-process),zensicalandcoverage(pure Python) qualify, and their entry points accept an argument list, so they stay parallel. - available — an entry point exists but running it in-process buys
nothing:
basedpyrightships a Python launcher that just spawns node, so footman subprocesses it anyway. - no — a Rust/Go/Node binary with no Python entry point; always a subprocess.
See the footman host page for how in-process tools stay parallel (and the one case that can't).
| Tool | Read from | In-process | Verbs |
|---|---|---|---|
basedpyright (docs) |
1.39.10 (Linux, Windows and macOS) | no | the tool itself |
bash (docs) |
hand-written | no | the tool itself |
build (docs) |
1.5.1 (Linux, Windows and macOS) | no | the tool itself |
bun (docs) |
1.4.0 (Linux, Windows and macOS) | no | add, build, install, remove, run, … (7 in all) |
claude (docs) |
2.1.238 (Linux, Windows and macOS) | no | agents, auth.login, auth.logout, auth.status, doctor, … (25 in all) |
cmake (docs) |
4.4.2 (Linux, Windows and macOS) | no | the tool itself |
cmd (docs) |
hand-written | no | the tool itself |
coverage (docs) |
7.15.4 (Linux, Windows and macOS) | default | annotate, combine, erase, html, json, … (8 in all) |
cspell (docs) |
10.0.1 (Linux, Windows and macOS) | no | check, lint, suggest, trace |
djlint (docs) |
1.44.2 (Linux, Windows and macOS) | no | the tool itself |
docker (docs) |
29.7.2 (Linux, Windows and macOS) | no | build, compose.build, compose.down, compose.exec, compose.logs, … (15 in all) |
eclint (docs) |
0.6.0-wk.5 (Linux, Windows and macOS) | no | the tool itself |
fish (docs) |
hand-written | no | the tool itself |
gh (docs) |
2.98.0 (Linux, Windows and macOS) | no | api, auth.login, auth.status, issue.create, issue.list, … (24 in all) |
git (docs) |
2.55.0 (Linux and macOS) | no | add, branch, checkout, clone, commit, … (19 in all) |
git_changelog (docs) |
2.9.7 (Linux, Windows and macOS) | no | the tool itself |
git_cliff (docs) |
2.13.1 (Linux, Windows and macOS) | no | the tool itself |
markdownlint (docs) |
0.23.2 (Linux, Windows and macOS) | no | the tool itself |
mkdocs (docs) |
1.6.1 (Linux, Windows and macOS) | default | build, gh_deploy, new, serve |
mypy (docs) |
2.3.1 (Linux, Windows and macOS) | no | the tool itself |
ninja (docs) |
1.13.0 (Linux, Windows and macOS) | no | the tool itself |
nu (docs) |
hand-written | no | the tool itself |
prek (docs) |
0.4.14 (Linux, Windows and macOS) | no | autoupdate, clean, install, run, uninstall |
pwsh (docs) |
hand-written | no | the tool itself |
pytest (docs) |
9.1.1 (Linux, Windows and macOS) | default | the tool itself |
python (docs) |
3.14.7 (Linux and macOS) | no | the tool itself |
ruff (docs) |
0.16.4 (Linux, Windows and macOS) | no | check, clean, format |
ruff_format (docs) |
0.16.4 (Linux, Windows and macOS) | no | the tool itself |
ssh (docs) |
10.5p1 (Linux and macOS) | no | the tool itself |
ssh_keygen (docs) |
10.5p1 (Linux and macOS) | no | the tool itself |
ssh_keyscan (docs) |
10.5p1 (Linux and macOS) | no | the tool itself |
tea (docs) |
0.15.1 (Linux, Windows and macOS) | no | api, branches.list, clone, comments.add, comments.list, … (25 in all) |
twine (docs) |
7.0.0 (Linux, Windows and macOS) | no | check, upload |
ty (docs) |
0.0.73 (Linux, Windows and macOS) | no | check |
uv (docs) |
0.12.5 (Linux, Windows and macOS) | no | add, build, export, lock, pip.compile, … (18 in all) |
zensical (docs) |
0.0.56 (Linux, Windows and macOS) | default | build, new, serve |
zsh (docs) |
hand-written | no | the tool itself |