Skip to content

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 strips DYLD_* from subprocesses, so cairo only resolves in-process), zensical and coverage (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: basedpyright ships 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