Based on the arc42 template. This document is an entrypoint — it links to existing docs where content lives and fills gaps inline.
QNTX stores and retrieves attestations — structured claims of the form:
[Subject] = [Predicate] ∈ [Context] ⌬ [Actor] ✦ [Time]
Building blocks: + (as/assert), = (is/identity), ∈ (of/membership), ⌬ (by/actor), ✦ (at/temporal).
Current subsystems:
| Priority | Quality Goal | Rationale |
|---|---|---|
| 1 | Privacy / Local-first | Your data stays yours. Local inference, local storage, no mandatory cloud. |
| 2 | Data visibility | Information density over aesthetics. Data-first hierarchy in all interfaces. |
| 3 | Performance | Fast enables exploration. Minimal dependencies, efficient rendering, no decorative overhead. |
| 4 | Semantic clarity | Symbols (⋈ ⨳ ⌬ ✦ ꩜) as namespaces. Meaning over decoration. |
| 5 | Extensibility | Core is minimal. Everything else is a plugin via gRPC. Grammar itself is attestable. |
See Design Philosophy.
| Stakeholder | Expectation |
|---|---|
| Creator / steward | System works, vision intact, honest documentation |
| Community (forming) | Participation, transparency, shared governance |
| Organizations wanting local AI | Private LLM capabilities, no cloud dependency, Ollama integration |
| The public | A public good — intelligence tooling |
The intent is public good. Governance is centralized now, with decentralized stakeholdership as a future direction.
Constraints are expressed as axioms — invariants that throw at runtime if violated.
Full definitions: AXIOMS.md
Browser ──▶ QNTX node ◀──▶ QNTX node ◀── Browser
Phone ────▶ │ │ ◀── Phone
Plugins Plugins
(gRPC) (gRPC)
│ │
└──── sync ──────┘
Merkle / symmetric
no coordinator
any transport:
TCP, WebSocket, LoRa, satellite, serial
Every node generates a did:key identity (ed25519) on first boot. No authority issues it.
Current: WebSocket sync between known peers, nodes identified by DID. Vision: Reticulum — transport-agnostic, delay-tolerant, self-routing. Node DID and Reticulum destination converge to the same keypair.
See sync.md, vision/reticulum.md, vision/identity.md.
┌──────────── Core ─────────────┐
│ ATS (attestation type system) │
│ ⊔ DB (SQLite, migrations) │
│ ≡ am (configuration) │
│ ꩜ Pulse (async execution) │
│ ⋈ ax (query) │
└───────┬──────────┬────────────┘
│ │
gRPC (plugins) WebSocket + REST (browser)
│ │
┌─────┴───┐ ┌──┴──────────────┐
│ Domain │ │ Web UI │
│ plugins │ │ CodeMirror (ATS)│
│ │ │ Canvas (⧉) │
└─────────┘ │ WASM (qntx-core)│
└──────────────────┘
See Understanding QNTX.
Key technical decisions and why:
┌──────────────────── Core ────────────────────┐
│ ats/ Attestation Type System │
│ db/ SQLite + migrations │
│ am/ Configuration (5-layer precedence)│
│ pulse/ Async execution + scheduling │
│ server/ HTTP, WebSocket, LSP │
│ sync/ Merkle reconciliation │
└──────────────────────────────────────────────┘
│ │
gRPC (plugins) WASM (qntx-core)
│ │
┌────────┴────────┐ ┌───────┴────────────────┐
│ Domain plugins │ │ Rust crates │
│ (Go, Python, │ │ qntx-core (parser, │
│ Rust) │ │ fuzzy, sync, merkle) │
│ │ │ qntx-proto (types) │
│ │ │ qntx-wasm (bindings) │
└─────────────────┘ └────────────────────────┘
Architecture deep-dives:
Type system: types/
Key runtime flows:
Attestation lifecycle: assert → store → index → notify watchers → trigger downstream glyphs
꩜ Pulse execution: schedule tick → resource check → job dispatch → worker execution → result → budget tracking
Glyph meld DAG: meld detection → edge creation → subscription activates → attestation arrives → downstream glyph fires
Node-to-node sync: hello (root hash) → group hashes → need → attestations → done
Browser ↔ Server: WebSocket: semantic tokens, LSP protocol, ꩜ Pulse updates. REST: CRUD, sync triggers, status.
Detailed flows:
Single Go binary, embedded web UI. Zero configuration required.
Same binary everywhere:
Clients:
WASM (qntx-core) runs in both server (wazero) and browser (wasm-bindgen) — same Rust logic, two runtimes.
Development: make dev (Go on :877, TS hot-reload on :8820)
See Installation, Nix Development, Distribution Strategy.
Every operator has three layers:
This is the conceptual framework that runs through everything — backend, frontend, documentation, UI.
Full definitions: GLOSSARY.md
A system that is always ingesting (⨳), always processing (꩜), always queryable (⋈).
See vision/continuous-intelligence.md.
Attestations are append-only. Sync is set union — commutative, idempotent, convergent. No vector clocks, no conflict resolution. Two claims about the same subject aren't a conflict — they're two claims.
See sync.md, vision/reticulum.md.
| ADR | Decision |
|---|---|
| 001 | Domain logic lives in plugins, core stays minimal |
| 002 | Plugin configuration via ≡ am with layered precedence |
| 003 | gRPC for all plugin communication |
| 004 | Plugins register ꩜ Pulse handlers dynamically |
| 005 | Rust → WASM for browser/mobile ATS parsing |
| 006 | Protobuf as single source of truth for types |
| 007 | TypeScript gets interfaces only from proto |
| 008 | Separate prost (types) from tonic (transport) in Rust |
| 009 | Edge-based DAG for multi-directional glyph melding |
Privacy / Local-first
├── Local inference, local storage, no mandatory cloud
├── No telemetry, no phone-home
└── Your data on your machine
Data visibility
├── Information density over visual polish
├── No text truncation (no ellipsis, ever)
└── Functional color only — color conveys status, not beauty
Performance
├── System fonts, minimal dependencies
├── Real-time updates via WebSocket
└── Efficient rendering, no decorative overhead
Semantic clarity
├── Symbols as visual grep — scan and know the domain
└── Consistent patterns for entity relationships
Extensibility
├── Plugin architecture via gRPC
├── Attestable glyphs — plugins attest new UI elements
└── WASM for cross-platform core logic
See Design Philosophy.
| Risk | Impact | Mitigation |
|---|---|---|
| Abstraction barrier — "attestations" may be too abstract | Adoption friction | Good ingestion (⨳ ix), gradual onboarding |
| Cold start — empty store = no value | Poor first-run experience | Prioritize connectors: git, files, APIs |
| Complexity budget — ATS + Pulse + Glyphs + Sync each carry weight | Layers compound instead of compose | Each layer independently useful, clear contracts |
| Single steward — bus factor of one | Project continuity | Community formation, honest docs, public good model |
| Parser migration — ATS parser moving Go → Rust/WASM | Temporary dual implementations | ADR-005; WASM already serving browser |
See GLOSSARY.md.