Getting started & command reference
The Flicker CLI
One static binary drives your whole stack — deploys, environment and secrets, databases, copy-on-write branches, Tickets, and project memory. The same commands run on your laptop and in CI, every grammar is flicker <noun> <verb> <name>, and every create or deploy is idempotent and exits non-zero on failure — so a pipeline never leaks a preview database, hides a broken step, or loses the current task contract.
This page is the quick tour. For the full developer guide — getting started, the secrets model, deploys, dependencies, volumes, and an exhaustive command reference — see the documentation .
Install
The flicker CLI is a single static binary — no runtime, no dependencies. Drop it on your PATH and verify it:
The installer detects your platform. Direct downloads: macOS (Apple silicon, Intel), Linux (x86-64, arm64), and Windows. A Homebrew tap is planned.
Authenticate
Mint an API token in the web UI under Settings → API Keys (the plaintext is shown once). The token authenticates every call and pins which organization you act as.
In CI, set FLICKER_TOKEN as an env var instead — it takes priority over the stored file.
Quickstart
From zero to a deployed app and a forked database in five commands:
Context: flicker.toml
Every command needs to know which org and database it acts on. Org is implicit in your token; database is named per call or set as a default. Resolution order (earlier wins):
- --org / --database flag
- ./flicker.toml in the current directory
- FLICKER_ORG / FLICKER_PROJECT env vars
- ~/.config/flicker/config.toml (global default)
Commit flicker.toml to the repo so the whole team and CI share one context without remembering flags:
Databases & branches
A database is an isolated Postgres instance with a main branch. Branches are copy-on-write clones that come up in seconds and share storage until they diverge — the killer use case is a database per pull request. Protected branches (main by default) can't be deleted or reset.
branch create is idempotent on the name — re-running returns the existing branch instead of erroring.
Deploy an app
Point Flicker at a Dockerfile or a prebuilt image. Two modes, one command — both converge on the same rolling cutover: the new version only takes traffic once it's up, so a failed release leaves the old version serving:
Manifest mode reads [app] (plus optional [build] and [config]) from flicker.toml — reproducible and reviewable in a PR:
Secret $refs resolve from the app's bound environment — set the values with flicker secrets set STRIPE_KEY=… --environment production, never in flicker.toml.
Environments & secrets
Secrets live in named, org-level environments (production, preview/pr-42, dev/giovanni) — not on individual apps. Apps bind to one; every deploy resolves it into an immutable bundle. secrets set is one versioned change; values are never echoed back.
secrets get is the one deliberate value read — governed and access-logged; restricted secrets never return a value to anyone. The full model (inheritance, managed vs user secrets, bundles) is in the docs.
Read the environments & secrets guidePreview environments in CI
branch ensure / branch destroy provision or tear down a whole preview for a git ref in one idempotent call — fork the database off the base, build the app from that ref, and wire up its env. Re-running on each push redeploys the same branch.
TTL
--ttl 2h auto-expires the fork even if CI crashes.
Idempotency
Re-running create returns the existing branch, never a duplicate.
Labels
--label pr=1234 tags forks so you can find them later.
Tickets & memory
Flicker also includes an AI-native work ledger under each project. ticket commands manage recursive work items, append-only documents, and project memory without depending on chat history.
Workflow
Tickets use four canonical states and named transitions only: backlog, selected_for_dev, in_progress, done.
Evidence
Current document heads are current truth; older versions and events remain historical evidence.
Agents
Use local markdown checkout plus first-party skills like flicker-plan and flicker-implement.
The object model
The CLI grammar is always flicker <noun> <verb> <name>. The nouns nest left to right:
- Organization
- The tenant boundary. Every resource belongs to one; your API token pins which org you act as.
- Project
- The umbrella over databases, apps, environments, secrets, and tickets.
- Database
- An isolated Postgres instance with a main branch and any number of forks.
- Branch
- A copy-on-write clone of a parent branch. Comes up in seconds; its connection endpoint stays constant across renames.
- Environment
- A named, org-level bundle of governed secrets (production, preview/pr-42, dev/<user>) that apps and deploys resolve.
- App
- A container running over HTTPS, deployed from an image, a git repo, or your local working dir.
- Ticket
- A recursive work item under a project with canonical workflow state, documents, events, and searchable memory.