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.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    B
    maintenance
    Enterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives Claude persistent memory by storing conversation context, entities, and enabling semantic search across sessions.
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A persistent memory MCP server for Claude Code that enables long-term recall across sessions via hybrid search, code intelligence, and tools for reading/writing memory.
    9 npm
    5
    MIT