Since FerrFlow started planning packages and creating releases in parallel, two needs emerged: capping CPU use on small CI runners, and keeping benchmark numbers reproducible regardless of a machine's core count. The new global --jobs flag โ€” or the FERRFLOW_JOBS env var, with the flag taking precedence โ€” covers both.

  • Default (unset): all logical cores, exactly as before.
  • --jobs N: caps per-package planning to N threads, and bounds the release-creation HTTP pool by N too โ€” so --jobs 1 makes the whole run single-threaded.
# Pin to one thread: deterministic, light on a 2-core runner
ferrflow --jobs 1 release

# Or via the environment
FERRFLOW_JOBS=4 ferrflow release

It works with every command, since it's a global flag.