star.config.toml

Your configured repositories and their pins live in one small TOML file.

[repositories."jingus/starters"]
remote = "https://git.jingus.dev/jingus/starters"
commit = "ae3b1350575f2c9c7bf72e6d8f9e0a1b2c3d4e5f"

[repositories."star/starters"]
remote = "https://git.jingus.dev/star/starters"
commit = "7f2c9ab104de91cc3e5578aabbccddeeff001122"

Shape

  • Keys are namespaces — the repository’s identity (owner/name, or your --name override).
  • commit stores the full 40-character object id. Short hashes are for display; full ids make git fetch <sha> + rev-parse --verify reliable.
  • The file is serialized through a sorted map, so entries stay sorted and diffs stay stable no matter which command wrote them.

Location

star resolves the config path in this order:

  1. $STAR_CONFIG — tests, CI, power users
  2. the platform config dir, via the directories crate (~/.config/star/star.config.toml on Linux, ~/Library/Application Support/star/… on macOS)
  3. $HOME/.config/star/star.config.toml, if no platform dir could be resolved
  4. ./star.config.toml as a last resort

Generated configs? Use -f

star repo update accepts -f/--file to retarget that command to any file:

star repo update -f ./star.config.toml

First run

When no config exists at the resolved location, the command that needed it creates one — there is no separate star init:

  • interactive: prompt once — Include the default repository star/starters? (default yes), then write the config with it pinned.
  • non-interactive: include the default repository, print a note, never block a script.

The default repository (star/starters) is a pair of constants in star’s source and can be removed like any other repository.