Operator Cheat Sheet
Install
Section titled “Install”Download the latest release. The package is self-contained — no Python, Node, or dbt needed.
# macOSexport PATH="$HOME/jinflow:$PATH"jinflow version
# Verifyjinflow usFirst-Time Configuration
Section titled “First-Time Configuration”jinflow us --live-root ~/jinflow-live # where tenant data livesjinflow us millesime.domaine_zufferey # set default tenantjinflow us --api-key sk-ant-... # Claude API key (for AI features)jinflow us --model claude-sonnet-4-6 # AI model selectionOptional: Pack root and DLZ
Section titled “Optional: Pack root and DLZ”jinflow us --pack-root ~/jinflow-packs # domain pack reposjinflow us --dlz ~/jinflow-datalandingzone # data landing zoneOptional: R2 cloud credentials
Section titled “Optional: R2 cloud credentials”jinflow us --r2-account-id <id>jinflow us --r2-key <access_key>jinflow us --r2-secret <secret_key>jinflow us --r2-bucket jinflow-demoCredentials stored in ~/.jinflow/secrets.yml.
Config Resolution Order
Section titled “Config Resolution Order”| Setting | 1st | 2nd | 3rd | Default |
|---|---|---|---|---|
| live_root | JINFLOW_LIVE env | ~/.jinflow/config.yml | — | ~/.jinflow/live/ |
| pack_root | JINFLOW_PACKS_ROOT env | ~/.jinflow/config.yml | engine packs/ | — |
| dlz_root | JINFLOW_DLZ_ROOT env | ~/.jinflow/config.yml | AFS jinflow.yml | — |
| tenant | JINFLOW_TENANT env | ~/.jinflow/config.yml | AFS default | — |
Tenant Lifecycle
Section titled “Tenant Lifecycle”# Create (from scratch)jinflow init --tenant my_analysis --source-system opale
# Create (from domain pack)jinflow init --pack millesime --tenant szo --source-system opale
# Clone existingjinflow clone millesime.domaine_zufferey --name sandbox
# List alljinflow ls
# List with snapshotsjinflow ls --snapshots
# Interactive pickerjinflow pick
# Health checkjinflow statBuild Operations
Section titled “Build Operations”jinflow make # build default tenantjinflow make --all # all tenants, all packsjinflow make millesime # all tenants in one packjinflow make --clean # drop + full rebuildjinflow make --sync # sync DLZ → raw/ firstjinflow make --extract # XLSX → CSV → sync → buildjinflow make --snapshot post-audit # freeze after buildjinflow make --quiet # suppress outputjinflow make --continue-on-error # don't fail-fastSnapshot Management
Section titled “Snapshot Management”jinflow make --snapshot # auto-tag: YYYYMMDD-HHMMjinflow make --snapshot post-audit # named tagjinflow snapshot review-q1 # standalone (no build)jinflow explore --snapshot post-audit # browse a snapshotjinflow ls --snapshots szo # list tenant snapshotsSnapshots are immutable — make refuses to overwrite.
AFS Git Operations
Section titled “AFS Git Operations”jinflow afs status # branch, tags, dirty filesjinflow afs log # commit historyjinflow afs diff # changes vs remotejinflow afs pull # fast-forward from remotejinflow afs push -m "Updated probes" # commit + pushjinflow afs remote https://github.com/... # set remote URLjinflow afs update --do-it # sync pack → tenant (three-way merge)jinflow afs reset --do-it # hard reset to pack stateCloud Sync (R2)
Section titled “Cloud Sync (R2)”jinflow cloud ls # list KLS files + R2 statusjinflow cloud ls --local-only # skip R2 checkjinflow cloud sync --do-it # upload to R2jinflow cloud sync --do-it --prune # upload + delete stale remote filesjinflow cloud blacklist millesime.domaine_zufferey # exclude tenant from syncjinflow cloud blacklist millesime.domaine_zufferey --remove # re-includePack Management
Section titled “Pack Management”jinflow pack ls # list packs and artifactsjinflow pack ls --sync # include tenant sync statusjinflow pack clone millesime # clone from GitHub (SSH)jinflow pack clone millesime --https # clone via HTTPSExplorer
Section titled “Explorer”jinflow explore # default tenant, port 4000jinflow explore --port 3000 # custom portjinflow explore millesime.domaine_zufferey # specific tenantjinflow explore --db /path/to/kls.duckdb # explicit KLSjinflow explore --snapshot post-audit # browse snapshotjinflow explore --docker # run in Dockerjinflow explore --cloud # use R2 cloud KLSjinflow explore --no-open # don't open browserEvolve (AI REPL)
Section titled “Evolve (AI REPL)”jinflow evolve # interactive sessionjinflow evolve --no-ai # SQL-only modejinflow evolve --model claude-opus-4-6 # choose modelInstance Management
Section titled “Instance Management”jinflow instance ls # list registered instancesjinflow instance add demo https://this-is.jinflow.io # register an instancejinflow instance remove demo # remove an instancejinflow instance refresh demo # tell instance to re-download from R2jinflow instance refresh --all # refresh all instancesNotebook Export
Section titled “Notebook Export”jinflow notebook-pdf nb_io_reconciliation # export as PDFjinflow notebook-pdf nb_io_reconciliation --lang de # Germanjinflow notebook-pdf nb_io_reconciliation -o report.pdf # custom outputDrift Detection
Section titled “Drift Detection”python3 scripts/docsdrift.py # full reportpython3 scripts/docsdrift.py --quiet # exit 1 if drift (CI-ready)Releasing
Section titled “Releasing”just release patch # bump + tag + buildjust release minorjust release majorjust release 1.1.0 # explicit versionPipeline: bump version → generate release notes → commit + tag → CI builds → local macOS build.
Deploy Package Layout
Section titled “Deploy Package Layout”jinflow-deploy/ _cli/jinflow/ PyInstaller binary (CLI + dbt + DuckDB) _explorer/ SvelteKit build + duckdb-async jinflow macOS/Linux launcher jinflow.bat Windows launcher~200 MB, self-contained. No Python/Node/dbt required on target machine.
Tenant Directory Layout
Section titled “Tenant Directory Layout”{live_root}/{pack}/{tenant}/ afs/ ← analytical framework (git-backed) raw/ ← immutable source CSVs build/ ← intermediaries store/ ← KLS + SIS + snapshots {pack}_{tenant}_kls.duckdb working KLS {pack}_{tenant}_sis.duckdb mutable SIS YYYYMMDD-HHMM_kls.duckdb auto snapshot post-audit_kls.duckdb named snapshotKey Files
Section titled “Key Files”| File | Location | Purpose |
|---|---|---|
~/.jinflow/config.yml | User config | live_root, pack_root, dlz_root, tenant |
~/.jinflow/secrets.yml | Credentials | API keys, R2 credentials |
.githooks/commit-msg | Repo | Semantic commit prefix enforcement |
state/system.duckdb | Repo | Optional system DB (instrument lifecycle) |
.jinflow.yml | AFS root | Pack manifest, tenant config |
Troubleshooting
Section titled “Troubleshooting”| Symptom | Cause | Fix |
|---|---|---|
dbt fails with wrong adapter | System dbt is dbt-fusion | Use .venv/bin/dbt |
| KLS catalog error with dots | Dots in DuckDB filename | Use underscores: pack_tenant_kls.duckdb |
| Hook rejects commit | Missing semantic prefix | Start message with feat:, fix:, etc. |
jinflow make skips phases | Incremental build | Use --clean for full rebuild |
| Explorer shows stale data | KLS not rebuilt | Run jinflow make, refresh browser |
afs update shows conflicts | Pack and tenant both changed same file | Use --force (pack wins) or merge manually |
v0.45.1 · built 2026-04-17 08:14 UTC