Skip to content

Ecosystem

One workspace, three commands

They are registered together at activation and share a single committed registry, but each owns a distinct part of the tree. Knowing which command owns which directory is most of what there is to learn.

Who owns what

Kind of contentLives inIts own repoManaged by
Learning trackDev/Learn/<lang>one per languagelearn
Portfolio projectWorkspace/<lang>/<name>one per projectpolyforge
TemplateDev/Templates/<name>one per templateforge

All three are gitignored inside the PolyForge repo and restored on demand from polyforge.registry.toml.

The commands

polyforge

Workspace and toolchain management. Runs only inside a PolyForge workspace — it walks up the directory tree to find the root.

  • polyforge status
  • polyforge install
  • polyforge create LANG NAME
  • polyforge update
  • polyforge clean [--all]
  • polyforge doctor
  • polyforge activate
  • polyforge publish
  • polyforge get NAME|all
  • polyforge help
Full reference →

learn

A standalone command, registered alongside polyforge at activation. Owns everything under Dev/Learn/<lang>/.

  • learn init LANG
  • learn LANG TOPIC
  • learn LANG next TOPIC
  • learn LANG dayN TOPIC
  • learn next TOPIC
  • learn list LANG
  • learn publish LANG
  • learn get LANG|all
  • learn help
Full reference →

forge

Your personal template library. Each template is its own private GitHub repo under Dev/Templates/<name>/, flagged as a GitHub template repository.

  • forge new NAME "DESCRIPTION"
  • forge list
  • forge get NAME|all
  • forge remove NAME
  • forge help
Full reference →

Supported workspace areas

These ship with a Workspace/<lang>/ area. Anything mise can install can join them — seeadding a language.

  • Pythonpython, uv
  • Gogo
  • Webnode, bun, deno, pnpm
  • C++cmake, ninja, zig
  • Dartdart, flutter
  • Javajava