CLI
The QuickFlo CLI lets you push and pull workflows, install and publish packages, and manage your org from the terminal. Useful for version-controlling workflow JSON, scripting bulk operations, and wiring QuickFlo into CI pipelines.
# 1. Installcurl -fsSL https://cdn.quickflo.app/packages/cli/install.sh | sh
# 2. Mint an access token in the QuickFlo web UI:# Settings → Access Tokens → New token## 3. Sign in by pasting that tokenquickflo auth login
# 4. Use itquickflo workflows listquickflo workflows pull -d ./workflowsquickflo workflows push -d ./workflowsThat’s the whole flow. Everything below is detail.
Install
Section titled “Install”Pre-built binary (recommended)
Section titled “Pre-built binary (recommended)”curl -fsSL https://cdn.quickflo.app/packages/cli/install.sh | shDrops quickflo in ~/.local/bin. Detects your OS + arch automatically. Supports macOS (Intel and Apple Silicon), Linux (x86_64 and arm64), and Windows (x86_64).
Pin a version:
curl -fsSL https://cdn.quickflo.app/packages/cli/install.sh | sh -s v1.0.2Install elsewhere:
curl -fsSL https://cdn.quickflo.app/packages/cli/install.sh | INSTALL_DIR=/usr/local/bin shVia JSR (requires Deno 2+)
Section titled “Via JSR (requires Deno 2+)”deno install --global --force --name quickflo \ --allow-net --allow-read --allow-env --allow-write \ jsr:@quickflo/cliDrops it in ~/.deno/bin — make sure that’s on your PATH.
The CLI authenticates with Personal Access Tokens, organized into named profiles so you can keep tokens for multiple orgs or deployments and switch between them with one command.
Mint a token in the web UI at Settings → Access Tokens, then:
quickflo auth login # paste token, saves under a profile named after the orgquickflo auth list # show saved profiles, * marks activequickflo auth use <name> # switch active profilequickflo auth status # verify the active token still worksquickflo auth logout # delete the active profileProfiles live at ~/.config/quickflo/credentials.json (mode 0600). Each profile bundles its api URL, token, and cached org info, so switching profiles switches everything in one move.
Env-based auth (for CI)
Section titled “Env-based auth (for CI)”export QF_TOKEN=qfp_… # bypasses profiles entirelyquickflo workflows listResolution priority: QF_TOKEN env → QF_PROFILE env → active profile → fail with hint.
Common commands
Section titled “Common commands”Workflows
Section titled “Workflows”quickflo workflows list # table viewquickflo workflows list -j | jq # JSON for scriptingquickflo workflows list --where name:re:'^Free' # regex filter
quickflo workflows get abcd # auto-detect (UUID, SUID, or name)quickflo workflows get abcd > my-workflow.json # save pushable shape
quickflo workflows push -d ./workflows # bulk upsert from a directoryquickflo workflows push -d ./workflows -w # + create webhook triggersquickflo workflows push --dry-run -d ./workflows
quickflo workflows pull -d ./workflows # download all to ./workflowsquickflo workflows pull -n 'Free Tool' -d ./free # filter by name substringPackages
Section titled “Packages”quickflo packages list # what your org has publishedquickflo packages list --installed # what's installed into your org
quickflo packages install @acme/onboarding # canonical addressquickflo packages install qfi_AbC123… # unlisted-install tokenquickflo packages install ./pkg.qfpkg.zip # local file
quickflo packages publish my-pkg \ --version 1.0.0 \ --root workflow:abc123 \ --readme ./README.mdFilter DSL
Section titled “Filter DSL”--where <field>:<op>:<value> is available on every list and pull command. Operators: eq, ne, re (regex), gt, gte, lt, lte, in, nin, like, ilike.
quickflo workflows list --where name:re:Free --where createdAt:gt:2026-01-01quickflo packages list --where visibility:eq:publicPipe-friendly output
Section titled “Pipe-friendly output”Stdout is the payload; diagnostics go to stderr. Redirect freely:
quickflo workflows get abcd > workflow.jsonquickflo workflows list -j | jq '.[].name'quickflo --helpquickflo workflows --helpquickflo workflows push --help