← Zurück zu pelczer.de

baumops — Logikpläne

Lokale Baustellenintelligenz für Nachweise, Lieferketten und Abläufe, die nicht jeden Morgen neu zusammengeflickt werden müssen. Die Box steht auf der Baustelle — die Daten bleiben dort.

3Bausteine
2Köpfe · Mops & Prof
~85Wissens-Lemmas
0Pflicht-Cloud
Offline-First Lokales LLM Hybrid-RAG Datensouveränität Audit-Trail Bin da. 2026

System-Übersicht

baumops ist kein Cloud-Dienst, der zufällig auf der Baustelle läuft. Es ist ein lokales System: eine Box im Baustellennetz, die Geräte daneben, die Außenwelt nur, wenn nötig.

Prinzip

Lokal zuerst
Verarbeitung & Daten bleiben auf der Baustelle

Box

CPU-only
Ein normaler Rechner, kein Rechenzentrum

Zweck

Nachweis
Nachweise, Lieferketten, Abläufe

Status

2026
Bin da.

Die Topologie — wer steht wo

graph TB subgraph SITE["Baustelle (eigenes Netz)"] BOX["Mops-Box
lokaler Server, CPU-only"] D1["iPad — Polier"] D2["iPhone — Bauleiter"] D3["weitere Geräte"] D1 --- BOX D2 --- BOX D3 --- BOX end subgraph OUT["Außenwelt (nur bei Bedarf)"] CLOUD["mops.baumops.com
Cloud"] OFFICE["Büro / Kalkulation"] AUTH["Behörde / Auftraggeber"] SUP["Lieferant"] end BOX -.->|"Sync, wenn Netz da ist"| CLOUD BOX -->|"Nachweise & Exporte"| OFFICE OFFICE --> AUTH BOX -->|"Lieferketten"| SUP style BOX fill:#1f4f4e,stroke:#2dd4bf,color:#fff style D1 fill:#1f3a5f,stroke:#58a6ff,color:#fff style D2 fill:#1f3a5f,stroke:#58a6ff,color:#fff style D3 fill:#1f3a5f,stroke:#58a6ff,color:#fff style CLOUD fill:#30363d,stroke:#8b949e,color:#c9d1d9 style OFFICE fill:#4f3a1f,stroke:#d29922,color:#fff style AUTH fill:#3b1f5e,stroke:#bc8cff,color:#fff style SUP fill:#1f4f3a,stroke:#56d364,color:#fff

Komponenten

baumops besteht aus drei Bausteinen, die zusammenspielen — und einem Backend, das in der Box wohnt.

Baustein 1

Mops-Box
Hardware im Baustellennetz · Ubuntu · :8080

Baustein 2

Construction Grid
iOS-App · Offline-First · Core Data

Baustein 3

mops.baumops
Cloud · optionaler Sync

In der Box

mops-api
FastAPI · RAG · Mops & Prof

Wer macht was

graph LR subgraph B["Mops-Box"] API["mops-api
FastAPI"] M["Mops
llama3.2 · lokal"] P["Prof
Claude Sonnet · Eskalation"] Q[("Qdrant
Wissensbasis")] API --- M API --- P API --- Q end APP["Construction Grid
iOS-App"] CLOUD["mops.baumops.com"] APP -->|"Fragen, Klassifikation,
Geländeberechnung"| API API -.->|"Sync optional"| CLOUD style API fill:#1f4f4e,stroke:#2dd4bf,color:#fff style M fill:#1f4f3a,stroke:#56d364,color:#fff style P fill:#5f3a1f,stroke:#f0883e,color:#fff style Q fill:#1f3a4f,stroke:#79c0ff,color:#fff style APP fill:#1f3a5f,stroke:#58a6ff,color:#fff style CLOUD fill:#30363d,stroke:#8b949e,color:#c9d1d9

Die Mops-Box von innen

graph TB HW["Rechner
Ubuntu 24.04 · i5 · 16 GB · CPU-only"] HW --> Uvicorn["uvicorn :8080"] Uvicorn --> Endpoints["mops-api Endpoints"] Endpoints --> Health["/health · /health/detailed"] Endpoints --> Chat["/chat"] Endpoints --> Classify["/classify
File-Klassifikation"] Endpoints --> Admin["/admin-ui
Echo-Freigabe"] Uvicorn --> Ollama["Ollama
llama3.2:3b"] Uvicorn --> Qdrant["Qdrant
Vektor-DB"] style HW fill:#1f4f4e,stroke:#2dd4bf,color:#fff style Endpoints fill:#1f3a5f,stroke:#58a6ff,color:#fff style Ollama fill:#1f4f3a,stroke:#56d364,color:#fff style Qdrant fill:#1f3a4f,stroke:#79c0ff,color:#fff

Offline & Datensouveränität

Der Keller hat kein Netz, der Rohbau erst recht nicht. baumops ist nicht „auch offline" — es ist zuerst offline. Die Cloud ist Kür, nicht Pflicht.

Was passiert, wenn das Internet weg ist?

flowchart TD Work["Arbeit auf der Baustelle"] --> App["Construction Grid
schreibt lokal (Core Data)"] App --> Net{"Internet da?"} Net -->|"Nein"| Local["Alles läuft weiter
App + Mops-Box im eigenen Netz"] Net -->|"Ja"| Sync["zusätzlich: Sync zur Cloud"] Local --> Later["sobald Netz da ist"] Later --> Sync Sync --> Done["Stand abgeglichen"] style Local fill:#238636,stroke:#56d364,color:#fff style Net fill:#9e6a03,stroke:#d29922,color:#fff style Done fill:#1f6feb,stroke:#58a6ff,color:#fff

Wo die Daten liegen — und wo nicht

flowchart LR subgraph Drin["bleibt auf der Baustelle"] G1["Pläne & Aufmaße"] G2["Kalkulation & Preise"] G3["Bau-Fragen an Mops"] end subgraph Raus["verlässt sie nur bewusst"] R1["Nachweise als Export"] R2["Rechnung (XRechnung)"] R3["Cloud-Sync (optional)"] end Drin -->|"Entscheidung des Nutzers"| Raus style Drin fill:#1f4f4e,stroke:#2dd4bf,color:#fff style Raus fill:#4f3a1f,stroke:#d29922,color:#fff

Mops & Prof — zwei Köpfe

Das Backend hat zwei „Köpfe": Mops antwortet lokal und kostenlos auf der Box. Prof ist die Eskalation in die Cloud — und was Prof sagt, kann ins lokale Wissen zurückwandern.

Mops

llama3.2
lokal · Maurermeister-Persona · Standard

Prof

Sonnet
Claude · via /prof · für die harten Fragen

Memory

Echos
Prof-Antworten als pending Echos

Freigabe

Admin
approve → ins lokale Wissen

Die Lernschleife — das System wird mit jeder Frage klüger

flowchart TD Frage["Bau-Frage"] --> Wer{"/prof Prefix?"} Wer -->|"Nein"| Mops["Mops antwortet lokal
llama3.2 + RAG"] Wer -->|"Ja"| Prof["Prof antwortet
Claude Sonnet"] Mops --> User["Antwort auf der Baustelle"] Prof --> User Prof --> Echo["Antwort als pending Echo
in Qdrant gespeichert"] Echo --> Admin{"Admin-UI:
fachlich ok?"} Admin -->|"approve"| Grow["wandert ins
approved-Wissen"] Admin -->|"verwerfen"| Drop["bleibt draußen"] Grow --> Mops style Mops fill:#1f4f3a,stroke:#56d364,color:#fff style Prof fill:#5f3a1f,stroke:#f0883e,color:#fff style Grow fill:#238636,stroke:#56d364,color:#fff style Drop fill:#30363d,stroke:#8b949e,color:#c9d1d9

Wann eskaliert wird

sequenceDiagram participant U as Baustelle participant M as Mops (lokal) participant P as Prof (Cloud) U->>M: einfache Bau-Frage M-->>U: Antwort aus lokalem Wissen Note over U,M: kostenlos, offline, sofort U->>P: /prof schwierige Frage P-->>U: fundierte Antwort P->>M: Echo zur Freigabe hinterlegt Note over M,P: Prof-Wissen wird lokal nutzbar

Hybrid-RAG

Warum Mops bei DIN-Nummern und Materialcodes nicht daneben greift: die Suche kombiniert Bedeutung (Vektor) mit exakten Begriffen (Keywords).

Das Ranking, Schritt für Schritt

flowchart TD Q["Query"] --> V["MiniLM:
Query → 384-dim Vector"] V --> C["Qdrant: top_k × 4
Kandidaten via Cosine"] Q --> K["Keywords extrahieren
Stopwörter raus, ≥ 2 Zeichen"] C --> H["pro Kandidat:
Keyword-Treffer zählen"] K --> H H --> Score["Score boosten
final = min(1.0, vector + 0.15 × hits)"] Score --> Re["Re-Ranking nach Score"] Re --> Top["top_k zurück an Mops"] style V fill:#1f3a4f,stroke:#79c0ff,color:#fff style Score fill:#9e6a03,stroke:#d29922,color:#fff style Top fill:#238636,stroke:#56d364,color:#fff
Der Effekt: Chunks mit exakten Begriffen — DIN-Nummern, Material-Codes, Festigkeitsklassen — ranken höher, ohne dass rein semantische Treffer verloren gehen. Die Wissensbasis: rund 85 Lemmas, CC-BY-SA aus Wikipedia (Welle 1).

Nachweise & Lieferketten

Das eigentliche Versprechen: Arbeit, die belegbar ist. Was auf der Baustelle passiert, wird so erfasst, dass am Ende ein prüfbarer Nachweis steht — nicht ein Zettel, der morgen weg ist.

Vom Handgriff zum Beleg

flowchart LR Tun["Arbeit / Lieferung
auf der Baustelle"] --> Erfass["erfasst in der App
lokal, sofort"] Erfass --> Box["Mops-Box
verarbeitet & legt ab"] Box --> Nachweis["Nachweis
Bautagesbericht, Mangel, Aufmaß"] Box --> Kette["Lieferkette
nachvollziehbar"] Nachweis --> Export["Export:
PDF · GAEB · XRechnung"] Export --> Aussen["Büro · Auftraggeber · Behörde"] style Erfass fill:#1f3a5f,stroke:#58a6ff,color:#fff style Box fill:#1f4f4e,stroke:#2dd4bf,color:#fff style Nachweis fill:#1f4f3a,stroke:#56d364,color:#fff style Export fill:#4f3a1f,stroke:#d29922,color:#fff
Bitte prüfen: Diese Seite beschreibt baumops als Gesamtsystem aus dem Stand der öffentlichen Repos und baumops.com. Wo das Produkt schon weiter ist als die Repos (z. B. konkrete Lieferketten-Funktionen, die „5 Regeln, damit die Baustelle läuft"), sag mir Bescheid — das baue ich gern als eigenen Reiter ein.