jinflow Setup Guide
1. Configure your roots
Section titled “1. Configure your roots”Edit ~/.jinflow/config.yml:
live_root: ~/jinflow-live # where tenant instances livelive_root— wherejinflow initcreates tenant instances andjinflow makewrites KLS files.
Supports ~ expansion and can also be set via JINFLOW_LIVE environment variable.
Optional: pack root and DLZ root
Section titled “Optional: pack root and DLZ root”If you use domain packs or receive source data via a Data Landing Zone:
pack_root: ~/jinflow-packs # where domain pack repos are cloneddlz_root: ~/jinflow-datalandingzone # where source data arrivespack_root— where jinflow looks for packs by name. Only needed if you use--packon init.dlz_root— convention:{dlz_root}/{pack}/{tenant}/{source_system}/csv/.
Both can also be set via environment variables (JINFLOW_PACKS_ROOT, JINFLOW_DLZ_ROOT).
2. Initialize a tenant
Section titled “2. Initialize a tenant”Starting from scratch
Section titled “Starting from scratch”jinflow init --tenant my_analysis --source-system opaleThis creates an empty tenant with a blank AFS — you write your own signals, theses, and dbt models.
Starting from a domain pack
Section titled “Starting from a domain pack”jinflow init --pack millesime --tenant domaine_new --source-system opaleThis copies the pack’s analytical framework into the tenant. The pack is a starter kit — after init, the tenant is independent.
What init creates
Section titled “What init creates”{live_root}/{pack_or_default}/domaine_new/ afs/ ← analytical framework (your instruments, dbt models, contracts) raw/ ← place your source CSVs here build/ ← intermediaries (compiled SQL, enriched CSVs) store/ ← KLS + SIS (built by make)With DLZ
Section titled “With DLZ”jinflow init --pack millesime --tenant domaine_new --source-system opale \ --dlzroot ~/jinflow-datalandingzoneThis also links the tenant to its DLZ path for --sync.
3. Use pack-qualified tenant IDs
Section titled “3. Use pack-qualified tenant IDs”All commands use pack.tenant notation:
jinflow make --tenant millesime.domaine_newjinflow explore --tenant millesime.domaine_newjinflow afs update --tenant millesime.domaine_newjinflow us --tenant millesime.domaine_new # set as defaultSet a default tenant
Section titled “Set a default tenant”jinflow us --tenant millesime.domaine_newAfter this, commands without --tenant will use the default.
4. Check your config
Section titled “4. Check your config”jinflow usShows live_root, pack_root, default tenant, and where each setting was resolved from (env var, config.yml, or default).
5. Day-to-day workflow
Section titled “5. Day-to-day workflow”# Build the KLSjinflow make
# Explore in browserjinflow explore
# Edit instruments (signals, theses, etc.) in afs/, rebuildjinflow make
# Freeze a snapshot when happyjinflow make --snapshot
# If using a DLZ: copy fresh CSVs before buildingjinflow make --sync
# If using a domain pack: pull latest pack changesjinflow afs update --do-itResolution order
Section titled “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/ dir | — |
| dlz_root | JINFLOW_DLZ_ROOT env | ~/.jinflow/config.yml | AFS jinflow.yml | — |
| tenant | JINFLOW_TENANT env | ~/.jinflow/config.yml | AFS default_tenants | — |