Skip to content

Collaboration Guide

jinflow uses git for collaboration. Every tenant AFS is a git repository from birth. Teams share work through GitHub (or any git remote).

Create a tenant from a domain pack, connect to GitHub, push:

Terminal window
# Create from pack
jinflow init --pack millesime --tenant szo
# Connect to GitHub (create the repo on GitHub first)
jinflow afs remote https://github.com/org/afs-millesime-domaine_zufferey.git
# Push initial state
jinflow afs push -m "initial setup"

Clone the AFS from GitHub — no pack needed:

Terminal window
# Clone from GitHub
jinflow init --clone https://github.com/org/afs-millesime-domaine_zufferey.git
# Sync data and build
jinflow make --tenant millesime.domaine_zufferey --sync --clean

This creates the full tenant layout (raw/, build/, store/) around the cloned AFS. The pack is not needed — the AFS IS the analytical framework.

Terminal window
# Start of day: pull team changes
jinflow afs pull
# Work: edit signals, theses, notes
# Build and explore
jinflow make
jinflow explore
# End of day: push your changes
jinflow afs push -m "added io_coefficient signal"
Terminal window
jinflow afs remote # show current remote
jinflow afs remote <url> # set remote (add or update)
jinflow afs status # show branch, tags, changes
jinflow afs log # build logbook (git log)
jinflow afs log -n 10 # last 10 entries
jinflow afs pull # pull from remote (fast-forward only)
jinflow afs push # commit all changes + push
jinflow afs push -m "message" # with custom commit message

The AFS (afs/) is the git repo. It contains:

ContentVersionedNotes
Signals, theses, verdictsYesThe analytical instruments
SMEbits, BitBundlesYesExpert knowledge
NotebooksYesInvestigation notes
Entities, lineage, contractsYesSchema definitions
dbt macros, seeds, testsYesData transformation logic
Models (bronze, silver, gold)YesSQL source models
jinflow.ymlYesPack config
tenant/ (config, logo, seeds)YesTenant-specific content

What is NOT in git (lives alongside the AFS):

ContentLocationNotes
Raw CSVsraw/Immutable source data from DLZ
Build artifactsbuild/Compiled SQL, enriched CSVs (regenerable)
KLS + SISstore/Built databases (regenerable via make)

jinflow make auto-commits a structured one-liner after each build:

jinflow make: ok | clean | 34/0/1 | v0.7.9 | darwin | mig | millesime.domaine_zufferey | 12.3s

jinflow afs update --do-it auto-commits after syncing pack content.

These auto-commits create a build logbook visible via jinflow afs log.

Domain packs are independent git repos (e.g., jinflow-pack-millesime). They’re cloned manually:

Terminal window
git clone https://github.com/jinflow-io/jinflow-pack-millesime.git

Configure the pack root so jinflow can find them:

Terminal window
jinflow us --pack-root ~/jinflow-packs

Pack changes flow into tenant AFS via jinflow afs update --do-it.

jinflow afs update uses three-way merge (SHA-256 manifest):

  • Only pack changed → safe update (auto-applied)
  • Only tenant changed → preserved (your customization wins)
  • Both changed → conflict (NOT overwritten, flagged for manual resolution)
  • Force mode--force makes pack win on conflicts

jinflow afs pull uses fast-forward only. If local and remote diverge, it tells you to resolve manually with git pull --rebase.

jazzisnow jinflow is a jazzisnow product
v0.45.1 · built 2026-04-17 08:14 UTC