Skip to main content
Glama
SkiTemplar
by SkiTemplar

이게 뭔가요?

당신의 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)에 저장됩니다.

핵심 요소

기능

통제된 메모리

~/.ultron/brain.db (SQLite)가 유일한 진실 공급원입니다. 모든 쓰기 작업은 감사 이벤트를 기록하는 단일 서비스를 거칩니다. 자동 캡처는 활성 메모리를 직접 쓰지 않습니다: 인간이 승인하거나 거부할 후보를 받은편지함에 제안합니다.

하이브리드 리콜

Reciprocal Rank Fusion (RRF)으로 두 소스 융합: 밀집 (Qdrant의 E5 1024d 벡터) + 희소 (FTS5/BM25 on brain.db). Qdrant/E5를 사용할 수 없으면 스파스 전용으로 저하됩니다.

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에 전달합니다. 이 함수는:

    1. LLM에 요청하여(ai_router::route, chat 영역) 몇 가지 지속적인 사실/결정을 추출합니다.

    2. 각 사실을 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/src/)

백엔드 (Control Center)

Rust 안정 버전 (control-center/src-tauri/src/)

메모리 (SoT)

SQLite (FTS5) (~/.ultron/brain.db)

밀집 인덱스

네이티브 Qdrant (~/.ultron/qdrant-native/), 컬렉션 ultron_memory, E5 1024d

임베딩

E5 (밀집) (crate::qdrant::embed_e5를 통해 ultron-memory 내부)

사이드카 CLI 훅

ultron-memory (Node 훅이 재사용하는 표준 로직)

스크립팅 OS

PowerShell 5.1+ / 스크립트 (cockpit/)

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.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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
    -
    quality
    B
    maintenance
    Enterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
  • A
    license
    -
    quality
    D
    maintenance
    MCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.
    32
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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