Architekturdokument · C4 + Deployment

Everythink Studio
Globale Systemarchitektur

Ein No-Code-KI-Betriebssystem, das eine Organisation — Unternehmen, Behörde oder Gemeinschaft — in ein lebendiges geografisches Netzwerk verwandelt: Communities und Räume auf der Karte, KI-Assistenten, die antworten, verkaufen und Menschen verbinden, unter eigener Marke, auf Web, iOS und Android. In Produktion seit 2016.

Rust 2026 · Workspace 17 Crates Postgres + Timescale + pgvector Dragonfly (Redis) Next.js 16 · pnpm-Monorepo HAI-Engine · 13 Fragetypen
Initialversion · progressiver Download Dieses Dokument ist die Initialversion der Architektur und enthält nicht die vollständige Architektur. Die Unvollständigkeit ist erwartbar und Teil des Designs: Die Architektur wird progressiv heruntergeladen — aus der Vorlage aap-human-agent, dem Paket mit Interaktionsmustern zwischen Mensch und Agent (Eskalation, Delegation, Proxy-Agenten, Autoritätsgrenzen). Die Agenten führen den Download aus; die Autorität bleibt beim Menschen.

VERTRAULICH — Carlos Matias Baglieri 2026 · in Produktion seit 2016

Agenda

Sechs Abschnitte, ein System

Von der Produktvision bis zur realen Implementierung: Rust-Backend, Next.js-Frontend, Deployment und Roadmap.

1 · Produkt und Vision

Topologie · HAI-Engine · Governance

Der Raum ist der Router; 13 Fragetypen; Isolation, Föderation, agentisch, proaktiv.

2 · Backend

Rust 2026 · 17 Crates · hexagonal

ZERO-I/O-Domäne, Ports & Adapter, 3 Auth-Regime, ein Postgres, Echtzeit.

3 · Frontend

Next.js 16 · FSD + MVVM

4 Apps, 13 Pakete, SDK-Fassaden, RBAC can(), Single Sign-in, Designsystem.

4 · Deploy / CI

docker-compose · 2-Stufen-CI

7 Dienste, TLS am ALB, direkte Preprod-Deployments, Integritäts-Gate auf main.

5 · Roadmap

BYOK · Anchoring · Self-hosted · DAO

v2-Richtung, ausdrücklich nicht implementiert.

6 · Abschluss

Ehrliche Bilanz

Was Produktion ist, was Design, was Projektion.

Vision · Topologie

Der Raum ist der Router

Jede Person hat ihre eigene persönliche Organisation und abonniert n Organisationen. Jede Organisation — Unternehmen · Behörde · Gewerkschaft · Gemeinschaft — enthält n Netzwerke; jedes Netzwerk enthält n Communities; jede Community enthält n Räume. Jeder Knoten hat sein eigenes Multipolygon: Enthaltensein verläuft nach innen (fragmentierte Communities innerhalb des Netzwerk-Polygons) oder nach außen (Communities außerhalb des Polygons). Die Topologie ist im mathematischen Sinne fraktal: Jede Ebene ist eine selbstähnliche Kopie der vorherigen — S = ⋃ fᵢ(S), der Attraktor des Hutchinson-Operators (Banachscher Fixpunktsatz). Netzwerke interopieren miteinander (Föderation): Ein Netzwerk verbindet sich mit einem anderen, indem es nur das Öffentliche teilt. Tritt eine Person einer Organisation bei, erhält sie Zugriff auf deren n Communities und n Räume. Die Arbeit, die sie in der Organisation leistet, wird in der Org erfasst und in ihre persönliche Org gespiegelt: Sie erzeugt Reputation pro Person, wird zu gelösten Problemen destilliert, und diese werden in ihr persönliches Netzwerk kopiert, das sie nachverfolgt. Aus den angesammelten Antworten baut HAI eine Kontextschicht pro Nutzer.

Zoom: 100%
Topologie: Netzwerk → Community → Raum → Persona
persönliche Org / OrganisationNetzwerkCommunityRaum
Vision · Ontologie

Die vier Schichten der Plattform

Jede obere Schicht komponiert die Garantien der darunterliegenden Schichten über typisierte Schnittstellen. Produkte (v1-Module): HAI, Matchmaking, Chat, Kalender, Market, Social. Über den 4 Schichten liegen 10 Sektoren-Instanziierungen.

Zoom: 100%
Ontologie: 4 Schichten + 10 Sektoren-Instanziierungen
Vision · Prinzipien

Drei Prinzipien, die die Architektur regieren

Jedes Prinzip ist eine überprüfbare Garantie, keine Absichtserklärung. Gemeinsam begründen sie die Kompositionsregel (Ende-zu-Ende), die Sektor-Multiplikationsregel (Vererbung ohne Modifikation) und die Ehrlichkeitsregel (implementiert und gemessen = Garantie).

Prinzip 1 · SchichtkompositionEnde-zu-Ende-Kompositionsregel. Stellt jede Schicht L₁…L₄ ihre Garantie sicher und übergibt jede Schnittstelle zwischen den Schichten ausschließlich typisierte und validierte Werte (Zod an der Grenze, DTO → Domain-Mapper), dann gilt die Eigenschaft Ende-zu-Ende: sauber erheben (Schicht 3, P-A3) → in einer begrenzten, terminalen Envelope ausführen (Schicht 3, P-A4) → zum richtigen Ziel routen (Schicht 1, Topologie) → genau einmal zustellen (Schicht 2, P-A7) → innerhalb begrenzter, auditierbarer, mandantenisolierter Autorität (Schicht 4, P-A6/P-A8).
Prinzip 2 · Sektor-InstanziierungSpannungsfreie Multiplikationsregel. Jede Sektor-Bereitstellung (P-C1…P-C10), die die Schichten 1–4 instanziiert, ohne sie zu modifizieren, erbt deren Garantien und fügt nur sektorspezifische Eigenschaften hinzu. Die Plattform ist ein Produkt; Sektoren sind Sichten über denselben Kern. Es gibt keinen Fork pro Sektor — es gibt typisierte Komposition über stabilen Schnittstellen.
Prinzip 3 · Ehrliche BilanzEhrlichkeitsregel. Deklarierte Garantien entsprechen exakt den Eigenschaften, die die implementierten und gemessenen Mechanismen implizieren. Design-/projizierte Fähigkeiten zählen nicht als Garantie, bis ihr Mechanismus implementiert ist. Invariante: keine Metrik, keine Garantie. Gibt es eine Garantie, gibt es ein Dashboard.
Schicht 1 · Topologie & Engine

HAI-Engine — 13 Fragetypen

In Produktion seit 2016. Ein bewusst schmales, komponierbares Fundament: Eine Interaktion ist ein Workflow typisierter Fragen, und die Plattform ist eine geolokalisierte Topologie, sodass jede Antwort in einem wohldefinierten Kontext landet. In v2 läuft die Engine auf zwei Inferenzschichten: dem erlernten Netzwerk (deterministisch, ohne LLM) und der A2A-Inferenz, die nicht existierende Knoten auffüllt und das Netzwerk kollabieren lässt.

Zoom: 100%
HAI-Engine: typisierte Fragen → Routing → Kontext
Produkt · v1 → v2 Module

Kalender — Dienstleistungen verkaufen und den Kalender verwalten

Ein Verkäufer bietet Dienstleistungen (type_event) mit Preis, Kategorie und Verfügbarkeit an; Kunden buchen (event) mit Teilnehmer, Datum und Ort. Im White-Label-Modus ist jeder Verkäufer im selben Netzwerk sichtbar und bestellbar — "andere verkaufen in meinem Netzwerk". Die Zahlung legt einen Merchant im Netzwerk an und sucht Produkte über den product_key.

Zoom: 100%
Kalender: Dienstleistungen im Netzwerk verkaufen
Verkäufer · persönliche OrgNetzwerk = SichtbarkeitsgrenzeZahlungen · Merchant im Netzwerk
Produkt · v1 → v2 Module

Market — Produkte verkaufen und andere in meinem Netzwerk verkaufen lassen

Der Verkäufer listet Produkte (market_product) mit Merchant, Anbieter und Preis und hängt Angebote/Coupons daran. Der Kunde baut den Warenkorb (market_item) auf und checkt aus (merchant_tx), mit dem Netzwerk-Schlüssel, der in json_data gestempelt ist. Streitfälle und Bewertungen auf beiden Seiten. Merchants sind über merchant.network an das Netzwerk gebunden — "andere verkaufen in meinem Netzwerk".

Zoom: 100%
Market: Produkte im Netzwerk verkaufen
Verkäufer · MerchantNetzwerk-Schlüssel in der TransaktionStreitfälle + Bewertungen
Produkt · v1 → v2 Module

HAI + Matchmaking + Chat — das persönliche Netzwerk jedes Nutzers

HAI füllt das persönliche Netzwerk jedes Nutzers, indem es versteht, wonach dieser sucht: Netzwerke werden automatisch aus der Website oder dem Dokument des Unternehmens/der Behörde/der Gemeinschaft/der Gewerkschaft bevölkert, Fragenflüsse werden generiert — und ebenso die Querverweise zwischen Matchings aus verschiedenen Räumen (gleiche oder andere Community). Matchmaking automatisiert Prozesse: eine Nutzerabsicht → eine Bestellung im Dispatch-Kanal der Community, geolokalisiert im Zielraum. Echtzeit-Chat über Socket + FCM. Die Flüsse sind raumübergreifend (sie durchqueren Räume) und laufen auf den zwei Inferenzschichten: dem erlernten Netzwerk + A2A, das auffüllt und kollabieren lässt.

Zoom: 100%
HAI + Matchmaking + Chat: das persönliche Netzwerk
HAI · 13 FragetypenRäume · Küche · DispatchEchtzeit-Chatcommunity-übergreifend
Produkt · v1 → v2 Module

Social — Netzwerk-Promotions und Nutzerinteraktion

Das Netzwerk führt Promotionen in seinem Raum durch, und die Nutzer interagieren in einem Social-Modul: News/Stories mit Likes und Kommentaren, Kategorien vom Admin festgelegt. Der Social-Feed lebt in der Topologie — das Netzwerk publiziert, die Community fragmentiert, der Raum empfängt.

Zoom: 100%
Social: Promotionen und Interaktion
Netzwerk · publiziert und bewirbtNews/Stories · Like · Kommentar
Produkt · v1 → v2 Module

Zwei Inferenzschichten — das kollabierende neuronale Netz

Alle Module leben in Räumen eines Netzwerks und sind raumübergreifend: Ein Datenfluss (HAI) aus einem Gästeraum mit Pre-Sales verbindet sich mit einem aus einem Kunden mit technischem Support. Anders als in v1 (statische Graphen) gibt es hier neuronale Netze: Existiert der Folge-Knoten nicht, bestimmt A2A die nächsten Schritte, speichert sie, und das Netzwerk kollabiert. Der Umfang ist endlich — was ein Nutzer in einem Netzwerk fragt, wird für alle gespeichert — und der LLM-Verbrauch über A2A sinkt mit der Zeit, er wächst nie.

Zoom: 100%
Zwei Inferenzschichten: erlerntes Netzwerk + A2A, endlicher Kollaps
Räume · raumübergreifende DatenflüsseSchicht 1 · erlerntes Netzwerk · kein LLMSchicht 2 · A2A · nur Lückenendlicher Umfang · Verbrauch sinkt
Schicht 2 · Plattform

Überprüfbare Multi-Tenant-Isolation

Unternehmen, Regierungen, NGOs und Gemeinschaften teilen sich seit 2016 ein einziges KI-Substrat und halten das Private nachweislich privat. Vollständige Mediation durch den Reference Monitor; der einzige erlaubte Kanal = öffentliche Scopes.

Zoom: 100%
Multi-Tenant-Isolation
privat, überschreitet nie die Grenzeöffentlich, der einzige Kanal
Schicht 2 · Plattform

Föderierte Netzwerke und stabiles Matchmaking

Netzwerke föderieren über ihre öffentlichen Projektionen. Matchmaking operiert nur auf öffentlichen Scopes innerhalb eines Nähe-Radius; Deferred Acceptance → stabiles Matching.

Zoom: 100%
Föderation: öffentliche Projektionen zwischen Netzwerken
Schicht 3 · Interaktion

Typisierte Erhebung — Lernen mit wenigen Fragen

Das System fragt, der Nutzer antwortet, und die Antwort wird Kontext. Die Erhebung ist typisiert (die Engine rechnet ohne Überraschungen), treu und effizient. Sie läuft auf Schicht 1 (erlerntes Netzwerk, deterministisch); existiert ein Knoten nicht, bestimmt Schicht 2 (A2A) die Schritte, persistiert sie, und das Netzwerk kollabiert — Lernen mit wenigen Fragen, und jede neue Frage wird für alle gespeichert.

Zoom: 100%
Typisierte Erhebung
Schicht 3 · Interaktion

Agentische Workflows — die Envelope

Einige Knoten verlangen offene Arbeit: ein LLM-Agent, der Denken mit Werkzeugaufrufen verzahnt (ReAct-Stil), bis er eine Antwort vom richtigen Typ hat. Dies ist Inferenzschicht 2 (A2A): Existiert der Folge-Knoten im erlernten Netzwerk nicht, bestimmt der Agent die nächsten Schritte, persistiert sie, und das Netzwerk kollabiert — der LLM-Verbrauch sinkt mit der Zeit, er wächst nie. Die Envelope begrenzt die drei Fehlermodi.

Zoom: 100%
Agentischer Knoten: Reasoning + begrenzte Tools

Nicht garantiert: die semantische Korrektheit des Werts. Ein Agent kann fertig werden, im Scope bleiben und eine wohltypisierte, aber falsche Antwort ausgeben — das adressieren Auswertung und ein menschliches Gate, nicht die Envelope.

Schicht 3 · Interaktion

Proaktive Assistenz — der Informationswert

Die Umkehrung eines reaktiven Chatbots: Sie initiiert, statt zu warten. Das Schwierige ist die Enthaltsamkeit — nur sprechen, wenn der erwartete Nettowert des Handelns den Wert des Schweigens übersteigt.

Zoom: 100%
Proaktive Schleife: beobachten → bewerten → handeln
Schicht 4 · Governance

Begrenzte Autorität und Herkunft

Ein Agent, der handeln kann — Geld ausgeben, Dritte kontaktieren, Daten bewegen — muss durch das begrenzt sein, dem der Nutzer zugestimmt hat, Informationen nur für den gegebenen Zweck verwenden und eine Spur hinterlassen, die Erklären und Rückgängigmachen ermöglicht.

Zoom: 100%
Governance-Stack: Einwilligung → Capability → Log
Schicht 4 · Governance

Autonome Netzwerke im Dienst der menschlichen Netzwerke

Begrenzte Delegation, Contract-Net-Zuteilung (announce → bid → award) und die ehrliche Grenze der Koordination: Liveness nur bei partieller Synchronie.

Zoom: 100%
Autonomes Netzwerk im Dienst des menschlichen Netzwerks
Querschnittsthemen

Sicherheit und das Evidenz-Protokoll

Sicherheit

Saltzer–Schroeder-Prinzipien

Vollständige Mediation, Ökonomie des Mechanismus, ausfallsichere Defaults. Security-Schulden bedingen mehrere Garantien der Plattform.

Evidenz

Deployment-gestützte Behauptung

Eine Behauptung C ist im Deployment gestützt genau dann, wenn (i) wohltypisiert, (ii) jede Prämisse validierte Evidenz aus der Produktions-Pipeline hat, (iii) die Prämissen die Schlussfolgerung erfüllen. Ohne das ist C eine Design-Behauptung.

Zoom: 100%
Sicherheits-Ontologie
Sicherheits-Ontologie: Perimeter, Vertrauen, Bedrohungen.
Zoom: 100%
Evidenz-Pipeline
Pipeline: instrumentieren → speichern → validieren → auditieren.
Sektoren

Zehn Sektoren-Instanziierungen

Jede Sektor-Bereitstellung instanziiert die Schichten 1–4, ohne sie zu modifizieren, und erbt deren Garantien.

Sektor 1

Unternehmen mit mehreren Standorten

Exactly-once-Zustellung, Little's Law, Nicht-Interferenz zwischen Standorten.

Sektor 2

Regierung

Gleichbehandlung, Auditierbarkeit, Unmöglichkeit von Fairness.

Sektor 3

Humanitär

Leximin-Triage, optimaler Transport, Privatsphäre für Vulnerable.

Sektor 4

Communities

Anhaltende Kooperation, Reputation, Ostroms Prinzipien.

Sektor 5

Gesundheit

Care-Topologie mit klinischer Privatsphäre.

Sektor 6

Bildung

Lernpfade über der Topologie.

Sektor 7

Finanzen

Screening-Pipeline und die Potenzkurve.

Sektor 8

Logistik

Bewegung von Gütern, Preisfairness.

Sektor 9

Defensiv

Explizit zivil-defensiver Scope.

Sektor 10

Community-Kredit

Reputation und Governance über die Allmende.

Ehrliche Bilanz

Produktion / Design / projiziert

Projizierter Zustand
Karte des projizierten Zustands — Selbsteinschätzung, kein externes Audit.
In Produktion seit 2016

Topologie · Engine · Plattform · Erhebung · Governance

Die Kernmechanismen sind seit 2016 im Einsatz.

Design 2026

Agentisch · proaktiv · Föderation · autonom

Fähigkeiten überwiegend im Design 2026; autonom ist über den gesamten Scope Design.

Projiziert

Sämtliche quantitative Auswertung

Jede quantitative Zahl ist projiziert, ausstehend ist die Messung auf der Live-Plattform.

Backend · Rust 2026

17 Crates, hexagonal, ein Postgres

Composition Root (api) → Use-Cases ×10 → Adapter (ledger, a2a, courier) → Domäne (core, ZERO I/O). Ein einziges Postgres (Timescale pg17 + pgvector) für alles: Ledger, Events, Embeddings, Jobs/Whisper-Geo-Cache. SQL wird zur Compile-Zeit verifiziert (.sqlx/-Offline-Cache, 107 Queries).

Zoom: 100%
Backend: api → use-cases → adapters → core → Postgres
api · Composition Rootuse-cases ×10Adaptercore · ZERO I/OPostgres · Timescale pg17 + pgvector.sqlx/ · 107 Queries offline
Backend · Hexagonal

Ports & Adapter — die Domäne im Zentrum

Die Domäne (everythink-core) kennt kein I/O. Adapter implementieren Ports für DB, E-Mail, A2A. Use-Cases orchestrieren. Die Composition Root (everythink-api) verdrahtet alles.

Zoom: 100%
Hexagonal: Domäne im Zentrum
Domäne (ZERO I/O)Adapter (sqlx, Brevo, A2A)use-cases
Backend · 17 Crates

Warum so viele Crates — eine explizite Rolle pro Crate

Jeder Crate hat eine Rolle: Composition Root (api), Client (sdk, cli), Use-Case ×10, Infra-Adapter (a2a, courier), Ports + Persistenz (ledger), Domäne (core).

Zoom: 100%
Taxonomie der Crate-Rollen
Backend · Workspace

17 Crates fließen in core zusammen

everythink-api ist der Hub; alles hängt von core ab (ZERO I/O). Das SDK lebt innerhalb des Workspace (backend/crates/everythink-sdk), weil es an core gekoppelt ist.

Zoom: 100%
Abhängigkeitsgraph: 17 Crates → core

Hinweis: libs/ enthält SDKs in anderen Sprachen (vendored Referenzen, externer Code).

Backend · Requestfluss

Von Auth bis Persistenz — ein vollständiger Request

Client → api (auth + rate-limit + validate) → loom (run) → ledger (Profil über das Repo-Trait auflösen) → sisters (fan out) → oracle (merge → normalisiertes Ensemble) → ledger (persistieren) → 200 OK.

Zoom: 100%
Request-Lebenszyklus
Backend · Use-Cases

Sechs Use-Cases: Orchestrierung, Auth und Daten

loom — Orchestrierung: persistiert über den Port LoomStore / den Adapter LoomPersistence. ingest — Signal-Pipeline: verarbeitet eingehende Signale. scry — Sentiment: der Referenz-Port SentimentReader / PgSentimentReader. eval — Regressions-Harness: kontinuierliche Auswertung. warden — Auth: JWT access/refresh, Google OAuth, IP-Binding. whisper — HMAC-signierte Webhooks mit Exactly-once-Zustellung.

Zoom: 100%
Use-Cases: loom · ingest · scry · eval · warden · whisper
Backend · Sicherheit

Middleware-Kette — Trace → Timeout → CORS → Routing

Eingehender Request → Trace + request_id → Timeout 60s → 408 → CORS + Kompression → Routen-Subbaum mit 5 Zweigen.

Zoom: 100%
Middleware-Kette
Backend · Sicherheit

Drei Auth-Regime koexistieren auf einem Router

Öffentlich (probes/register/login/refresh) · Eye-Key (HMAC, gleitendes 60s-Rate-Limit) · User-JWT (warden, Console) · Atlas-WS (selbst authentifiziert, Caps pro Nutzer).

Zoom: 100%
Drei Auth-Regime
Backend · Sicherheit

RBAC ohne Vererbung — eine Funktion, eine explizite Matrix

can(role, action) als const fn: Owner → true; Profile Read/Write Self → true; expliziter Match auf (role, action); der Rest → nur Owner. AUTHORIZE im Handler → 403 bei Verweigerung.

Zoom: 100%
RBAC can(role, action)
Backend · Daten

Ein Datenspeicher für alles

timescale/timescaledb-ha:pg17 + pgvector (vector(1024) + HNSW). Ein Pool. Sechs Daten-Domänen: Ledger, Simulations, Users, Embeddings, geo_signals, Jobs. Health-Check: pg_isready in docker-compose (service_healthy).

Zoom: 100%
Ein einziges Postgres
Backend · Daten

Persistenz über einen Port, nie über ein Konkretum

Repository-TRAIT · Pg*Repository (hier lebt das gesamte SQL) · MockRepository (Tests ohne DB) · AppState: Arc<dyn Repository> · Use-Cases rufen das TRAIT auf.

Zoom: 100%
Trait ↔ Adapter-Vertrag
Backend · Daten

Zur Compile-Zeit verifiziertes SQL, reversible Migrationen

.up.sql + .down.sql editieren (gepaart) → just sqlx-prepare → .sqlx/*.json committen (107 Queries) → Build/CI mit SQLX_OFFLINE=true ohne Live-DB.

Zoom: 100%
sqlx-Offline-Cache
Backend · Deploy-Details

Health-Checks + SQLX offline — präzise Deployments

docker-compose: postgres (pg_isready, 10s/5s/10) → dragonfly (redis-cli ping, 10s/3s/10) → api (service_healthy). app/admin: Health-Check deaktiviert (distroless/static). CI: SQLX_OFFLINE=true mit committetem .sqlx/-Cache.

Zoom: 100%
Backend-Deploy: Health-Check-Kette + SQLX-Workflow
postgres · pg_isready · interval 10s / timeout 5s / retries 10dragonfly · redis-cli ping · interval 10s / timeout 3s / retries 10api · depends_on service_healthySQLX_OFFLINE=true · .sqlx/ 107 Queries
Backend · Echtzeit

SSE (Tide) + WebSocket (GeoHub) — Fan-out pro Tile

TideBroker: SSE mit zusammengesetzten Topics, Broadcast 256, Keep-alive 15s, Last-Event-ID-Reconnect. GeoHub: WS mit DashMap[Tile → broadcast 64], Viewport-Steuerung, gzip per Opt-in.

Zoom: 100%
Echtzeit: SSE + WS pro Tile
Backend · Use-Cases

Sechs Use-Cases für Orchestrierung und Daten

loom

Orchestrierung

Persistiert über den Port LoomStore / den Adapter LoomPersistence.

ingest

Signal-Pipeline

Verarbeitet eingehende Signale ins System.

scry

Sentiment

Der Referenz-Port SentimentReader / PgSentimentReader.

eval

Regressions-Harness

Kontinuierliche Qualitätsauswertung.

warden

User-Auth

JWT access/refresh, Google OAuth, IP-Binding.

whisper

HMAC-Webhooks

Dauerhafte, Exactly-once-Zustellung.

Backend · Use-Cases

everythink-warden — User-Auth

warden

JWT access/refresh

Passwort-Hashing (bcrypt), rotierende JWT access/refresh, Google OAuth, Sitzungen mit IP-Binding zur Anomalie-Erkennung.

/api/v1/auth/*

register · login · refresh · me · google · sessions

Die User-JWT-Grenze für Console + Atlas-WS. Nach einmaligem Sign-in unter /auth wird der Token in localStorage('everythink:auth') geschrieben.

Zoom: 100%
Warden: Auth-Flow
Backend · Use-Cases

everythink-whisper — signierte Webhooks und dauerhafte Zustellung

whisper

HMAC-signierte Webhooks

Zustellungs-Worker mit dem Port WhisperStore / dem Adapter PgWhisperStore. HMAC-Signatur zur Payload-Verifikation beim Empfänger.

jobs

Dauerhafte Queue in Postgres

Exponentielle Retries, Exactly-once-Semantik, Dead-Letter-Queue für dauerhafte Fehler.

Zoom: 100%
Whisper: Webhook-Zustellfluss
Backend · Adapter

A2A (Protokoll) und Courier (E-Mail)

everythink-a2a

Google-A2A-Protokoll

JSON-RPC über HTTP mit Agent-Task-Envelope, Status-Polling und Ergebnisabruf. Ermöglicht einer Sister, out-of-process zu ziehen, ohne die Aufrufer zu ändern.

everythink-courier

Transaktionale E-Mail

Brevo-Adapter oder ein Logging-No-op. Template-Rendering + Zustellverfolgung für Systembenachrichtigungen.

Zoom: 100%
Adapter: A2A + Courier
Backend · Clients

everythink-cli und everythink-sdk

everythink-cli

Betriebswerkzeug

new-key bootstrap-mintet Eye Keys: erzeugt ein lokales Ed25519-Paar, Fingerprint → Postgres, Klartext einmal im Speicher angezeigt, HMAC zur Auth.

everythink-sdk

Rust-SDK im Workspace

backend/crates/everythink-sdk: an everythink-core gekoppelt, hängt nur von core ab (ZERO I/O), für Domänen-Konsumenten.

Zoom: 100%
Clients: CLI + SDK
Backend · Invarianten

Sechs Invarianten, die nie verletzt werden

1

Normalisierte Wahrscheinlichkeiten

An genau einem Ort: everythink-oracle::ensemble. sum(prob) ≈ 1.0, Szenarien absteigend sortiert, Entropie in Nats.

2

Eye-Key-Klartext berührt nie die Festplatte

Nur HMAC + Fingerprint gehen nach Postgres. Der Klartext wird einmal angezeigt, im Speicher.

3

Sisters schreiben nie nach Postgres

Sie geben SisterOutput zurück; der Loom persistiert. Eine klare Trennung von Generierung und Speicherung.

4

Reversible Migrationen

Jede .up.sql hat ihre .down.sql. just migrate-add NAME erzeugt beide.

5

AppState-Repositories Arc<dyn Trait>

Tests nutzen Mocks. Hänge vom Trait ab, nie vom konkreten Adapter.

6

Persistenz über einen Port

Nie ein konkretes Pg* außerhalb seines Adapters. Slice-eigene Ports für private Tabellen.

Zoom: 100%
Sechs Invarianten
Frontend · Next.js 16

4 Apps, 13 Pakete, eine Identität

web (:3000) · app (:3001) · admin (:3002) · mobile (Expo). Pakete: types, sdk-core + Fassaden, domain, ui, auth, api-client, telemetry, config.

Zoom: 100%
Frontend: 4 Apps + 13 Pakete
apps · Next.js 16 + Expotypes · domain · configsdk-core + Fassadenui · auth · api-client · telemetry
Frontend · C4-Ebene 1

Vier Oberflächen, ein Backend, drei Akteure

Akteure: Endnutzer (Gast → authentifiziert) · Entwickler (Eye-Key) · Admin/Betreiber (Staff). Oberflächen: web/app/admin/mobile. Backend-API (REST + SSE unter /api/v1).

Zoom: 100%
C4-Kontext
Frontend · C4-Ebene 2

Container — das komplette Monorepo

4 Apps + SDK-Schicht (6 Fassaden) + Services (4) + Designsystem + Tooling + types (Leaf). Nutze den Zoom zum Erkunden.

Zoom: 100%
C4-Container: komplettes Monorepo
Frontend · Apps

web, app, admin, mobile — eine pro Zielgruppe

Zoom: 100%
Die 4 Apps
Frontend · SDK

Sechs Fassaden, ein Core, null Endpoints im Core

sdk-core (HttpClient, consumeSSE, TokenProvider) · sdk-guest · sdk-auth · sdk-atlas · sdk-eye · sdk-admin.

Zoom: 100%
SDK-Schicht: Fassaden mit Trust-Scoping
Frontend · Pakete

Anwendungsservices, UI und Build-Time

domain (Mapper) · telemetry (Outbox) · api-client (Legacy) · auth (NextAuth v5 + RBAC) · ui (Kit + Tokens) · config (ESLint-Presets) · types (Zod, Leaf).

Zoom: 100%
Services + Design + Tooling
Frontend · SDK

sdk-core kennt das WIE, nie das WAS

Endpoints leben NUR in den Fassaden; sdk-core validiert jede Antwort mit Zod gegen @everythink/types; ein SdkError-Baum mit ContractViolation bei Drift.

Zoom: 100%
SDK-Fassaden: Endpoints nur in Fassaden
Frontend · FSD + MVVM

Feature-Sliced Design + MVVM — Imports fließen nach unten

Screen (View) → View-Model-Hook → feature.repository.ts (DIE einzige Tür zum SDK). ESLint-Grenze no-restricted-imports (INV-1). FSD-Schichten: shared → entities → features → widgets → app.

Zoom: 100%
FSD + MVVM: Repository-Grenze
Frontend · Identität

Ein Login, ein Origin, vier Oberflächen

apps/web /auth (ein Origin) → httpOnly-Cookie 'everythink_at' → Token im Speicher + localStorage-Seed → EverythinkAuthGuard + resolveMe (GET /api/v1/auth/me) → rollenbasiertes Gate.

Zoom: 100%
Gemeinsames Sign-in
Frontend · Identität

can(role, action) — explizite Matrix, keine Vererbung

3 Schichten: (1) auth.ts pro App mit allowedRoles → (2) Middleware → (3) can() in der UI + Server-Actions. Spiegelt everythink_core::rbac aus dem Backend.

Zoom: 100%
Frontend-RBAC
Frontend · UI

Ein Stylesheet, semantische Tokens, Tailwind v4

Eine einzige Source of Truth für das Design: CSS-Tokens in :root, semantisches Mapping über @theme (Tailwind v4) und NativeWind für Mobile mit gespiegelten Tokens. Die Apps konsumieren semantische Komponenten (bg-accent, text-foreground, font-display/mono), nie rohe Hex-Werte. Cosmic-Purple-Palette: --gold: #d9ab5c, --violet: #9d7df5, --emerald: #10B981.

Zoom: 100%
UI/Theme-Architektur: Tokens → Tailwind → Komponenten
:root · CSS Custom Properties@theme · semantisches Tailwind v4@everythink/ui · Komponenten-KitMobile · gespiegeltes NativeWind
Frontend · Typen

Zod an der Netzwerkgrenze — ein einziger Vertrag

Wire-Typen sind genau einmal in @everythink/types mit Zod definiert. Das SDK validiert jede Backend-Antwort (z.parse(response)); eine ungültige Payload wirft ApiError, niemals einen Crash. Komponenten sehen nie rohes JSON: *.repository.ts parst, @everythink/domain mappt DTO → Modell, und das View-Model exponiert typisierten Zustand an die View.

Zoom: 100%
Zod-Validierungsgrenze: API → SDK → Repository → Domain → View-Model
Backend-API · JSONsdk-core · validiert mit Zod*.repository.ts · die einzige GrenzeApiError · typisiert, niemals ein Crash
Frontend · Mobile

apps/mobile — Expo, expo-router, NativeWind

React Native mit expo-router (dateibasiertem Routing) und NativeWind (Tailwind für RN). Das Theme-System spiegelt die Tokens des Web-Designsystems (tailwind.config.js + src/theme/index.ts). Es konsumiert sdk-guest, sdk-auth, sdk-atlas, domain und telemetry. Vom Web-CI ausgeschlossen: --filter=!@everythink/mobile.

Zoom: 100%
Struktur der Mobile-App: Expo + NativeWind + Theme
expo-router · dateibasiertes RoutingNativeWind · Tailwind RNsrc/theme · gespiegelte TokensCI · vom Web-Turbo ausgeschlossen
Frontend · Regeln

Vier mechanisch erzwungene Regeln

Regeln, die ESLint + TypeScript verifizieren, keine Konventionen: (1) INV-1: nur *.repository.ts importiert ein SDK (no-restricted-imports); (2) FSD-Schichten: Imports fließen nach UNTEN (shared → entities → features → widgets → app), cross-feature nur über den öffentlichen Barrel; (3) Gemeinsames Sign-in: web + app teilen localStorage('everythink:auth') + resolveMe(); (4) 3-Schichten-RBAC: auth.ts allowedRoles → Middleware → can(role, action) in UI + Server-Actions.

Zoom: 100%
FSD-Schichten + INV-1 + Sign-in + RBAC
INV-1 · nur repository.ts importiert ein SDKFSD · Imports nach UNTENSign-in · localStorage + resolveMeRBAC · 3 Schichten, keine Vererbung
Deploy · docker-compose.prod.yml

7 Dienste, TLS am ALB, Secrets in .env

ALB → nginx :80 → api/web/app/admin + postgres + dragonfly. Ein einziges Postgres für alles (TimescaleDB pg17 + pgvector). Dragonfly für Cache, Jobs und SSE-Fan-out.

TLS am AWS-ALB direktes Preprod-Deployment CI/CD 2-Stufen
api · Migrationen beim Startweb · Next.js standalonepostgres · pg17 + pgvectorapp/admin · statisch, distroless
Deploy · Stack

docker-compose.prod.yml — der komplette Stack

ALB (TLS) → nginx :80 → api (:18081, Migrationen beim Start) · web (Next standalone) · app/admin (statisch distroless) · postgres (timescale/timescaledb-ha:pg17 + pgvector) · dragonfly (Redis-kompatibel). 7 Dienste: postgres · dragonfly · api · web · app · admin · nginx.

Zoom: 100%
Produktions-Stack · 7 Dienste
postgres · timescaledb-ha:pg17 + pgvectordragonfly · Redis-kompatibelapi · Migrationen beim Startweb · Next.js standaloneapp/admin · statisch distroless
Deploy · Netzwerk

nginx als einziger Entry Point

nginx :80 ist der einzige interne Entry Point. Er routet /api/v1/* → api:18081, / → web:3000, /app/* → statisch, /admin/* → statisch. web spricht mit api über EVERYTHINK_API_INTERNAL_URL (http://api:18081). api hängt von postgres und dragonfly ab mit condition: service_healthy.

Zoom: 100%
nginx-Routing-Diagramm
nginx · einziger Entry Pointweb → api · INTERNAL_URLHealth-Checks · service_healthy
Deploy · Secrets

backend/.env — der einzige Ort für Secrets

docker-compose.prod.yml mountet backend/.env via env_file in die Dienste api und web. api hält alle Secrets (JWT_SECRET, EYE_KEY_HMAC_SECRET, GOOGLE_CLIENT_ID, BREVO_API_KEY). web erhält nur NEXT_PUBLIC_*-Variablen — es hält niemals BREVO_API_KEY. app/admin sind statisch distroless ohne Secrets im Build.

Zoom: 100%
Diagramm der Secrets-Grenze
api · alle Secretsweb · nur NEXT_PUBLIC_*Regel · web hält NICHT Brevo
Deploy · Ablauf

Direktes Preprod vs. das CI/CD-Gate

Zwei Deploy-Pfade: Preprod wird direkt aus dem Working Tree deployt (ohne Umweg über main); Prod verlangt einen Merge nach main und das Integritäts-Gate. Die Regel ist kritisch: das Deploy-Workflow NICHT für Preprod verwenden, denn es pullt :latest von main und überschreibt das direkte Deployment.

Zoom: 100%
Deploy-Fluss: Preprod vs. Prod
preprod · Working Tree → Skriptprod · main → :latest → WorkflowRegel · KEIN Deploy-Workflow für Preprod
CI/CD · GitHub Actions

affected bei PRs, Integrität auf main

Eine 2-stufige Pipeline: Die PR-Stufe läuft nur das Betroffene (Backend: ci-affected-crates.sh; Frontend: turbo --affected), die main-Stufe läuft die volle Integrität (komplettes Backend + Frontend/Mobile + E2E + Security). main bleibt grün und deploybar.

Zoom: 100%
CI/CD · 2-Stufen-Pipeline
just ci · fmt · lint · check · testpnpm ci · turbo lint · typecheck · buildmain-Integrität · full + E2E + Security
Roadmap · 🔵 Nicht implementiert

Föderierte self-hosted Nodes · BYOK · DAO pro Netzwerk

Roadmap-Richtung für v2. Keines der Folgenden ist eine existierende Fähigkeit. Ablauf: Der Betreiber erzeugt ein lokales Ed25519-Paar → nur der Fingerprint geht an den Controller (BYOK) → self-hosted Node → Ledger-Anchoring → Föderation ausschließlich über öffentliche Projektionen → Netzwerk-DAO.

Zoom: 100%
Roadmap v2: self-hosted · BYOK · DAO
Roadmap · Phasen

Fünf Phasen Richtung v2

PhaseElementHängt ab vonDeliverable
1BYOKcrate everythink-byok · Tabelle node_keys · Ed25519-Identität + Webhooks · Controller hält nur Fingerprints
2Ledger-AnchoringPhase 1crate everythink-anchor · Tabelle anchor_commitments · Notarisierungs-Job · Chain = Entscheidung des Betreibers
3Föderierte self-hosted NodesPhasen 1–2Node-Docker-Image (postgres, dragonfly, api, web, app, admin, nginx) · Föderationsprotokoll
4DAO pro NetzwerkPhase 2crate everythink-dao · network_proposals/network_votes/provenance_log append-only
5Wallet + Governancecrate everythink-wallet · wallets/network_memberships · Personas Employee/Entrepreneur/Self-Employed

Jede Phase: eine .up.sql + .down.sql-Migration, ein Offline-Refresh des .sqlx-Caches, TDD (80%+), grünes just ci. Die Struktur der Organisationstypen ist implementiert (5-wertiges OrgKind, DB-CHECK, Onboarding von 7 Rechtsformen).

Roadmap · Anchoring

Referenzarchitektur der Kandidaten-Chain

Architektur-Referenz für das Notarisieren von Postgres-Ledger-Hash-Commitments: Solana v0.8.13 (Yakovenko) — PoH als kryptografische Uhr, PoS-Konsens mit Bonds/Slashing, PoRep für Storage. Die Chain-Auswahl ist eine explizite Entscheidung des Betreibers; dies ist eine Referenz, keine Implementierung.

Zoom: 100%
Engines der Kandidaten-Chain
PoH · überprüfbarer ZeitschrittPoS · Bonds · Slashing · ⅔-SupermajoritätPoRep · Streaming · StorageLeader → Verifier · Bestätigungen = Stimmen~710k TPS · Finalität unter einer SekundeCAP: Konsistenz vor Verfügbarkeit
Abschluss

Everythink Studio — vollständige Architektur

Von der Vision bis zur Implementierung: Topologie und die HAI-Engine (in Produktion seit 2016), ein Rust-Backend mit 17 hexagonalen Crates, ein Next.js-16-Frontend mit FSD/MVVM, Postgres + pgvector, 2-stufiges CI/CD, Deployment. Grenznotiz: die Forecasting-Engine (sisters/oracle/loom) ist ein anderes Produkt desselben Autors, im Workspace.

Rust 2026 · 17 Crates Postgres + pgvector · sqlx Next.js 16 · pnpm · FSD 3 Auth-Regime · RBAC can() World Monitor · Geo-Signale CI/CD 2-stufig · Preprod direkt
Initialversion · progressiver Download Dieses Dokument ist die Initialversion der Architektur und enthält nicht die vollständige Architektur. Die Unvollständigkeit ist erwartbar und Teil des Designs: Die Architektur wird progressiv heruntergeladen — aus der Vorlage aap-human-agent, dem Paket mit Interaktionsmustern zwischen Mensch und Agent (Eskalation, Delegation, Proxy-Agenten, Autoritätsgrenzen). Die Agenten führen den Download aus; die Autorität bleibt beim Menschen.

Everythink Studio · Carlos Matias Baglieri 2026 · docs/architecture.md · backend/README.md · frontend/README.md · COLLABORATION.md · cto.md

Everythink Studio · Architektur
1 / 64 ← →