Zum Inhalt springen

Operating Modes

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Where things live. Where make happens. How AFS, KLS, and SIS flow between actors.

The same product runs in five different topologies. What varies is where each store lives and who runs the build. The code paths converge.


  • AFS — the analytical framework. Git repo. All YAML, SQL, contracts, published notes/bookmarks. Written by humans and by make.
  • KLS — the knowledge store. DuckDB file. Built from the AFS by make. Read-only once built.
  • SIS — the system information store. DuckDB file. Notes, bookmarks, audit, preferences. Mutable. Lives next to the user.

make is the single build entrypoint. It gathers inputs, publishes SIS content into the AFS, then builds the KLS — in that order, with every side effect committed to git.

make is the security boundary. Whoever controls make controls the analytical truth. Extraction and SIS publishing run inside make but commit their outputs to the AFS before the build reads them, which means:

  • Every build is reproducible from the AFS commit it was built on.
  • Everything that went into the build is in git — auditable, reversible.
  • The post-extraction, post-publish portion of make consumes only the AFS, nothing else.

The AFS commit produced at the end of each build (make: ...) captures the full preparation in its history.

Terminal window
jinflow inspect # read-only view of the extraction surface
jinflow inspect --contract # full pipeline.yml contract (purpose, source, output, expected)
jinflow inspect --check # verify SHA-256 hashes without running extraction
jinflow sis flush # publish pending SIS notes/bookmarks to AFS (runs anyway inside make)

inspect never runs extraction — for that, use jinflow make. sis flush is the rare case where you want to publish SIS content without rebuilding the KLS.

The key: make knows where the SIS is. In local mode, it reads the file. In cloud mode, it calls JinDesk API. The developer doesn’t care.


Everything on one machine. The developer’s laptop.

  • Who runs make: the developer, on the same machine
  • Auth: none (god mode). Git identity from local git config
  • Git: local. Push to GitHub when ready

KLS on the data owner’s machine. JinDesk in the cloud. One SIS in the cloud.

  • Who runs make: the data owner, locally
  • Auth: stealth (none) or GitHub OAuth for identified sessions
  • Git: owner pushes AFS; remote users never touch git
  • One SIS: lives in the cloud. Everyone — owner, CFO, analyst — reads and writes the same SIS

See: P2P2P concept page.

KLS uploaded to R2. JinDesk and SIS in the cloud.

  • Who runs make: the developer, locally. Then jinflow cloud sync pushes KLS to R2
  • Auth: GitHub OAuth for all cloud users
  • Why: always-on, low-latency, shareable via URL. The tradeoff: data leaves the site

KLS stays local. SIS in the cloud. No KLS upload.

  • Who runs make: the developer, locally
  • Why: compliance — analytical data can’t leave the site, but user activity (SIS) is fine in the cloud
  • Auth: GitHub OAuth for cloud users

make runs in the cloud. No local machine needed.

  • Who runs make: a cloud service (GitHub Actions, Fly.io Machine, Cloudflare Worker)
  • Trigger: git push to AFS, scheduled cron, or manual (jinflow make --remote)
  • Auth: GitHub for developers (push triggers build). OAuth for JinDesk users

This is the endgame. The developer never runs make locally. They push AFS changes; the cloud worker runs make (extract + publish + build); JinDesk serves the result.


The SIS serves two roles:

RoleContentRetentionPublished to AFS?
MemoryNotes, bookmarksLong-termYes (make Phase 1d → YAML)
MemoryAudit trail, acknowledgments, preferencesLong-termNo (SIS-only)
MessengerRecents (navigation journal)Short-term, rotatedNo (ephemeral)
MessengerSession state (current filters, scroll)Session-onlyNo (ephemeral)

One SIS per tenant. Not local + cloud. One instance, one truth. Location is a deployment decision:

ModeSIS lives…Accessed by…
LocalDeveloper’s machineJinDesk (localhost)
Proxy / Semi-Cloud / CloudCloud (JinDesk server or R2)JinDesk (cloud) + make (remote fetch during Phase 1d)
Make-as-a-ServiceCloudJinDesk + cloud make (direct)

Nobody needs git to create notes. Git is only needed to run make, which publishes SIS content into the AFS before it builds the KLS.


FactorLocalProxyCloudSemi-CloudMake-as-Service
Data locationLocalLocalCloud (R2)Local (KLS) / Cloud (SIS)Cloud
Who runs makeDeveloperOwnerDeveloperDeveloperCloud worker
Operational compliance✅ Best✅ Best❌ KLS in cloud✅ KLS local❌ Full cloud
CollaborationSingle userMulti-user (session)Multi-user (always on)Multi-userMulti-user
Internet requiredNoYesYesYesYes
Git knowledge neededAuthor onlyAuthor onlyAuthor onlyAuthor onlyAuthor only
Setup complexityTrivialOne commandR2 credentialsProxy + cloud SISCI/CD + deploy keys
Viewer loginOptional (stealth)RequiredRequiredRequired

Recommendation: Start with Local (Mode 1) + Proxy (Mode 2) for sensitive data. Move to Cloud (Mode 3) for non-sensitive. Make-as-a-Service (Mode 5) is the long-term vision for scale.


The cut inside make — between input gathering (Phase 0 extract, Phase 1d SIS publish) and the build proper — is the security boundary.

  • The input phases have side effects: they pull from the DLZ, talk to the SIS, write to the AFS, and commit to git.
  • The build phases have none: they read the AFS, write the KLS. That’s it.

Everything that feeds the build is in git — auditable, reproducible, reversible. The SIS is the collaboration layer: it doesn’t need git, it doesn’t need make, it’s where people work. Everything else is infrastructure.


jazzisnow jinflow is a jazzisnow product
v0.64.7 · built 2026-09-20 19:48 UTC