polyforge
Workspace and toolchain management.
The wrapper works only inside a PolyForge workspace — it walks up the directory tree to find the root, so any depth inside the repository is fine, and anywhere outside it is not.
polyforge status
Show every declared tool and its resolved version.
Read-only. Nothing is installed, downloaded or resolved from the network beyond what mise already knows. This is the safe command to run first on a new machine.
$ polyforge statuspolyforge install
Install the full declared toolchain.
The explicit counterpart to auto_install = false. Installs everything declared across .config/mise/conf.d/ and any mise.toml in scope.
$ polyforge installpolyforge create LANG NAME
Scaffold a new project at Workspace/<Lang>/<name>.
Uses the quick built-in starters. For your own curated skeletons, use the forge command instead.
$ polyforge create Python wall-extraction
$ polyforge create Go url-shortenerpolyforge update
Upgrade every tool to the latest version matching its constraint.
$ polyforge updatepolyforge clean [--all]
Remove .cache. With --all, also run mise implode.
--all is destructive: it removes mise itself along with every installed toolchain. Use it when you want a genuinely fresh machine, not to reclaim a little disk.
$ polyforge clean
$ polyforge clean --allpolyforge doctor
Health check the workspace.
Verifies mise is present and trusted, the wrapper is registered on PATH, and the config fragments parse.
$ polyforge doctorpolyforge activate
Re-run the trust handshake and shell registration.
Same work the one-shot initializer does. Run it if mise trust was reset or your shell profile was rebuilt.
$ polyforge activatepolyforge publish
Push the current project to GitHub and register it as a portfolio.
requires ghrun inside Workspace/<Lang>/<name>
Creates the repository, pushes, and writes a [portfolio.<name>] entry into polyforge.registry.toml with its language.
$ polyforge publishpolyforge get NAME|all
Restore registered portfolio projects into Workspace/<Lang>/.
Clones what is missing and git pulls what already exists. Needs only git — no GitHub CLI.
$ polyforge get all
$ polyforge get wall-extractionpolyforge help
List every command.
$ polyforge helpExit behaviour
Section titled “Exit behaviour”Commands that mutate the workspace (install, update, clean, publish,
get) exit non-zero on failure, so they compose in scripts:
polyforge install && polyforge get allSee also
Section titled “See also”learn— learning tracksforge— template librarypolyforge.registry.toml— whatpublishwrites