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), = (is), ∈ (of), ⌬ (by), ✦ (at).
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 |
| 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
┌──────────── Core ─────────────┐
│ ATS (attestation type system) │
│ ⊔ DB (storage) │
│ ≡ config (configuration) │
│ ꩜ Pulse (async execution) │
│ ⋈ ax (query) │
└───────┬──────────┬────────────┘
│ │
gRPC (plugins) WebSocket + REST (browser)
│ │
┌─────┴───┐ ┌──┴──────────────┐
│ Domain │ │ Web UI │
│ plugins │ │ Canvas (⧉) │
└─────────┘ └──────────────────┘
See Understanding QNTX.
Key technical decisions and why:
┌──────────────────── Core ────────────────────┐
│ ATS Attestation Type System │
│ ⊔ DB Storage │
│ ≡ config Configuration │
│ ꩜ Pulse Async execution + scheduling │
│ Server HTTP, WebSocket │
└──────────────────────────────────────────────┘
│ │
gRPC (plugins) shared core
│ │
┌────────┴────────┐ ┌───────┴────────────────┐
│ Domain plugins │ │ Rust core │
│ │ │ node and browser │
└─────────────────┘ └────────────────────────┘
Architecture deep-dives:
Key runtime flows:
Attestation lifecycle: assert → store → index → notify watchers → trigger downstream elements
꩜ Pulse execution: schedule tick → resource check → job dispatch → worker execution → result
Element meld DAG: meld detection → edge creation → subscription activates → attestation arrives → downstream element fires
Browser ↔ node: live updates over WebSocket, requests over REST.
Detailed flows:
A single binary with the web UI inside. Zero configuration required.
Same binary everywhere:
Clients:
See Installation, Nix Development, Release.
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.
| ADR | Decision |
|---|---|
| 001 | Domain logic lives in plugins, core stays minimal |
| 002 | Plugin configuration via ≡ config 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 element melding (Elements') |
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
└── 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 elements — plugins attest new UI elements
└── One core shared across platforms
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 + Elements + 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 |
| ATS parser is Rust's alone | A build without the Rust core parses nothing | ADR-005 |
See GLOSSARY.md.