Vault-First Architecture
How private knowledge becomes public signal — with zero manual synchronization.
This page runs itself. An Obsidian vault holds all project context, filtered through visibility rules, exported by scheduled Python scripts, and projected here via Django. What you're reading was never typed twice.
This architecture also routes the agent’s thinking.
The public workflow is not only a vault-to-Django publishing pipeline. It is also backed by a cognitive routing layer: fast System 1 handling for routine work, FLARE-style System 2 planning for complex tasks, and live metrics that show how often each path is used.
⚡ Pipeline Overview
Four stages from source to surface. Each stage has a single responsibility and a defined security boundary.
Projects · Sprints · Notes · Tasks"] Filter["🔒 Visibility Filter
public / internal / private"] Export["📦 Export Scripts
status.json · health.json · metrics.json"] Validate["✅ Validation Layer
Schema checks · sanitization"] Django["⚙️ Django Application
/status/ · /now/ · /workflow/ · /system/"] Public["🌐 Public Surface
apps.codingenvironment.com"] Vault --> Filter Filter --> Export Export --> Validate Validate --> Django Django --> Public
🧩 Components
Obsidian Vault
Single source of truth. Projects, sprints, and daily notes with YAML frontmatter for structured metadata. Synced to git — no lock-in.
Visibility Filter
Every note carries visibility: public|internal|private. Export scripts enforce the boundary — only public content ever leaves the vault.
Export Scripts
Python scripts run on cron, reading the vault and writing sanitized JSON artifacts to collected_static/. Validation catches schema violations before writing.
Django Views
Read-only views consume pre-filtered JSON. No direct vault access. Freshness is calculated from timestamps and surfaced as live indicators.
🔐 Security Model
Public surfaces never touch the raw vault. Security is enforced at multiple independent layers — none are a single point of failure.
Export scripts filter by visibility → validation strips PII and sensitive fields → Django views filter again at render time. Three independent gates between private data and public output.
- Visibility Model — Each note has
visibility: public|internal|private - Export Sanitization — Scripts strip paths, credentials, and internal fields
- View Filtering — Django templates only render content already marked public
- Freshness Honesty — Stale data is visibly labeled, never silently served as current
🧠 Cognitive Routing
Task dispatch is automated using a dual-engine model. System 1 handles the vast majority of requests fast and directly. System 2 (FLARE) engages for complex, multi-step planning tasks that genuinely need deliberate reasoning.
The routing split is tracked in real time. See the full cognition system →