ULTRON Control Center
Was ist das?
Dein KI-Assistent vergisst alles, sobald du das Fenster schließt: die Entscheidungen, die ihr getroffen habt, die Fehler, die ihr bereits gelöst habt, wie dein Projekt aufgebaut ist. Am nächsten Tag erklärst du ihm alles wieder.
ULTRON gibt ihm Gedächtnis. Während du arbeitest, speichert es das Wichtige auf deinem eigenen Rechner; wenn du eine neue Unterhaltung öffnest, erinnert es die KI automatisch daran. Du tust nichts: du arbeitest wie immer und dein Assistent lernt dich mit der Zeit immer besser kennen. Du entscheidest, was gespeichert wird (alles durchläuft ein Genehmigungsfach) und nichts verlässt deinen Rechner.
Lokaler Event-Sourced-Speicher (brain.db, SQLite) mit semantischem Index (Qdrant +
E5 1024d), der in jede Sitzung mittels Hooks zurückinjiziert wird — hybrider Sub-Sekunden-Recall
mit einem residenten Daemon. Außerdem: AI Router mit mehreren Anbietern, Orchestrator für
Skills/Agenten und Desktop-Cockpit (Tauri 2 + React 19). Der gesamte Zustand sind
lokale, überprüfbare Dateien. Spezifikation: docs/memory-spec.md.
Related MCP server: MCP Memory Server
Mit und ohne ULTRON
Claude Code pur | Mit ULTRON | |
Beim Öffnen einer Sitzung | Beginnt bei Null | Setzt das Projekt fort: Status, Aufgaben, Entscheidungen |
Kontext bei jedem Prompt | Den, den du schreibst | + relevante Erinnerungen automatisch abgerufen (~84 % der echten Prompts) |
Bereits gelöste Fehler | Wiederholen sich | Werden erinnert ("das haben wir schon versucht, Fehler wegen X") |
Was gespeichert wird | Nichts | Was du im Fach genehmigst (mit Prüfung jeder Änderung) |
Wo deine Daten leben | — | Auf deiner Festplatte, in Dateien, die du öffnen kannst |
Im Vergleich zu anderen Speichersystemen (Cloud-Dienste wie Mem0 und ähnliche) sind die Unterschiede konzeptionell, nicht marketingtechnisch: hier ist der Speicher 100 % lokal (ohne Konto, ohne Abonnement, ohne deinen Code an Dritte zu senden), gesteuert (die KI schlägt vor, du genehmigst; jeder Schreibvorgang hinterlässt ein Prüfereignis), ehrlich (wenn sie es nicht weiß, enthält sie sich, anstatt Füllmaterial einzuspritzen – gemessen) und offen (SQLite + Markdown + ein standardmäßiger MCP-Server, den jeder Assistent abfragen kann).
Tägliches Tutorial (Mensch + KI):
docs/TUTORIAL.md· Vollständige Spezifikation des Speichersystems:docs/memory-spec.md· Komponentenweise Installation:INSTALL.md· MIT-Lizenz.
Wie der Speicher fließt
flowchart LR
A[Prompt en Claude Code] -->|hook UserPromptSubmit| B[daemon ultron-memory<br/>E5 residente]
B --> C[(brain.db<br/>SQLite + FTS5)]
B --> D[(Qdrant<br/>E5 1024d)]
C -->|BM25| E[Fusion RRF + cross-encoder]
D -->|dense| E
E -->|pack de memorias| A
F[Fin de sesion] -->|hook Stop| G[Captura -> inbox de candidatos]
G -->|aprobacion| C
H[Cualquier cliente MCP<br/>Codex, Gemini CLI...] -->|MCP server| BReale Zahlen (gemessen, nicht simuliert)
Gemessen am realen Korpus des Maintainers (~3.300 aktive Erinnerungen) mit einem
Orakel von 29 handgelabelten Abfragen – deine Installation startet leer und die
Recall-Zahlen hängen von deinem Korpus ab. Reproduzierbar mit ultron-memory eval --golden und den
Skripten im Repo.
Metrik | Wert |
Recall@8 (handgelabeltes Orakel) | 0.82 |
MRR (der richtige Speicher, oben) | 0.95 |
Orchestrate mit heißem Daemon | ~0,5 s (vs. ~3,5 s bei kaltem Prozess) |
RAM im Ruhezustand (App / Daemon) | 36 MB / ~40 MB (1,5–3,5 GB mit geladenen Modellen) |
Echte Prompts mit Speicher bedient | 84 % (Gates kalibriert auf echtem Traffic, nicht nur golden) |
Wenn der Korpus die Antwort nicht kennt, enthält sich das System, anstatt Füllmaterial einzuspritzen – die Ehrlichkeit des Recalls ist ebenfalls gemessen (Kategorie „abstain" des eigenen Benchmarks).
Schnellstart
Vollständiges System (App + Skills + Hooks + semantischer Speicher) – der empfohlene Weg; es ist idempotent und fragt, bevor es etwas anfasst:
git clone https://github.com/SkiTemplar/ultron-control-center.git $env:USERPROFILE\.ultron
cd $env:USERPROFILE\.ultron
powershell -ExecutionPolicy Bypass -File .\install.ps1 # Linux: ./install.shKomponentenweise Installation (ohne Assistent, deterministisch; -DryRun listet den
Plan auf, ohne etwas anzufassen):
.\install.ps1 -Core # app + memoria + hooks (el set por defecto)
.\install.ps1 -All # core + skills + tones + agents
.\install.ps1 -Skills -Tones # a la carta
.\install.ps1 -Core -DryRun # solo listar que haria
# Linux: ./install.sh --core | --all | --skills | --tones | --agents | --dry-runNur die Desktop-App (ohne Skills/Hooks/Sidecar für Speicher):
git clone https://github.com/SkiTemplar/ultron-control-center.git ~/.ultron && cd ~/.ultron/control-center
cp ../.env.example ../.env # opcional: claves de proveedores LLM (todas vacias por defecto)
npm install
npm run build:app # = kill-app + tauri build -> ejecutable de escritorioVollständige Anleitung (Bootstrap-One-Liner aus Release, Flags, Fehlerbehebung):
INSTALL.md.
Qdrant ist optional (der Recall degradiert ohne Qdrant zu reinem Sparse); siehe den Qdrant-Abschnitt von
docs/INSTALL-ADVANCED.md.
Die maschinenspezifischen Pfade sind dokumentiert in
config/paths.example.toml.
Funktionen
Gesteuerter Speicher —
brain.db(SQLite) als einzige Quelle der Wahrheit; jede Änderung durchläuft einen einzigen Dienst, der ein Prüfereignis anhängt.Hybrider Recall — dicht (E5 1024d / Qdrant) + sparse (FTS5/BM25) fusioniert mit Reciprocal Rank Fusion; degradiert ohne Qdrant zu reinem Sparse.
Inbox für Kandidaten — die automatischen Erfassungen schlagen vor, der Mensch genehmigt; nie wird aktiv Speicher selbstständig geschrieben.
Redaktion + Deduplizierung im Schreibpfad — Geheimnisse/PII raus, Duplikate per
content_hashraus, vor dem Persistieren oder Einbetten.AI Router — Kette primär -> Fallbacks pro Zone, Schlüsselerkennung und Nutzungs-/Einsparungstelemetrie; direktes Routing in Rust (ohne Sidecar LiteLLM).
Regelbasierter Orchestrator — bildet Prompt -> Absicht -> Workflow -> Agenten -> Erinnerungen ab; reserviert das große Modell nur für die mehrdeutige Warteschlange.
Töne / Persönlichkeiten — deterministische Erkennung des Chat-Tons (lexikalische Signale + explizite Aufforderung) innerhalb des Orchestrate; die Töne werden in Library -> Tones bearbeitet. Die echte Konfiguration (
~/.ultron/personality.json) ist lokal und gitignored; das Repo veröffentlicht nur die kompilierten Seeds (orchestrator/personality.rs). Der Ton kleidet ausschließlich die Unterhaltung: niemals Commits, Dokumente oder Artefakte.
Was ist es
ULTRON Control Center ersetzt Claude Code nicht: es umhüllt ihn. Es gibt ihm persistenten und gesteuerten Speicher, leitet Anfragen an verschiedene LLM-Anbieter je nach Kosten und Verfügbarkeit weiter und erkennt automatisch, welcher spezialisierte Skill/Agent für einen Prompt geeignet ist. Der gesamte Zustand lebt in lokalen Dateien (SQLite + JSON + Markdown), die du überprüfen, versionieren und manuell bearbeiten kannst.
Säule | Was sie tut |
Gesteuerter Speicher |
|
Hybrider Recall | Fusion zweier Quellen mit Reciprocal Rank Fusion (RRF): dicht (E5 1024d-Vektoren in Qdrant) + sparse (FTS5/BM25 über |
AI Router | Katalog von Anbietern + Zonen mit Kette primär -> Fallbacks, Schlüsselerkennung, Nutzungs-/Einsparungstelemetrie. Ohne Sidecar LiteLLM: direktes Routing in Rust. |
Orchestrator | Bildet einen (möglicherweise vagen) Prompt auf Absicht -> Workflow -> zu delegierende Agenten -> relevante Erinnerungen -> Einschränkungen ab, mittels Regeln (verwendet das große Modell nicht für das, was Regeln/Trigger lösen). |
Backend-Architektur (real)
Das Rust-Backend lebt in control-center/src-tauri/src/. Das zentrale
Speichermodul befindet sich in control-center/src-tauri/src/memory/.
Speicher: SQLite als Quelle der Wahrheit
~/.ultron/brain.db(SQLite, WAL-Modus) ist die kanonische Quelle der Wahrheit. Das kanonische Schema lebt inmemory/schema_v3.rs(Speicher) +memory/schema_v4.rs(historische Migration v4: Tabellenedges/unresolved_refs, heute inaktiv – der Codegraph wird vom externen MCP CodeGraph bereitgestellt) /memory/migrations.rs, mit Modellen inmemory/model.rs(MemoryItem,MemoryCandidate,MemoryEventund die Governance-EnumsStatus,Scope,Sensitivity,Sourceusw.).MemoryService(memory/service.rs) ist der einzige persistente Schreiber. Governance-Invariante: Jede Mutation durchläuft diesen Dienst und hängt einMemoryEventzur Prüfung an. Hooks und Agenten schreiben niemals direkt inmemory_items; sie schlagen nurMemoryCandidates vor, die ein Mensch (oder eine Richtlinie zur automatischen Genehmigung) befördert.Im Schreibpfad werden Schutzmaßnahmen angewendet: Redaktion von Geheimnissen/PII (
memory/redaction.rs) vor dem Persistieren oder Einbetten, exakte Deduplizierung percontent_hash(memory/texthash.rs) und lexikalische Deduplizierung per FTS.
Qdrant: abgeleiteter Index (keine Quelle der Wahrheit)
Die Sammlung
ultron_memory(Qdrant) indexiert die ACTIVE-Elemente mit MultilingualE5Large, 1024 Dimensionen (memory/qdrant_index.rs). Es ist ein abgeleiteter Index: kann jederzeit mitreindex_allneu aufgebaut werden, undbrain.dbbleibt die Wahrheit.Nach jedem genehmigten/bearbeiteten/wiederhergestellten Schreibvorgang hält
sync_indexQdrant auf dem neuesten Stand der Quelle der Wahrheit (Best-Effort; jede Abweichung ist überreconcileerkennbar/reparierbar).Die alte Sammlung
ultron_sessions(384d BGE) ist eingestellt; Qdrant ist hier immer ein Index, niemals die Wahrheit.
Hybrider Recall dicht + sparse mit RRF
Der einzige Befehl
recall(commands/memory/recall_unified.rs) fusioniert mit Reciprocal Rank Fusion (RRF_K = 60):DICHT: E5-Vektoren in
ultron_memory(Qdrant).SPARSE: FTS5/BM25 über
memory_items(nurstatus=active).
Gibt ein kompaktes Context Pack von Zusammenfassungen unter Token-Budget (
TOKEN_BUDGET = 1500) zurück, mit Spuren, warum diese Erinnerung (Bereiche pro Quelle, Scores, Verwerfungen) für den Retrieval Inspector.Der einzige Recall-Pfad ist der einheitliche Befehl
recallmit RRF; die Quellen sind Qdrant (dicht) + SQLite/FTS5 (sparse). Es werden keine externen Speicherdienste verwendet.
Automatische Erfassung via Stop-Hook
Im
Stopübergibt der Hook das Sitzungstranskript anmemory/capture.rs::capture_session. Dieser:fordert ein LLM (via
ai_router::route, Zonechat) auf, einige wenige dauerhafte Fakten/Entscheidungen zu extrahieren;wandelt jeden Fakt in einen
MemoryCandidateum (durch Redaktion + Deduplizierung) und legt ihn im kontrollierten Posteingang zur menschlichen Genehmigung ab — er wird niemals automatisch auf aktiv gesetzt.
Fail-Safe: Wenn der Router keinen nutzbaren Anbieter hat, wird auf eine günstige lokale Heuristik zurückgegriffen, damit der Stop-Hook niemals fehlschlägt.
Der Posteingang wird über
commands/memory/inbox.rsverwaltet (memory_inbox_list,approve_candidate,reject_candidate).
AI Router: Zonen, Anbieter, Fallback und Telemetrie
Backend im Modul
ai_router/(mod.rs + exec.rs + providers/ + seed.rs + store.rs). Zustand in drei JSON-Dateien unter~/.ultron/cockpit/ai-router/:providers.json(Katalog),zones.json(Zonen mitprimary+fallbacks),metrics.json(Zähler + Einsparungen).route(zone, prompt)durchläuft die Kette primär -> Fallbacks, überspringt Anbieter ohne nutzbaren API-Schlüssel, zeichnet Latenz/Tokens/Einsparungen in der Telemetrie auf und gibtResult<String, String>zurück (Fehler wörtlich, niemals panic, Zeitlimit 10s).Wrapper pro Anbieter: anthropic (claude-haiku), codex (OpenAI-kompatibel), gemini, groq, ollama (lokal, ohne Schlüssel), deepseek. Health Checks verwenden günstige Sonden und verbrauchen keine Tokens; Testaufrufe hingegen schon.
Standardzonen umfassen
chat,code-edit,code-review,research-web,code-fast-localund andere.
Orchestrator: Automatische Erkennung von Skills/Agenten
Das Modul
orchestrator/(rules.rs + ranking.rs + orchestrate.rs) bildetprompt -> intent -> workflow -> zu delegierende Agenten -> Erinnerungen -> Einschränkungenab. Die Intent-Klassifizierung ist regelbasiert (zweisprachig es/en); das große Modell bleibt für die mehrdeutige Warteschlange reserviert.Wiederverwendung (keine Duplikation): der Agentenkatalog (
memory/catalog.rs), der einheitliche Recall und die integrierten Workflows (agent_orchestration.rs). Schreibt niemals persistente Erinnerungen und delegiert an echte Agenten in~/.claude/agents(nicht auf der Festplatte vorhandene „Geisteragenten“ werden bereinigt).
Code-Graph: MCP CodeGraph (extern)
Den Code-Graphen (welche Symbole existieren, wer wen aufruft, Auswirkungsanalyse) liefert CodeGraph (
@colbymchenry/codegraph, MIT), installiert als MCP-Server und von den Agenten viacodegraph_explore/codegraph_callers/codegraph_impactabgefragt. Indiziert das Repository mit tree-sitter (AST) in.codegraph/(lokales SQLite, inkrementell) — 20+ Sprachen.
Plugin-Updates: Überprüfung auf Plugin-Aktualisierungen
Unter-Tab Updates innerhalb der Bibliothek (
src/components/library/PluginUpdates.tsx), das die Backend-Befehleplugin_check_updates_bulk(force)undplugin_changelog_summary(coordinate, installed_sha?)konsumiert.Vergleicht den installierten SHA mit dem letzten SHA des Marktplatzes für jedes Plugin, markiert, welche ein Update verfügbar haben, und zeigt die letzte Commit-Nachricht / Zusammenfassung des Changelogs an.
Stack
Schicht | Technologie |
Frontend (Control Center) | Tauri 2 + React 19 + TypeScript ( |
Backend (Control Center) | Rust stabil ( |
Speicher (SoT) | SQLite (FTS5) in |
Dichter Index | Qdrant nativ ( |
Embeddings | E5 (dicht) via |
Sidecar-CLI-Hooks |
|
OS-Scripting | PowerShell 5.1+ / Skripte in |
LLM-Laufzeiten | Claude Code (primär); Codex CLI optional. Gemini CLI zurückgezogen am 2026-06-19 (Google hat den kostenlosen OAuth-Tarif eingestellt); Gemini bleibt nur als Cloud-Fallback des AI Routers |
Sidecar-Binärdateien deklariert in control-center/src-tauri/Cargo.toml:
ultron-memory (erfordert die Feature qdrant).
Build
# desde control-center/
npm install
npm run build:app # = kill-app + tauri build (genera el ejecutable de escritorio)Andere nützliche Skripte (in control-center/package.json):
npm run dev # vite dev server (frontend)
npm run tauri # CLI de Tauri
npm test # vitest (frontend)Windows-Hinweis:
build:appführt zuerstkill-appaus, um alle laufenden Instanzen zu schließen; eine veraltete Binärdatei ist die übliche Ursache für „Die Änderung wurde nicht übernommen“: Schließe die App und kompiliere neu.
Ordnerstruktur
~/.ultron/
├── brain.db # SQLite — fuente de verdad de la memoria
├── qdrant-native/ # binario nativo de Qdrant (indice denso derivado)
├── qdrant_storage/ # datos persistidos por Qdrant
├── control-center/ # la app Tauri 2 + React 19
│ ├── src/ # frontend React/TS (componentes, tabs)
│ │ └── components/ # Dashboard, AIRouter, Library, Projects, ...
│ └── src-tauri/
│ └── src/
│ ├── memory/ # kernel de memoria (service, sqlite_store,
│ │ # qdrant_index, capture, redaction, texthash, ...)
│ ├── commands/ # comandos Tauri por dominio (memory, ai_router,
│ │ # projects, system_ops, ...)
│ ├── ai_router/ # AI Router (mod/exec/health/providers/seed/store/types)
│ ├── orchestrator/ # mod/orchestrate/ranking/rules/types_model
│ └── bin/ # sidecar ultron-memory
├── cockpit/ # config + estado en JSON/markdown
│ └── ai-router/ # providers.json, zones.json, metrics.json
├── personality.json # tonos del usuario (LOCAL, gitignored; se
│ # auto-siembra desde los seeds compilados)
├── hooks/ # hooks de ciclo de vida
├── skills/ # skills core (SKILL.md; catalogo curado no se publica)
├── plans/ projects/ # planes y proyectos
├── sessions/ # logs de sesion / telemetria de routing
└── docs/ # documentacion ampliadaAktueller Stand
Speicher: kanonischer Kernel aktiv. SoT =
brain.db; dichter Indexultron_memory(E5 1024d) schreibsynchronisiert; einheitlicher dichter+spärlicher Recall mit RRF betriebsbereit (degradiert zu spärlich-only ohne Qdrant). Write-Pfad mit Geheimnisredaktion und Deduplizierung per content_hash verdrahtet und getestet.Automatische Erfassung: Stop-Hook ->
capture_session-> Kandidaten in den kontrollierten Posteingang; menschliche Genehmigung/Ablehnung via Posteingangsbefehle.AI Router: echtes Routing mit primär/Fallback-Kette, Schlüsselerkennung und Nutzungs-/Einsparungstelemetrie; ohne Sidecar LiteLLM.
Töne: deterministische Erkennung im Orchestrate (JS/Rust-Parität des Detektors mit Gate 16/16 verifiziert); visueller Editor in Library -> Tones und Erkennungs-Playground. Lokale
personality.json(gitignored) mit kompilierten veröffentlichbaren Seeds; harte Grenze: der Ton gilt nur für den Chat, niemals für Artefakte.KI-Textdetektor: PostToolUse-Hook, der warnt, wenn geschriebene Prosa „nach KI klingt“ + Labor für deterministische Muster über den Forschungskatalog; Matcher mit CLI und Testfällen. Zeigt an, schreibt nicht um.
UI (Control Center, v2.7.1): Seitenleiste mit Dashboard, Usage, AI Router, System (mit Unter-Tabs Hooks/Schedules), MCPs, Library (Unter-Tabs Skills/Agents/Rules/Updates), Memory, Notes, Learn, Sessions, Projects, Finance (nur lokaler Build mit
VITE_FINANCE=1), Settings und Notifications. Der Tab Memory ist aktiv (wieder hinzugefügt am 2026-06-04,Sidebar.tsx): zeigt den Posteingang der Kandidaten (genehmigen/ablehnen/bearbeiten) und den Zustand vonbrain.db; der Speicherkernel bleibt reines Backend, aber seine Human-in-the-Loop-Steuerung erfolgt über diesen Tab (zusätzlich zu den Befehlen).
Lizenz
MIT — siehe LICENSE. Copyright (c) 2026 Rodrigo Fernandez.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -license-qualityBmaintenanceEnterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
- Alicense-qualityDmaintenanceAn MCP server that gives Claude persistent memory by storing conversation context, entities, and enabling semantic search across sessions.131MIT
- Alicense-qualityDmaintenanceMCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.32MIT
- Alicense-qualityDmaintenanceMCP server providing Claude with persistent, local memory for tracking architectural decisions, dead ends, and project context across conversations.MIT
Related MCP Connectors
Cloud-hosted MCP server for durable AI memory
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SkiTemplar/ultron-control-center'
If you have feedback or need assistance with the MCP directory API, please join our Discord server