ULTRON Control Center
이게 뭔가요?
당신의 AI 어시스턴트는 창을 닫을 때마다 모든 것을 잊어버립니다: 당신이 내린 결정, 이미 해결한 오류, 프로젝트 구조 등. 다음 날이면 모든 것을 다시 설명해야 합니다.
ULTRON은 메모리를 제공합니다. 작업하는 동안 중요한 내용을 당신의 컴퓨터에 저장하고, 새 대화를 열면 자동으로 AI에게 상기시킵니다. 당신은 아무것도 할 필요 없습니다: 평소처럼 작업하면 어시스턴트가 점점 더 당신을 잘 알게 됩니다. 무엇을 저장할지는 당신이 결정합니다 (모든 것은 승인 대기함을 거침) 그리고 어떤 데이터도 당신의 기계 밖으로 나가지 않습니다.
로컬 이벤트 소싱 메모리 (brain.db, SQLite)와 시맨틱 인덱스 (Qdrant + E5 1024d)를 사용하며, 각 세션에 후크를 통해 재주입됩니다 — 상주 데몬과 함께 서브초 하이브리드 리콜. 추가로: AI 라우터 (멀티 프로바이더), 스킬/에이전트 오케스트레이터, 데스크톱 콕핏 (Tauri 2 + React 19). 모든 상태는 검사 가능한 로컬 파일입니다. 스펙: docs/memory-spec.md.
Related MCP server: MCP Memory Server
ULTRON 유무 비교
Claude Code 단독 | ULTRON 사용 | |
세션 시작 시 | 빈 상태로 시작 | 프로젝트 요약: 상태, 작업, 결정 |
각 프롬프트의 맥락 | 당신이 작성한 내용 | + 관련 메모리 자동 검색 (실제 프롬프트의 ~84%) |
이미 해결한 오류 | 반복됨 | 기억됨 ("그건 이미 시도했고, X 때문에 실패했어") |
저장되는 내용 | 없음 | 승인 대기함에서 승인한 내용 (모든 변경 사항 감사 추적) |
데이터 저장 위치 | — | 당신의 디스크, 열어볼 수 있는 파일 |
다른 메모리 시스템과 비교 (Mem0 같은 클라우드 서비스 등) 차이는 마케팅이 아닌 설계에 있습니다: 여기서 메모리는 100% 로컬 (계정 불필요, 구독 불필요, 코드를 제3자에게 보내지 않음), 통제됨 (AI가 제안하면 당신이 승인; 모든 쓰기 작업은 감사 이벤트를 남김), 정직함 (모르면 주입하지 않고 기권 — 측정됨), 개방형 (SQLite + Markdown + 모든 어시스턴트가 조회할 수 있는 표준 MCP 서버)입니다.
일상 사용 튜토리얼 (인간 + AI):
docs/TUTORIAL.md· 메모리 시스템 전체 스펙:docs/memory-spec.md· 컴포넌트별 설치:INSTALL.md· MIT 라이선스.
메모리 흐름
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| B실제 수치 (측정값, 시뮬레이션 아님)
유지보수자의 실제 코퍼스 (~3,300개의 활성 메모리)에서 수동으로 레이블링된 29개 쿼리 오라클로 측정 — 당신의 설치는 빈 상태로 시작하며 리콜 수치는 당신의 코퍼스에 따라 달라집니다. ultron-memory eval --golden과 저장소의 스크립트로 재현 가능합니다.
메트릭 | 값 |
Recall@8 (수동 레이블링 오라클) | 0.82 |
MRR (올바른 메모리가 상위에 랭크) | 0.95 |
핫 데몬으로 오케스트레이션 | ~0.5초 (콜드 프로세스의 ~3.5초 대비) |
유휴 RAM (앱 / 데몬) | 36 MB / ~40 MB (모델 로드 시 1.5-3.5 GB) |
메모리로 서비스된 실제 프롬프트 비율 | 84% (골든 데이터뿐만 아니라 실제 트래픽으로 보정된 게이트) |
코퍼스가 답을 모를 때 시스템은 기권하여 주입을 피합니다 — 리콜의 정직성도 측정됩니다 (자체 벤치의 기권 카테고리).
빠른 시작
전체 시스템 (앱 + 스킬 + 후크 + 시맨틱 메모리) — 권장 경로; 멱등적이며 건드리기 전에 물어봅니다:
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.sh컴포넌트별 설치 (위저드 없음, 결정론적; -DryRun은 건드리지 않고 계획만 나열):
.\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-run데스크톱 앱만 (스킬/후크/메모리 사이드카 없음):
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 escritorio전체 가이드 (릴리스에서 부트스트랩 원라인, 플래그, 문제 해결):
INSTALL.md.
Qdrant는 선택 사항입니다 (없으면 리콜이 스파스 전용으로 저하됨); docs/INSTALL-ADVANCED.md의 Qdrant 섹션 참조.
머신별 경로는 config/paths.example.toml에 문서화되어 있습니다.
기능
통제된 메모리 —
brain.db(SQLite)가 유일한 진실 공급원; 모든 변경은 감사 이벤트를 추가하는 단일 서비스를 거칩니다.하이브리드 리콜 — 밀집 (E5 1024d / Qdrant) + 희소 (FTS5/BM25)를 Reciprocal Rank Fusion으로 융합; Qdrant 없으면 스파스 전용으로 저하.
후보 받은편지함 — 자동 캡처가 제안하면 인간이 승인; 활성 메모리를 자동으로 쓰지 않음.
쓰기 경로에서 편집 + 중복 제거 — 비밀/PII 제거,
content_hash로 중복 제거, 지속 또는 임베딩 전에 수행.AI 라우터 — 기본 -> 영역별 폴백 체인, 키 감지, 사용량/절감 텔레메트리; Rust에서 직접 라우팅 (사이드카 LiteLLM 없음).
규칙 기반 오케스트레이터 — 프롬프트 -> 의도 -> 워크플로 -> 에이전트 -> 메모리 매핑; 규칙/트리거로 해결되는 부분에 큰 모델을 예약하지 않음.
톤 / 성격 — 오케스트레이션 내에서 채팅 톤의 결정론적 감지 (어휘 신호 + 명시적 요청); 톤은 Library -> Tones에서 편집. 실제 설정 (
~/.ultron/personality.json)은 로컬이며 gitignored; 저장소는 컴파일된 시드만 게시 (orchestrator/personality.rs). 톤은 대화에만 적용: 커밋, 문서, 아티팩트에는 적용되지 않음.
개요
ULTRON 컨트롤 센터는 Claude Code를 대체하지 않습니다: 감쌉니다. 지속적이고 통제된 메모리를 제공하고, 비용과 가용성에 따라 여러 LLM 제공업체로 요청을 라우팅하며, 프롬프트에 적합한 전문 스킬/에이전트를 자동으로 감지합니다. 모든 상태는 검사, 버전 관리, 수동 편집이 가능한 로컬 파일 (SQLite + JSON + markdown)에 저장됩니다.
핵심 요소 | 기능 |
통제된 메모리 |
|
하이브리드 리콜 | Reciprocal Rank Fusion (RRF)으로 두 소스 융합: 밀집 (Qdrant의 E5 1024d 벡터) + 희소 (FTS5/BM25 on |
AI 라우터 | 제공업체 카탈로그 + 영역별 기본 -> 폴백 체인, 키 감지, 사용량/절감 텔레메트리. 사이드카 LiteLLM 없음: Rust에서 직접 라우팅. |
오케스트레이터 | (모호할 수 있는) 프롬프트를 의도 -> 워크플로 -> 위임할 에이전트 -> 관련 메모리 -> 제약 조건으로 매핑, 규칙 사용 (규칙/트리거로 해결되는 부분에 큰 모델을 사용하지 않음). |
백엔드 아키텍처 (실제)
Rust 백엔드는 control-center/src-tauri/src/에 있습니다. 핵심 메모리 모듈은 control-center/src-tauri/src/memory/에 있습니다.
메모리: SQLite를 진실 공급원으로
~/.ultron/brain.db(SQLite, WAL 모드)가 표준 SoT입니다. 표준 스키마는memory/schema_v3.rs(메모리) +memory/schema_v4.rs(역사적 v4 마이그레이션:edges/unresolved_refs테이블, 현재는 비활성 — 코드 그래프는 외부 MCP CodeGraph에서 제공) /memory/migrations.rs에 있으며, 모델은memory/model.rs(MemoryItem,MemoryCandidate,MemoryEvent, 및 거버넌스 열거형Status,Scope,Sensitivity,Source등)에 있습니다.MemoryService(memory/service.rs)는 유일한 영구 기록자입니다. 거버넌스 불변성: 모든 변경은 여기를 거치며 **감사MemoryEvent**를 추가합니다. 후크와 에이전트는memory_items를 직접 쓰지 않습니다. 인간(또는 자동 승인 정책)이 승격시키는MemoryCandidate만 제안합니다.쓰기 경로에는 가드가 적용됩니다: 지속 또는 임베딩 전 비밀/PII 편집 (
memory/redaction.rs),content_hash로 정확한 중복 제거 (memory/texthash.rs), FTS로 어휘 중복 제거.
Qdrant: 파생 인덱스 (진실 공급원 아님)
ultron_memory컬렉션 (Qdrant)은 MultilingualE5Large, 1024 차원으로 ACTIVE 항목을 인덱싱합니다 (memory/qdrant_index.rs). 파생 인덱스입니다:reindex_all로 언제든지 재구성 가능하며brain.db는 여전히 진실입니다.승인/편집/복원된 각 쓰기 후
sync_index는 Qdrant를 SoT와 동기화합니다 (최선 노력;reconcile을 통해 모든 드리프트를 감지/복구 가능).이전
ultron_sessions컬렉션 (384d BGE)은 폐기되었습니다; 여기서 Qdrant는 항상 인덱스이며 진실이 아닙니다.
RRF를 사용한 하이브리드 밀집 + 희소 리콜
단일
recall명령 (commands/memory/recall_unified.rs)은 Reciprocal Rank Fusion (RRF_K = 60)으로 융합합니다:밀집:
ultron_memory(Qdrant)의 E5 벡터.희소:
memory_items에 대한 FTS5/BM25 (status=active만).
토큰 예산 (
TOKEN_BUDGET = 1500) 내에서 요약의 압축된 컨텍스트 팩을 반환하며, Retrieval Inspector를 위한 이 메모리가 선택된 이유 추적 (소스별 순위, 점수, 폐기)을 포함합니다.유일한 리콜 경로는 RRF를 사용한 통합
recall명령입니다; 소스는 Qdrant (밀집) + SQLite/FTS5 (희소)입니다. 외부 메모리 서비스를 사용하지 않습니다.
Stop hook을 통한 자동 캡처
Stop에서 hook은 세션의 대본을memory/capture.rs::capture_session에 전달합니다. 이 함수는:LLM에 요청하여(
ai_router::route,chat영역) 몇 가지 지속적인 사실/결정을 추출합니다.각 사실을
MemoryCandidate로 변환하고(비밀 편집 + 중복 제거를 거쳐) 관리되는 받은 편지함에 남겨 인간 승인을 기다립니다 — 절대 자동으로 활성 메모리로 승격되지 않습니다.
Fail-safe: 라우터에 사용 가능한 공급자가 없으면 저렴한 로컬 휴리스틱으로 대체되어 Stop hook이 절대 실패하지 않도록 합니다.
받은 편지함은
commands/memory/inbox.rs(memory_inbox_list,approve_candidate,reject_candidate)에서 관리됩니다.
AI Router: 영역, 공급자, 폴백 및 텔레메트리
백엔드는
ai_router/모듈(mod.rs + exec.rs + providers/ + seed.rs + store.rs)에 있습니다. 상태는~/.ultron/cockpit/ai-router/아래 세 개의 JSON 파일에 저장됩니다:providers.json(카탈로그),zones.json(primary+fallbacks가 있는 영역),metrics.json(카운터 + 절약).route(zone, prompt)는 primary -> fallbacks 체인을 순회하며, 사용 가능한 API 키가 없는 공급자는 건너뛰고, 지연 시간/토큰/절약을 텔레메트리에 기록하고Result<String, String>을 반환합니다(오류는 그대로, 절대 패닉 없음, 10초 제한).공급자별 래퍼: anthropic (claude-haiku), codex (OpenAI 호환), gemini, groq, ollama (로컬, 키 불필요), deepseek. 상태 확인은 저렴한 프로브를 사용하며 토큰을 소모하지 않습니다. 테스트 호출은 토큰을 소모합니다.
기본 영역에는
chat,code-edit,code-review,research-web,code-fast-local등이 포함됩니다.
오케스트레이터: 스킬/에이전트 자동 감지
orchestrator/모듈(rules.rs + ranking.rs + orchestrate.rs)은prompt -> intent -> workflow -> 위임할 에이전트 -> 메모리 -> 제약 조건을 매핑합니다. 의도 분류는 규칙 기반(이중 언어 es/en)입니다. 큰 모델은 모호한 큐를 위해 예약됩니다.재사용(중복하지 않음): 에이전트 카탈로그(
memory/catalog.rs), 통합 리콜, 통합 워크플로(agent_orchestration.rs). 영구 메모리를 쓰지 않으며~/.claude/agents의 실제 에이전트에 위임합니다(디스크에 없는 "유령 에이전트"는 정리됩니다).
코드 그래프: MCP CodeGraph (외부)
코드 그래프(어떤 심볼이 존재하는지, 누가 누구를 호출하는지, 영향 분석)는 CodeGraph(
@colbymchenry/codegraph, MIT)가 제공하며, MCP 서버로 설치되어 에이전트가codegraph_explore/codegraph_callers/codegraph_impact를 통해 조회합니다. tree-sitter(AST)를 사용하여.codegraph/(로컬 SQLite, 증분)에 리포지토리를 인덱싱합니다 — 20개 이상의 언어 지원.
플러그인 업데이트: 플러그인 업데이트 확인
Library 내의 Updates 하위 탭(
src/components/library/PluginUpdates.tsx)은 백엔드 명령어plugin_check_updates_bulk(force)와plugin_changelog_summary(coordinate, installed_sha?)를 사용합니다.각 플러그인에 대해 설치된 SHA를 마켓플레이스의 최신 SHA와 비교하여 업데이트가 가능한 플러그인을 표시하고 최신 커밋 메시지/변경 로그 요약을 보여줍니다.
Stack
계층 | 기술 |
프론트엔드 (Control Center) | Tauri 2 + React 19 + TypeScript ( |
백엔드 (Control Center) | Rust 안정 버전 ( |
메모리 (SoT) | SQLite (FTS5) ( |
밀집 인덱스 | 네이티브 Qdrant ( |
임베딩 | E5 (밀집) ( |
사이드카 CLI 훅 |
|
스크립팅 OS | PowerShell 5.1+ / 스크립트 ( |
LLM 런타임 | Claude Code (주력); Codex CLI (선택 사항). Gemini CLI 2026-06-19 폐기 (Google이 무료 OAuth 계층 종료); Gemini는 AI Router의 클라우드 폴백으로만 남음 |
사이드카 바이너리는 control-center/src-tauri/Cargo.toml에 선언됨: ultron-memory (qdrant 기능 필요).
Build
# desde control-center/
npm install
npm run build:app # = kill-app + tauri build (genera el ejecutable de escritorio)기타 유용한 스크립트 (control-center/package.json):
npm run dev # vite dev server (frontend)
npm run tauri # CLI de Tauri
npm test # vitest (frontend)Windows 참고:
build:app는 먼저kill-app을 실행하여 실행 중인 인스턴스를 종료합니다. 오래된 바이너리는 일반적으로 "변경 사항이 적용되지 않았습니다"의 원인입니다: 앱을 닫고 다시 컴파일하세요.
폴더 구조
~/.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 ampliada현재 상태
메모리: 활성 표준 커널. SoT =
brain.db; 밀집 인덱스ultron_memory(E5 1024d) 쓰기 시 동기화; RRF를 사용한 통합 밀집+희소 리콜 작동 (Qdrant 없으면 희소 전용으로 저하). 비밀 편집 및 content_hash 기반 중복 제거가 포함된 쓰기 경로가 구현되어 테스트 완료.자동 캡처: Stop hook ->
capture_session-> 관리되는 받은 편지함의 후보; 받은 편지함 명령을 통한 인간 승인/거부.AI Router: primary/fallback 체인, 키 감지 및 사용량/절약 텔레메트리를 포함한 실제 라우팅; LiteLLM 사이드카 없음.
톤: 오케스트레이터의 결정론적 감지 (JS/Rust 감지기 패리티는 게이트 16/16으로 확인됨); Library -> Tones의 시각적 편집기 및 감지 플레이그라운드. 로컬
personality.json(gitignored)에 게시 가능한 시드가 컴파일되어 있음; 엄격한 제한: 톤은 채팅에만 적용되며 아티팩트에는 절대 적용되지 않음.AI 텍스트 감지기: 작성된 산문이 AI처럼 "들릴" 때 경고하는 PostToolUse 훅 + 연구 카탈로그에 대한 결정론적 패턴 연구소; CLI 및 테스트 케이스 모음이 있는 매처. 표시만 할 뿐 다시 쓰지 않음.
UI (Control Center, v2.7.1): Dashboard, Usage, AI Router, System (Hooks/Schedules 하위 탭), MCPs, Library (하위 탭 Skills/Agents/Rules/Updates), Memory, Notes, Learn, Sessions, Projects, Finance (
VITE_FINANCE=1로 로컬 빌드만), Settings, Notifications가 있는 사이드바. Memory 탭은 활성화됨 (2026-06-04 재추가,Sidebar.tsx): 후보 받은 편지함(승인/거부/편집)과brain.db상태를 표시합니다. 메모리 커널은 여전히 백엔드 전용이지만, 인간-인-더-루프 관리는 이 탭에서 수행됩니다 (명령어 외에도).
라이선스
MIT — 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