Skip to main content
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:
Upgrade with sf update, which detects how it was installed and uses the right command. Source lives in core/starforge/cli/.

Create a repository

Layout:
The platform entrypoint is neither written into the project nor uploaded by the CLI. The CLI packages only the experiment, 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.

Next steps

sf init

Create a StarForge project