Skip to content

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 status

polyforge 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 install

polyforge 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-shortener

polyforge update

Upgrade every tool to the latest version matching its constraint.

$ polyforge update

polyforge 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 --all

polyforge doctor

Health check the workspace.

Verifies mise is present and trusted, the wrapper is registered on PATH, and the config fragments parse.

$ polyforge doctor

polyforge 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 activate

polyforge 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 publish

polyforge 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-extraction

polyforge help

List every command.

$ polyforge help

Commands that mutate the workspace (install, update, clean, publish, get) exit non-zero on failure, so they compose in scripts:

Terminal window
polyforge install && polyforge get all