CLI Reference
Complete reference for all jinflow commands, flags, and arguments.
This is the exhaustive reference. For a quick overview, see the Cheatsheet.
Aliases
Section titled “Aliases”| Alias | Command |
|---|---|
jin | jinflow |
m | make |
l | ls |
u | us |
s | status |
e | extract |
v | evolve |
f, x, flow | explore |
snap | snapshot |
Navigate
Section titled “Navigate”jinflow us
Section titled “jinflow us”Show or set jinflow configuration. Settings persist in ~/.jinflow/config.yml.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | — | Set current tenant (pack-qualified: millesime.domaine_zufferey). Also accepts --tenant for backwards compatibility. |
--live-root | No | string | — | Set the live root directory |
--api-key | No | string | — | Set Anthropic API key (stored in ~/.jinflow/secrets.yml) |
--model | No | string | — | Set AI model for evolve (e.g. claude-sonnet-4-6) |
--dlz | No | string | — | Set DLZ root directory (data landing zone) |
--pack-root | No | string | — | Set pack root directory (domain pack repos) |
--r2-account-id | No | string | — | Set Cloudflare R2 account ID (stored in ~/.jinflow/secrets.yml) |
--r2-key | No | string | — | Set R2 access key ID (stored in ~/.jinflow/secrets.yml) |
--r2-secret | No | string | — | Set R2 secret access key (stored in ~/.jinflow/secrets.yml) |
--r2-bucket | No | string | — | Set R2 bucket name (stored in ~/.jinflow/secrets.yml) |
Without arguments, shows current config with provenance (where each value comes from).
Examples:
jinflow us # show current configjinflow us millesime.domaine_zufferey # set active tenantjinflow us --live-root ~/my-live # set live rootjinflow us --api-key sk-ant-... # set AI credentialsjinflow us --r2-account-id ACCT --r2-key KEY --r2-secret SECRETjinflow ls
Section titled “jinflow ls”List packs and tenants in the live root. Shows tenant name, KLS size, snapshot count, source system, and CSV count. The current tenant is marked with *.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--snapshots | No | string (optional) | — | List KLS snapshots. Pass a tenant ID or omit for current tenant. |
Examples:
jinflow lsjinflow ls --snapshotsjinflow ls --snapshots millesime.domaine_zuffereyjinflow pick
Section titled “jinflow pick”Interactive tenant picker — list all tenants, pick one by number. The selected tenant becomes the default (same as jinflow us pack.tenant).
No flags.
jinflow stat
Section titled “jinflow stat”Show KLS data statistics and run health checks for a tenant. Queries gold layer counts, analytics pyramid (signals, theses, verdicts), SMEbits, and taxonomies. Checks for anomalies: empty tables, orphaned memberships, low validity, missing metadata.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified). Also accepts --tenant for backwards compatibility. |
jinflow scripts
Section titled “jinflow scripts”Show script resolution for a tenant — which file wins at each layer. Resolution order: tenant AFS, then pack, then engine.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified: millesime.domaine_zufferey). Also accepts --tenant for backwards compatibility. |
jinflow status
Section titled “jinflow status”Three-party drift detection across AFS (tenant instance), DPH (domain pack), and the jinflow engine. Shows git status, uncommitted changes, ahead/behind commits, and pack-to-tenant content drift with conflicts.
Without a target: environment summary and live instance listing. With a target: full three-party drift report.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | — | Tenant for three-party drift (pack.tenant). Also accepts --tenant for backwards compatibility. |
--afs | No | string | current repo | Path to AFS |
Lifecycle
Section titled “Lifecycle”jinflow init
Section titled “jinflow init”Create a tenant AFS instance from a domain pack (starter kit), or join an existing tenant via --clone.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | — | Pack-qualified tenant to create (e.g. millesime.domaine_new) |
--clone | No | string | — | Git URL to clone an existing tenant AFS (join a team) |
--dlzroot | No | string | — | DLZ repo root (resolves: dlzroot/pack/tenant/system/csv) |
--dlztenant | No | string | — | DLZ tenant dir (resolves: dlztenant/system/csv; derives dlzroot) |
--source-system | No | string | auto-discover | Source system override (default: auto-discover from DLZ) |
--display-name | No | string | — | Human-readable tenant name |
Examples:
jinflow init millesime.domaine_newjinflow init millesime.domaine_new --dlzroot ~/jinflow-dlzjinflow init --clone https://github.com/org/afs-millesime-domaine_zufferey.gitjinflow clone
Section titled “jinflow clone”Copy an existing tenant AFS instance. The clone name becomes a postfix: domaine_zufferey + audit becomes domaine_zufferey_audit. By default, the clone shares DLZ data with the source tenant.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
source (positional) | Yes | string | — | Source tenant (e.g. millesime.domaine_zufferey). Also accepts --source for backwards compatibility. |
--name | Yes | string | — | Clone postfix (e.g. audit becomes domaine_zufferey_audit) |
--display-name | No | string | — | Human-readable name for the clone |
--no-share-dlz | No | flag | false | Don’t share DLZ data with source (independent clone) |
Examples:
jinflow clone millesime.domaine_zufferey --name auditjinflow clone millesime.domaine_zufferey --name q1reviewjinflow clone millesime.domaine_zufferey --name sandbox --no-share-dlzjinflow afs update
Section titled “jinflow afs update”Sync a live tenant AFS with the latest domain pack content using three-way merge. Dry run by default.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant to update. Also accepts --tenant for backwards compatibility. |
--all | No | flag | false | Update all tenants across all packs |
--do-it | No | flag | false | Actually apply changes (default: dry run) |
--pack | No | flag | false | Write tenant-specific artifacts back to the pack (requires --do-it) |
--force | No | flag | false | Force-overwrite conflicts (pack wins) |
Examples:
jinflow afs update # dry run, active tenantjinflow afs update szo --do-it # apply three-way mergejinflow afs update --all # dry run, all tenantsjinflow afs update --do-it --force # pack wins on conflictsjinflow afs update szo --do-it --pack # apply + write back to packjinflow afs reset
Section titled “jinflow afs reset”Hard-reset a tenant AFS to match the pack exactly. Removes tenant-specific files in managed directories that don’t exist in the pack. Preserves tenant/ and jinflow.yml. Dry run by default.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant to reset. Also accepts --tenant for backwards compatibility. |
--do-it | No | flag | false | Actually apply changes (default: dry run) |
jinflow afs remote
Section titled “jinflow afs remote”Show or set the git remote URL for a tenant AFS.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified or bare). Also accepts --tenant for backwards compatibility. |
url (positional) | No | string | — | Git remote URL to set (omit to show current) |
jinflow afs status
Section titled “jinflow afs status”Show AFS repo status, tags, and recent commits.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified or bare). Also accepts --tenant for backwards compatibility. |
jinflow afs log
Section titled “jinflow afs log”Show build logbook / commit history.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified or bare). Also accepts --tenant for backwards compatibility. |
-n, --number | No | int | 20 | Number of commits to show |
jinflow afs pull
Section titled “jinflow afs pull”Pull latest AFS state from remote.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified or bare). Also accepts --tenant for backwards compatibility. |
jinflow afs push
Section titled “jinflow afs push”Commit changes and push to remote.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack-qualified or bare). Also accepts --tenant for backwards compatibility. |
-m, --message | No | string | auto-generated | Commit message |
jinflow afs pp
Section titled “jinflow afs pp”Pull then push (sync with remote). Equivalent to jinflow afs pull followed by jinflow afs push.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant |
-m, --message | No | string | auto-generated | Commit message |
jinflow afs diff
Section titled “jinflow afs diff”Show changes between local AFS and remote (incoming and outgoing commits, grouped by artifact type).
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant |
jinflow afs branch
Section titled “jinflow afs branch”List, create, or delete AFS branches.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
name (positional) | No | string | — | Branch name to create (omit to list) |
-d | No | flag | false | Delete the named branch |
jinflow afs checkout
Section titled “jinflow afs checkout”Switch AFS to a different branch.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
branch (positional) | Yes | string | — | Branch to switch to |
jinflow afs merge
Section titled “jinflow afs merge”Merge a branch into the current branch.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
branch (positional) | Yes | string | — | Branch to merge |
jinflow make
Section titled “jinflow make”Deterministic build pipeline: enrich, compile, dbt build, metadata, reports. Produces a KLS (DuckDB) file in the live root.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack.tenant) or pack name (millesime or millesime.* for all tenants in pack). Also accepts --tenant for backwards compatibility. |
--afs | No | string | current repo | Path to AFS |
--all | No | flag | false | Build all tenants across all packs |
--clean | No | flag | false | Clean rebuild — clear intermediaries, run all phases |
--snapshot | No | string (optional) | — | Create immutable snapshot. Auto-tag (YYYYMMDD-HHMM) if no name given. |
--extract | No | flag | false | Run XLSX-to-CSV extraction before building (implies --sync) |
--sync | No | flag | false | Sync CSVs from DLZ to raw/ before building |
--prune | No | flag | false | Remove files from raw/ no longer in DLZ (use with --sync) |
--skip-enrich | No | flag | false | Skip CSV enrichment |
--skip-validate | No | flag | false | Skip CSV schema validation |
--metadata-only | No | flag | false | Only rebake metadata (logo, branding, about) — skip all build phases |
--no-deps | No | flag | false | Skip dbt deps even if dbt_packages/ is missing |
--skip-extract | No | flag | false | Skip extraction phase (Phase 0) |
--extract-only | No | flag | false | Run extraction only, skip build |
--pull | No | flag | false | Pull AFS before building |
--purge | No | flag | false | Purge orphaned build artifacts |
--branch | No | string | — | Build on a specific AFS branch |
-m, --message | No | string | — | AFS commit message |
--continue-on-error | No | flag | false | Don’t fail-fast; collect all errors |
--quiet | No | flag | false | Suppress subprocess output |
Examples:
jinflow make # full build, active tenantjinflow make millesime.domaine_zufferey # build specific tenantjinflow make millesime --clean # clean rebuild, all tenants in packjinflow make --extract # extract XLSX + buildjinflow make --sync # sync CSVs from DLZ + buildjinflow make --snapshot # build + freeze (auto-tag)jinflow make --snapshot post-audit # build + freeze (named tag)jinflow make --skip-enrich --skip-validate # recompile + rebuild onlyjinflow make --quiet --continue-on-error # CI modejinflow extract
Section titled “jinflow extract”Inspection command — shows the extraction surface declared in pipeline.yml. Does NOT run extraction. Use jinflow make --extract to extract.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
entry_id (positional) | No | string | — | Filter to one specific entry by ID |
--afs | No | string | current repo | Path to AFS |
--tenant | No | string | active tenant | Tenant |
--check | No | flag | false | Verify structure contracts (exit 1 on violation) |
--contract | No | flag | false | Show delivery specification (config only) |
--verbose | No | flag | false | Full detail: hashes, sizes, mtimes |
jinflow generate
Section titled “jinflow generate”Generate synthetic data into the DLZ. Runs the generate script configured in pipeline.yml. Extra arguments after -- are forwarded to the script.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack.tenant). Also accepts --tenant for backwards compatibility. |
--afs | No | string | current repo | Path to AFS |
--continue-on-error | No | flag | false | Don’t fail-fast; collect all errors |
--quiet | No | flag | false | Suppress subprocess output |
jinflow snapshot
Section titled “jinflow snapshot”Freeze the current working KLS into an immutable, stamped snapshot. No build is triggered — just copy and stamp.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack.tenant). Also accepts --tenant for backwards compatibility. |
tag | No | string | auto YYYYMMDD-HHMM | Snapshot tag (second positional, or via --tag) |
--afs | No | string | current repo | Path to AFS |
Explore
Section titled “Explore”jinflow explore
Section titled “jinflow explore”Launch the Explorer web app on a KLS.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant to explore (e.g. millesime.domaine_zufferey). Also accepts --tenant for backwards compatibility. |
--afs | No | string | current repo | Path to AFS |
--db | No | string | auto-discover | Path to KLS DuckDB (overrides auto-discovery) |
--snapshot | No | string | — | Open a specific KLS snapshot by tag name |
--port | No | int | 4000 | Server port |
--docker | No | flag | false | Run Explorer in Docker (image must be pre-built) |
--cloud | No | flag | false | Use R2 cloud KLS store (requires R2 credentials) |
--no-open | No | flag | false | Don’t open browser automatically |
--smoke-test | No | flag | false | Start server, hit all pages, report results, shut down |
Examples:
jinflow explore # active tenant, port 4000jinflow explore millesime.domaine_zufferey # specific tenantjinflow explore --db /path/to/kls.duckdb # explicit KLSjinflow explore --snapshot post-audit # open a snapshotjinflow explore --port 8080 --no-open # custom port, no browserjinflow explore --docker # run in Dockerjinflow explore --cloud # serve from R2jinflow evolve
Section titled “jinflow evolve”AI-assisted research and improvement REPL. Opens an interactive shell connected to the KLS and AFS, combining local SQL queries with Claude AI analysis.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Default tenant for queries. Also accepts --tenant for backwards compatibility. |
--afs | No | string | current repo | Path to AFS |
--db | No | string | auto-discover | Explicit KLS path (overrides auto-discovery) |
--model | No | string | claude-sonnet-4-6 | Claude model |
--no-ai | No | flag | false | Local mode only (no Claude API) |
jinflow notebook-pdf
Section titled “jinflow notebook-pdf”Export a notebook from the KLS as a PDF document.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
notebook_id (positional) | Yes | string | — | Notebook ID |
target (positional) | No | string | active tenant | Tenant (pack-qualified). Also accepts --tenant for backwards compatibility. |
--lang | No | en/de/fr | en | Language for content |
-o, --output | No | string | {notebook_id}.pdf | Output file path |
jinflow pack ls
Section titled “jinflow pack ls”List packs with artifact counts and tenant sync status.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--sync | No | flag | false | Run full three-way diff per tenant (slower) |
jinflow pack clone
Section titled “jinflow pack clone”Clone a domain pack from GitHub. Clones from the configured GitHub org (default: jinflow-io) with repo prefix jinflow-pack-.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
pack_name (positional) | Yes | string | — | Pack name (e.g. millesime) |
--https | No | flag | false | Use HTTPS instead of SSH for git clone |
jinflow ship
Section titled “jinflow ship”Build, sync to R2, and refresh cloud instances in one command. Dry run by default.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
target (positional) | No | string | active tenant | Tenant (pack.tenant) or pack name (millesime for all tenants in pack). Also accepts --tenant for backwards compatibility. |
--all | No | flag | false | Build and ship all tenants across all packs |
--do-it | No | flag | false | Actually execute (default: dry run) |
--clean | No | flag | false | Clean rebuild before syncing |
Examples:
jinflow ship # dry run: see what would happenjinflow ship --do-it # current tenant → build → sync → refreshjinflow ship --all --do-it # all tenants → build → sync → refreshjinflow ship --all --do-it --clean # clean build all → sync → refreshjinflow ship millesime --do-it # one pack onlyjinflow cloud ls
Section titled “jinflow cloud ls”List KLS files and their R2 sync status.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--local-only | No | flag | false | Skip R2 status check (just list local files) |
jinflow cloud blacklist
Section titled “jinflow cloud blacklist”Manage the R2 sync blacklist. Without arguments, shows the current blacklist.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
tenant (positional) | No | string | — | Tenant to add/remove (e.g. millesime.domaine_zufferey) |
--remove | No | flag | false | Remove tenant from blacklist |
jinflow cloud sync
Section titled “jinflow cloud sync”Sync KLS files to Cloudflare R2. Dry run by default.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--do-it | No | flag | false | Actually upload (default: dry run) |
--prune | No | flag | false | Remove R2 objects not present locally (or blacklisted) |
jinflow instance
Section titled “jinflow instance”Manage deployed cloud instances (registration, refresh).
| Subcommand | Description |
|---|---|
jinflow instance ls | List registered instances |
jinflow instance add <name> <url> | Register an instance |
jinflow instance remove <name> | Remove an instance |
jinflow instance refresh <name> | Tell instance to re-download from R2 |
jinflow instance refresh --all | Refresh all instances |
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--all | No | flag | false | Refresh all registered instances |
--scope | No | string | — | Refresh scope (pack) |
--pack | No | string | — | Pack name (with --scope pack) |
Examples:
jinflow instance lsjinflow instance add demo https://this-is.jinflow.iojinflow instance remove demojinflow instance refresh demojinflow instance refresh --alljinflow instance refresh demo --scope pack --pack millesimejinflow version
Section titled “jinflow version”Show version and release notes.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
--changelog | No | flag | false | Show changes across all releases (from git tags) |
--last | No | int | 0 (all) | Show only the last N releases (with --changelog) |
--days | No | int | 0 (all) | Show only releases from the last N days (with --changelog) |
jinflow help
Section titled “jinflow help”Show detailed help for a command.
| Flag | Required | Type | Default | Description |
|---|---|---|---|---|
topic (positional) | No | string | — | Command to get help for |
jinflow release-notes
Section titled “jinflow release-notes”Generate RELEASE_NOTES.md from git commits.
No flags.