Everything you need to move your project faster
Install the latest release (macOS/Linux):
curl -fsSL https://myflow.sh/install.sh | sh
# or:
curl -fsSL https://raw.githubusercontent.com/nikivdev/flow/main/install.sh | shThen run f --version and f doctor.
The installer verifies SHA-256 checksums when available. If you are installing a legacy release
that doesn't ship checksums.txt, it will warn and continue (GitHub download only). To bypass
verification explicitly (not recommended), set FLOW_INSTALL_INSECURE=1.
Upgrade to the latest release:
f upgradeUpgrade to the latest canary build:
f upgrade --canarySwitch back to stable:
f upgrade --stableIf you fork Flow (or publish releases under a different repo), set:
FLOW_UPGRADE_REPO=owner/repoFLOW_GITHUB_TOKEN(orGITHUB_TOKEN/GH_TOKEN) to avoid GitHub API rate limits
If you are upgrading to a very old tag that doesn't ship checksums.txt, you can force bypassing
checksum verification with FLOW_UPGRADE_INSECURE=1 (not recommended).
Release artifacts are built for:
- macOS:
arm64,x86_64 - Linux (glibc):
arm64,x86_64
The GitHub Actions release workflow can code-sign macOS binaries if these repository secrets are configured:
MACOS_SIGN_P12_B64: base64-encoded.p12certificateMACOS_SIGN_P12_PASSWORD: password for the.p12MACOS_SIGN_IDENTITY: signing identity (e.g.Developer ID Application: ... (TEAMID))
Flow can store these values in the Flow personal env store and sync them to GitHub:
f release signing status
f release signing store --p12 /path/to/cert.p12 --p12-password '...' --identity 'Developer ID Application: ... (TEAMID)'
f release signing syncNote: Apple provides a .cer download, but CI signing needs a .p12 that includes the private key.
Export the "Developer ID Application: ..." identity as .p12 from Keychain Access.
Notarization is optional for a CLI distributed via curl | sh (downloads via curl
typically do not set the quarantine attribute), but can be added later if desired.
Stable releases are cut by pushing a git tag that starts with v:
- Bump version in
Cargo.toml - Push the commit to
main - Create + push tag:
vX.Y.Z(this triggers.github/workflows/release.yml)
Canary releases are published automatically on every push to main via
.github/workflows/canary.yml (GitHub release tag: canary).
If you want a local dev build that uses the Jazz/Groove crates from a local checkout, use the macOS installer script:
git clone https://github.com/nikivdev/flow.git
cd flow
./scripts/install-macos-dev.shThis script will:
- Install
fnm+ Node (if missing) - Install
fzf(used byffor fuzzy selection) - Install Rust (if missing)
- Clone/update Flow + Jazz under
~/code/org/1f(if Jazz is accessible) - Patch Cargo to use local Groove crates
- Build Flow and symlink
f/flow(andlinif present) into~/.local/bin - Fallback to a release install if Jazz is not accessible
Overrides:
FLOW_DEV_ROOTto change the base directory (default~/code/org/1f)FLOW_REPO_URL/FLOW_JAZZ_URLto use forksFLOW_BIN_DIRto change where binaries are linkedFLOW_GITHUB_TOKEN(orGITHUB_TOKEN) if a repo is privateFLOW_GIT_SSH=1to use SSH URLs (requires SSH key access)FLOW_JAZZ_OPTIONAL=0to require Jazz access (otherwise it falls back to release)- If Jazz is not accessible, the installer tries to use a local dist tarball from
./dist. - If there is no local dist tarball and no public release, the installer will fail and you need access to the private repo or a published release.
- If GitHub SSH auth fails, the installer sets
FLOW_FORCE_HTTPS=1sof repos cloneuses HTTPS by default.
If a private repo clone fails, the installer will run:
./scripts/setup-github-ssh.shThat script prints (and copies) a single-line public key that starts with
ssh-ed25519. Paste that exact line into GitHub → Settings → SSH and GPG keys
→ New SSH key (Key type: Authentication).
With flow, run f setup, then f will search through list of tasks.
Running f deploy will compile and put new version of flow into your path (so its easy to make flow work for you).
For available features, see docs or feed f --help to AI.
Projects run on flow, including flow itself.
Use AI & flow. All meaningful issues and PRs will be merged in. Thank you.