CLI
Almost everything you can do in the QuickFlo web app, you can do from the terminal, and so can your agent: build, run, and debug workflows, read execution traces, and manage your org. The distance between describing what you want and watching it run gets very short.
Quick Start
Section titled “Quick Start”# 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 ./workflows
# 5. (Optional) Install the agent skill so Claude can drive the CLI for youquickflo skill installWith the skill installed, point your agent at the CLI in plain English:
claude /quickflo figure out what happened on the last few runs of workflow list-sync-webhookThat’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.
Agent skill
Section titled “Agent skill”Install the QuickFlo agent skill (the operating guide and workflow-authoring conventions for driving this CLI) into any agent harness. The guides ship embedded in the CLI, so installs need no repo checkout and no network:
quickflo skill install # Claude skill → ~/.claude/skills/quickfloquickflo skill install agents ~/.codex/AGENTS.md # Codex / agents.mdquickflo skill install mcp # print the MCP host-config snippet| Harness | What it writes | Loading |
|---|---|---|
claude (default) | SKILL.md + building-workflows.md in ~/.claude/skills/quickflo/ | lazy (description-gated) |
agents | AGENTS.md (Codex: ~/.codex/AGENTS.md, or repo root) | eager (always-on) |
mcp | prints the MCP host config | tools + on-demand resources |
For an MCP host (Claude Code, Claude Desktop, Cursor), prefer quickflo mcp — it runs a stdio server that serves these same guides as quickflo:// resources, so you get the how-to plus typed tools with no skill file.
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 substringValidate, run, observe
Section titled “Validate, run, observe”The author → run → observe → fix loop, without leaving the terminal.
workflows validate runs locally with zero network calls by default — instant feedback for AI agents and CI, no token needed. --strict adds a server-side schema check. Exits 0 on success, 3 on validation failure.
quickflo workflows validate ./my-wf.json # local, no networkcat ./my-wf.json | quickflo workflows validate --from-stdinquickflo workflows validate ./my-wf.json --strict -o abcd # + server schema checkquickflo workflows validate ./my-wf.json -j # JSON for CIRun a workflow manually and inspect what happened:
quickflo workflows run my-wf --input '{"x":1}' --mode sync # wait, print step table + outputquickflo workflows run my-wf --input-file ./payload.json --mode async # queue, print executionIdquickflo workflows run my-wf --env staging --input '{}' # pick the env for variable resolutionquickflo workflows run my-wf --input '{}' --timeout 30 # CLI-side timeout (sync); exits 124quickflo workflows run my-wf --input '{}' \ --save-trace ./trace.json --save-steps-to ./steps/ # persist trace + one file per step
quickflo workflows executions list --status failed --since 1h # find recent failuresquickflo workflows executions get <execution-id> # full trace metadata + step pathsquickflo workflows executions logs <execution-id> --step fetchUsers # one step's outputquickflo workflows executions logs <execution-id> --full --show-secretsquickflo workflows executions download <execution-id> --out ./trace.jsonquickflo workflows executions tail <execution-id> # follow a running executionquickflo workflows executions replay <execution-id> # re-run with the same inputDiscover step types while authoring:
quickflo workflows steps list # table of every step typequickflo workflows steps get http-request # input/output JSON schemas + examplePackages
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.mdOther resources
Section titled “Other resources”The CLI manages the rest of your org’s resources with the same list / get / create / pull / push shape. Run quickflo <noun> --help for the full flag set:
quickflo connections list # saved credentials; also: types, create, update, pull/push, testquickflo environments list # per-env variable bags; also: vars, set/unset, pull/pushquickflo triggers list # webhook/schedule/event/form entry points; org-wide by defaultquickflo data-stores list <table> # JSONB KV per org; also: tables, get/set, import/exportFilter 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:publicMCP server
Section titled “MCP server”quickflo mcp runs a stdio MCP server so an AI agent (Claude Code, Claude Desktop, Cursor) can build workflows with typed tools:
list_steps,get_step_schema,list_connections— introspect the catalogvalidate_workflow— the compiler loop (undefined/forward references, unknown filters/fields, missing connections); run after every editsave_workflow_draft— create or update a workflow as a draft (no triggers, no execution; the server validates on save)
It authenticates with your active CLI profile (quickflo auth login first) and is a thin client — all validation lives server-side. Add it to your MCP host config:
{ "mcpServers": { "quickflo": { "command": "quickflo", "args": ["mcp"], "env": { "QF_ORG": "abcd" } } }}Set QF_ORG to your org, or pass org per tool call.
Pipe-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'Non-interactive contract
Section titled “Non-interactive contract”Built so scripts and agents can depend on stable behavior:
- Auto-yes on confirm prompts when stdin is not a TTY (matches
gh,npm). Pass--yesexplicitly in scripts to make intent visible. -j/--jsonon every list/get/inspect command — JSON payload to stdout, progress to stderr.--quietsuppresses progress; errors still print.- JSON error envelope when
-jis passed: errors land on stderr as{"error":{"code":"…","message":"…","status":…}}. - Stable exit codes:
0ok,1user error,2server error,3validation,124timeout,130interrupted.
quickflo --helpquickflo workflows --helpquickflo workflows push --help