sf init scaffolds a self-contained project on your machine. The CLI comes from PyPI — you do not
clone the platform repository to get it, and you do not clone it to use it.
That project is also one project in console terms: name in starforge.yaml is what groups
every run of every experiment in it.
Install the CLI
uv tool install is the recommended one. It puts sf in its own environment, so it cannot
collide with the packages of whatever project you happen to be standing in — and sf update
can upgrade it. Installed with pip into a system Python, sf update refuses and tells you to
reinstall with uv tool, because upgrading there could disturb other tools.
Verify:
sf update, which detects how it was installed and uses the right command.
Source lives in core/starforge/cli/.
Create a repository
common/, and configs/; after admission, the console injects a content-addressed Job Capsule (manifest, bootstrap, and PEX runner).
Project discovery
Commands that need a project (sf new / submit / ls / validate …) walk up from the current directory looking for starforge.yaml, the same way git finds a repository root.
sf login / logout / status are global and do not require a project.