Stand: 2026-07-11. Diese Datei hält die strategische Entwicklungsrichtung fest, damit homebase gezielt zum gemeinsamen Gedächtnis des KI-Teams (Claude, Codex, Gemini, Kimi, lokale LLMs via BACH/Buddha) ausgebaut wird. Grundlage: Vergleichsanalyse der drei Shared-Memory-Ansätze (BACH-Shared-Memory, USMC, homebase) vom 2026-06-17.
Leitentscheidung: homebase ist der Zugangsträger (MCP = zero-setup, in jeder Session jedes MCP-Agenten sofort verfügbar, immun gegen das Silo-Problem der
.md-Hubs). Damit es ein echtes Team-Gedächtnis wird, fehlen ihm aber drei Dinge, die USMC/BACH schon haben: Provenance, Concurrency-Sicherheit und automatisches Vergessen. Die nachfolgenden Ziele schließen diese Lücken — in Prioritätsreihenfolge.
-
Provenance /
agent_idin allen Memory-Tabellen. Aktuell hatmemory.py/knowledge.py/state.pykeine Autor-Spalte → man weiß nicht, welcher Agent was geschrieben hat. Für ein geteiltes Gedächtnis ist „wer sagt das" ein Kernmerkmal. Schema umagent_id TEXTerweitern, in jedem*_store/*_setsetzen, in*_query/*_contextfilterbar machen. → Vorbild: USMC (UNIQUE(agent_id, category, key)), BACHshared_memory_*(agent_id,namespace,visibility). Erledigt 2026-06-18:hb_mem_*,hb_kb_*undhb_state_*schreiben und filternagent_id;state_memorynutzt(agent_id, key)als eindeutige Kombination und migriert ältere Alpha-Datenbanken automatisch. -
Concurrency-Härtung in
storage.py.sqlite3.connect(path)läuft ohne WAL und ohnebusy_timeout→ bei zwei gleichzeitig schreibenden Agenten drohen „database is locked"-Fehler. Setzen:PRAGMA journal_mode=WAL;,connect(..., timeout=…)bzw.PRAGMA busy_timeout. Gilt für alle acht~/.homebase/*.db. Erledigt 2026-06-18:connect_db()setzttimeout=30.0,PRAGMA journal_mode=WAL,PRAGMA busy_timeout=30000undPRAGMA foreign_keys=ON. -
hb_memauf USMC als Backend umstellen, statt eigener Reimplementierung. DieKONZEPT.mdnennt USMC als Quelle, der Code reimplementiert die Memory aber selbst. Stattdessenusmc.USMCClientals Storage-Engine einbinden → erbt automatischagent_id, Confidence-Merge,get_changes_since()(Delta-Sync) und die 50 grünen Tests. Homebase liefert dann nur noch den MCP-Wrapper. Das ist die saubere Schichtung: USMC = Engine, homebase = MCP-Frontend. → Voraussetzung: USMC vorher als Dependency paketieren (PyPI-Publish oder vendored).
-
Automatisches Decay / Konsolidierung (
hb_mem_consolidate) — Basis erledigt 2026-06-27. Neues Tool: senkt Confidence pro Eintrag umdecayund prunt Einträge untermin_confidence(dry_run-Preview + Apply, agent-filterbar, getestet). Damit fallen Einträge mit sinkender Confidence von selbst heraus → wirkt dem „unsichtbaren Overflow" entgegen. Offen (P2-Ausbau): zeit-/altersbasiertes Decay und Facts→Lessons-Verdichtung (Vorbild BACHsystem/hub/consolidation.py). -
Lifecycle-Verdrahtung — der eigentliche Grund, warum heute alle drei DBs leer sind. Kein Tool nützt, wenn es nicht automatisch befüllt/gelesen wird. Drei Hooks definieren (clientseitig dokumentieren, da ein MCP-Server nicht selbst proaktiv injizieren kann): - [ ] Auto-Load beim Session-Start (
hb_mem_contextfrüh aufrufen) — in allen Session-Typen, nicht nur Home (sonst lebt das Silo-Problem weiter). - [ ] Write beim Session-Ende (Facts/Lessons/Handoff automatisch ablegen). - [ ] Decay periodisch (Cron / Session-Ende). → Für Claude Code viaSessionStart/Stop-Hooks; für BACH via Startup/Shutdown-Handler. -
FTS5 statt LIKE in
hb_kb_searchundhb_mem_query(2026-06-27). External-Content-FTS5-Index + Sync-Trigger instorage.setup_fts(), Query-Builderstorage.fts_match_query()(Prefix + implizites AND), automatischer LIKE-Fallback wenn die SQLite-Build kein FTS5 hat. Tests intest_registry.py. Offen bleibt nur die optionale semantische/Embedding-Suche (Stretch-Goal). -
hb_mem_mergeecht implementiert (2026-06-27).dry_run=falseführt Duplikatgruppen (content+category+agent_id) confidence-basiert zusammen: Survivor = höchste Confidence, redundante Zeilen gelöscht; idempotent. Unit-Test intest_registry.py. (Decay/Konsolidierung bleibt offen, P1.)
Antwort auf die Frage „die Injektoren als Erinnerungshilfen — sollten die nach homebase?": Ja, die Logik — aber mit einer wichtigen Architektur-Nuance. Ein MCP-Server kann nicht von sich aus in den Prompt eines Agenten schreiben; er wird nur auf Anfrage aufgerufen. homebase hostet daher die Auswahllogik („welche Erinnerung ist bei diesem Trigger relevant?"), das eigentliche Einschieben macht ein clientseitiger Hook (Claude Code
UserPromptSubmit-Hook bzw. BACHs Wrapper).
Strategie-Anschluss (2026-06-17): Dies ist Cluster 8 „Kognitive Steuerung (Injektoren)" aus
.OS/sovereign-private/_concepts/BACH_HANDLER_CLUSTER_UND_ARCHITEKTUR.md— der einzige Handler-Cluster ohne Modul-Heimat in der dortigen Deckungsanalyse/Bauplan. Die Extraktion folgt der etablierten Linie „aus BACH generieren, nicht handpflegen" (exporter.py+dist_type, Richtung BACH→GEN mit Auto-Regen), damit BACH Quelle der Wahrheit bleibt und sich das Modul mit BACH mitentwickelt. Diesen Punkt zugleich in der dortigen Substanz-Matrix nachtragen (aktuell fehlt Cluster 8 als Zeile).
-
Injektoren aus BACH als eigenständiges Modul generieren (Arbeitsname z. B.
mnemo/recall-injectors), via BACHexporter.py/skill_export.py(BACH→GEN, Auto-Regen) — NICHT als handgepflegte Parallelkopie. Quelle:BACH/system/tools/injectors.py,hub/reminder_injector.py,hub/meta_feedback_injector.py. Enthält: StrategyInjector (Trigger-Wort → Hinweis), ContextInjector (Auto-Kontext + Cooldown), TimeInjector (Zeit-Updates), BetweenInjector (Post-Task-Reminder), ReminderInjector (benutzerdefiniert), MetaFeedbackInjector (LLM-Tick-Korrektur). Zero-Dependency halten (wie USMC). -
hb_inject_Modul in homebase:hb_inject_relevant(prompt|trigger)→ gibt passende Erinnerungen/Hinweise zurück (liest aushb_mem).hb_inject_reminder_add,hb_inject_list. Das Modul liefert Injektionskandidaten; es injiziert nicht selbst. -
Referenz-Hook ausliefern, der
hb_inject_relevantbei jedem Prompt aufruft und das Ergebnis voranstellt (ein Beispiel-Hook für Claude Code, einer für BACH). Erst damit wird aus „abrufbarer Memory" eine echte „Erinnerungshilfe".
- Phase-2-Module:
hb_auto_(llmauto, Backend-Abstraktion),hb_conn_(connectors aus BACH — bereits als.MODULES/.CONNECTORS/connectorsv1.0.0 extrahiert, einbinden statt neu bauen),hb_plug_(Plugin-System). - Phase 3: npm-Publish, ControlCenter-Integration, Status-Dashboard-Modul.
- Modul-Unit-Tests:
tests/test_module_contracts.pydeckt den Factory-/Tool-Vertrag aller elf Module ab und enthält wiederholbare Start-Smokes sowie Legacy- Migrations-Smokes für alle persistenten Module (2026-08-13). - Doku-Korrektheit: KONZEPT.md trennt Code-Realität und Zielbild wieder explizit:
FTS5 und
hb_mem_mergesind umgesetzt, semantische/Embedding-Suche bleibt Stretch-Goal und die Engine-Seams nennen bundled-only-Folgearbeit statt fertige Canonical-Seams. - Versions-Sync prüfen (package.json / pyproject.toml / server.json /
__version__). Erledigt 2026-07-11:tests/test_metadata.pygleicht npm-, PEP-440-, MCP-Registry- und Python-Runtime-Versionen ab.
Auslöser: Prüfung von 14
.MODULES-Kandidaten gegen homebase. Befund: Die acht Alpha-Module sind eigenständige credential-freie Reimplementierungen (verifiziert inmodules/routing.py,modules/connectors.py— kein Import der realen.MODULES-Pakete). Es gibt also zwei Arbeitslinien: (A) reale.MODULES-Engines hinter die bestehenden Namespaces ziehen, (B) neue, bisher nicht im KONZEPT geführte Kandidaten bewerten/integrieren. Architektur-Entscheidung (Kandidat/abgelehnt) ist inKONZEPT.mdin der Modul-Tabelle nachgetragen — hier stehen nur die ausführbaren Aufgaben.
A — Bestehende Namespaces: Stub → reale .MODULES-Engine (Schichtung „Engine = .MODULES, homebase = MCP-Wrapper")
-
hb_route_auf.MODULES/.ORCHESTRATION/clutchumstellen. Aktuell reine Heuristik inrouting.py(keinclutch-Import). clutch als optionale Routing-Engine einbinden (Epsilon-Greedy, Road-Types, Auto-Learning, Budget-Zonen) — credential-frei bleiben, Provider-Calls hinter expliziter Konfiguration. Knüpft an P0 (USMC-Schichtung) und P3 an. Geprüft 2026-07-04 (Ticket T-20260704-01):Fahrer.kuppeln()(nachstrecke_analysieren()) ist tatsächlich credential-frei und DB-gestützt (clutch.db, kein Netzwerk-Call) — grundsätzlich seam-fähig wie Gardener/Rinnsal. Zurückgestellt, weilFahrer.__init__eineconfig_dirmit Getriebe-/Kupplungs-/Fahrschule-Konfiguration voraussetzt (deutlich mehr Vorarbeit als die anderen beiden Seams). Bleibt bundled-only, Server loggt das explizit bei[engines].mode=canonical. Folgearbeit, kein neues Ticket nötig — hier weiterführen. Nachtrag 2026-08-13 (hb-mode, Phase 6 P3): Seit 0.1.0-alpha.21 gilt der Modus-Vertrag (MODE-CONTRACT.md) — beimode=canonicalund unerreichbarer Engine wirft die betroffene Tool-Familie einen Fehler statt still die bundled-DB zu bedienen.hb_route_*undhb_kb_*sind davon nicht erfasst, weil sie_engine_modegar nicht lesen: Eincanonical-Wunsch für sie ist ein No-op, sichtbar nur im Startlog. Sie sind damit die letzten beiden offenen Seams; wer sie baut, hängt sie an denselben Fail-closed-Guard (_require_engine()-Muster ingarden.py/memory.py/state.py). -
engine_summary()den aufgelösten Zustand melden lassen, nicht die Konfiguration. Liest heute nurconfig.engine_settings()und loggt dahergarden=canonical, auch wenn die Engine unerreichbar ist und alle Aufrufe fehlschlagen; die Wahrheit steht nur in der danebenstehendenERROR-Zeile. Bekannte Kante, dokumentiert inMODE-CONTRACT.md§5. Bewusst nicht mit dem Modus-Vertrag zusammen geändert (hätte den Startbericht umgebaut). -
Task-DB-Auflösung an taskplans Konfigurationsdatei angleichen. Seit 0.1.0-alpha.22 löst der Seam
[state].task_db_path>$TASKPLAN_DB>$SCANNER_TASKS_DB(Legacy) >~/.taskplan/taskplan.dbauf. taskplan selbst (taskplan.client.get_default_db_path()) fragt dazwischen noch seine eigene Konfigurationsdatei (configured_db_path()). Auf einem Host, dessen taskplan-Config auf eine andere DB zeigt, laufen beide Auflösungen also wieder auseinander — genau die Klasse Fehler, gegen dieMODE-CONTRACT.mdgebaut ist. Sauber wäre, taskplans Auflösung zu übernehmen statt sie nachzubauen (z. B.get_default_db_path()aufrufen, wenn weder Config-Wert noch ENV gesetzt sind) — bewusst nicht Teil des Pfad-Fixes T-20260814-01, weil das den Seam von einer weiteren taskplan-Internen abhängig macht. -
hb_swarm_auf.MODULES/.ORCHESTRATION/swarm_aiumstellen. Reale Schwarm-Patterns (parallel/consensus/hierarchy/stigmergy) statt Alpha-Stub; Backend konfigurierbar (Ollama-default). -
hb_api_auf.MODULES/.TOOLS/ApiProberumstellen. Reale Probe-/Discovery-Engine (OpenAPI, Wordlist, HATEOAS) hinter den Namespace; stdlib-only, daher unkritisch. -
hb_conn_auf.MODULES/.CONNECTORS/connectorsv1.0.0 binden (bereits in P3 vermerkt — hier als A-Linie präzisiert:connectors.pyist Alpha-Stub ohne Netzwerk; v1.0.0 einbinden statt neu bauen). -
hb_auto_auf.MODULES/.ORCHESTRATION/llmautomit Backend-Abstraktion (Dublette zu P3/.MCP/TODO; hier nur Querverweis, nicht erneut auflisten). -
hb_state_auf reale.AI/.OS/rinnsal-Engine binden. Erledigt 2026-07-04 (Ticket T-20260704-01):hb_state_task_*seam-fähig über[engines.state].mode = "canonical"→ echterinnsal.tasks.client.TaskClient(rinnsal_tasks-Tabelle).hb_state_mem_*/hb_state_dispatchbleiben bewusst bundled (war nicht Teil des Auftrags). Live-Roundtrip gegen die reale Engine verifiziert. Details: KONZEPT.md „Engine Seams". -
hb_garden_auf reale.AI/.OS/gardener-Engine binden (find/get/put/run, eineeverything-Tabelle + FTS5). Erledigt 2026-07-04 (Ticket T-20260704-01):[engines.garden].mode = "canonical"→ echtegardener.Gardener;allow_run-Gate bleibt bestehen. Live-Roundtrip verifiziert. Gardeners FTS5 als Substrat fürhb_kb_/hb_mem_querybleibt offen (siehehb_mem_/hb_kb_Bundled-only-Vermerk in KONZEPT.md „Engine Seams" — Confidence/Tags-Schema passt nicht 1:1).
Bezugsweg + Reihenfolge (Entscheidung 2026-06-27): GitHub-first, PyPI als Endschritt. Die realen Engines werden zunächst per Install-Zeit-Git-Fetch bezogen — für ALLE Nutzer, nicht nur Eigenbetrieb (
pip install "rinnsal @ git+https://…@<tag>"). Jedes A-Modul bekommt eine Seam (reale Engine wenn importierbar, sonst eingebaute Impl.). Reihenfolge: erst bauen, dann publishen — Seams + Git-Install zuerst, lauffähig machen; PyPI ist der letzte, koordinierte Schritt, bei dem ALLE Engine-Pakete gemeinsam nachziehen (rinnsal,ellmos-gardener, clutch, swarm_ai, USMC), weil PyPI keine git-URL-Deps in publizierten Metadaten erlaubt (All-or-nothing). PyPI ist damit nicht gating. Details:KONZEPT.md→ „Modul-Bezug / Distribution". (Ersetzt die frühere P0-Annahme „erst PyPI-paketieren".)
Hinweis Skill-/Config-Infrastruktur (2026-06-27): Die geprüften Infrastruktur-Skills (
agent-config-sync,agents-bridge,ai-portable-setup,mcp-config-sync,skill-explorer,system-onboarding) sind ControlCenter-Domäne (Skill-/MCP-/Config-Erkennung und -Sync), nicht homebase. Der gewünschte Skill-Finder wurde dort in ROADMAP/TODO ergänzt. homebase bleibt die kognitive Backend-Schicht (Memory/Routing/Wissen/State).
-
ellmos-agent-bridge→ neuer Namespacehb_bridge_/ Delegations-Rückgrat (HOCH). Sauberer stdlib-only BACH-Extrakt (Partner-Registry,ComplexityScorer0–100 → Modell- + Partner-Empfehlung, Delegation, Health-Checks). Starke Überlappung mithb_route_undhb_swarm_: kann das Partner-/Delegations-Backbone liefern, das homebase für echtes Multi-Agent-Routing fehlt. Prüfen, obhb_route_darauf aufsetzt statt eigener Heuristik. -
llm-note→ Namespacehb_note_(MITTEL-HOCH). Local-first Notiz-Engine (SQLite Thought-Log + Notebooks, brainstorm→task), stdlib-only, ebenfalls BACH-Extrakt. Ergänzthb_mem_/hb_kb_um die „flüchtige Gedanke/Logbuch"-Ebene. Abgrenzung zuhb_mem_definieren (Note = unkonsolidiert, Memory = konsolidiert), Doppelspeicherung vermeiden. -
lock-master→ Namespacehb_lock_(MITTEL). Portables Multi-Agent-Datei-Lock-System (zero-dep,LOCK*.txt, Team-Locks, Scan/Prune). homebase ist als Team-Gedächtnis gedacht (P0 Concurrency) —hb_lock_check/hb_lock_acquire/hb_lock_releasewürde LLMs erlauben, Schreibkollisionen vorhb_mem_*-Writes zu koordinieren. Mit dem systemweiten LOCK-System (_scripts/LOCK-SYSTEM.md) abstimmen, kein zweiter Standard. -
build-your-users-mind→ Namespacehb_mind_(MITTEL, an P2-Injektoren koppeln). ToM/Feedback-Präkognition (Vorhersage der User-Reaktion + Konfidenz, Eskalation bei 🔴). Architektur-Nuance identisch zu P2: homebase hostet die Auswahl-/Vorhersagelogik (hb_mind_predict, liest aushb_mem_), das Einschieben macht ein clientseitiger Hook. Gemeinsam mit demhb_inject_-Modul (P2) entwerfen — selbe Schicht. -
ticket-master→ nur Scoring-/Routing-Logik inhb_state_task_prüfen (NIEDRIG-MITTEL). Audit 2026-08-13: ticket-master ist ein prompt-getriebener Workflow (kein importierbares Engine-Paket).prioritydeckt nur grobe Priorisierung ab;hb_route_selectkann Empfehlungen liefern, aberhb_state_task_*persistiert keinen Score oder Provider-Match. Keine inkompatible Anreicherung vorgenommen; Details:docs/TICKET-MASTER-ROUTING-AUDIT.md.
- (Dokumentations-Task) In
KONZEPT.mdfesthalten, warum diese vier nicht in homebase gehören: -ellmos-chat— backend-agnostische Chat-Runtime (ChatRuntime, Tool-Use-Loop). Ist ein Konsument von homebase-Tools, keine Engine in homebase (würde homebase importieren). -ellmos-core— FastAPI/HTMX Web-UI + Auth/RBAC (On-Prem-Suite). App/Frontend, das homebase später als Backend nutzen könnte — nicht umgekehrt. -ellmos-stack— Self-hosted Deployment-Bundle (Ollama+n8n+Rinnsal+KnowledgeDigest, docker-compose). Komposition/Deployment; homebase wäre Teil des Stacks, nicht andersherum. -open-compute— Computer-Use-Core (Perception→Action GUI-Loop). Andere Domäne als homebases kognitive Infrastruktur (Memory/Routing/Wissen). Optionales Fernzielhb_compute_, aber außerhalb des aktuellen Konzepts „Zuhause für obdachlose LLMs". Erledigt 2026-07-11:KONZEPT.mdenthält den Abschnitt „Bewusst nicht integriert" undtests/test_metadata.pyschützt die vier Abgrenzungen gegen erneutes Verschwinden.