🧠 Mind
세션, 도구, 시간 간에 컨텍스트를 잃어버리는 것을 멈추세요. 지속되는 기억을 당신의 AI 워크플로우에 부여하세요.
Mind는 AI 워크플로우를 위한 로컬 메모리 레이어입니다. 이는 결정 사항(decisions), 버그 수정(bug fixes), 패턴(patterns), 체크포인트(checkpoints), 세션 요약(session summaries) 등, 그렇지 않으면 세션과 도구를 넘나들며 사라질 지속적인 컨텍스트를 위한 영구 메모리 시스템입니다.
이 시스템은 체크포인트와 세션 연속성 동작을 통해 압축(compaction) 후 복구를 지원하며, 동시에 CLI 및 웹 UI를 통해 사용자가 이 메모리를 시각화하고, 검사하고, 수정할 수 있는 방법을 제공합니다.
Mind가 갖는 강점:
- 로컬 영구 저장소. 사용자가 제어하는 단일 SQLite 기반 메모리 시스템입니다.
- 에이전트 워크플로우를 위해 구축됨. CLI, MCP 서버, HTTP API 및 웹 UI를 통해 사용할 수 있습니다.
- 재개 도구 포함. 체크포인트와 세션 요약은 컨텍스트를 복구하고 작업을 계속하는 데 도움을 줍니다.
- 선택적 파일 동기화. 실험적인 자동 동기화(autosync) 기능을 사용하여 프로젝트 공간을 버전 관리되는
.mind/ 파일로 미러링할 수 있습니다.
- 필요할 때 검색 가능. 전체 텍스트 검색(full-text search)이 내장되어 있으며, 의미론적 검색(semantic search)은 선택적 추가 기능으로 제공됩니다.
Installation을 통해 시작하거나 바로 Quick start로 이동하세요.
Mind Preview
Mind를 사용해야 하는 이유?
Mind는 작업이 도구, 세션, 압축 경계를 넘나들 때 지속적인 컨텍스트가 체계적으로 정리되고, 검색 가능하며, 활용될 수 있도록 돕습니다.
- 다시 방문할 수 있는 구조화된 메모리. 공간(spaces), 태그(tags), 방향성 링크(directional links), 계층(tiers), 고정(pins), 체크포인트, 세션 요약에 정보를 정리할 수 있습니다.
- 워크플로우에 내장된 복구 기능. 압축 후 컨텍스트를 복원하고, 체크포인트에서 작업을 재개하며, 중요한 상태가 시간이 지나도 보이도록 유지합니다.
- 공유 인터페이스, 단일 메모리 레이어. CLI, MCP 서버, HTTP API 및 웹 앱을 동일한 로컬 진실 공급원(local source of truth)에 대해 사용할 수 있습니다.
- Neural Map을 통한 공간별 가시성. 각 공간에는 읽기 전용 그래프 뷰가 포함되어 있어 글로벌 지식 그래프를 주장하지 않으면서 메모리가 어떻게 연결되는지 이해할 수 있습니다.
Mind란 무엇인가요?
Mind는 하나의 로컬 SQLite 메모리 저장소(mind.db) 위에 CLI(Command Line Interface), MCP 서버, HTTP API 및 웹 UI를 제공하는 Bun + TypeScript 프로젝트입니다. 이 프로젝트는 저장된 컨텍스트가 시간이 지나도 유용하도록 유지하기 위해 FTS5 전체 텍스트 검색(full-text search), 메타데이터 필터, 태그, 링크 및 3단계 메모리 모델(T1 hot, T2 warm, T3 cold)을 사용합니다.
시맨틱 검색(semantic search)을 원한다면 선택적 OpenAI 임베딩(embeddings)을 활성화할 수 있습니다. 기본적으로는 비활성화되어 있습니다.
설치 (Installation)
Mind를 빠르고 쉽게 설치하고 바로 사용할 수 있습니다. 나중에 에이전트 설정을 하려면 에이전트 설정으로 이동하세요.
원라인 설치 프로그램 (권장)
curl -fsSL https://raw.githubusercontent.com/GabrielMartinMoran/mind/main/scripts/install.sh | bash
이 명령어는 Mind를 사용자 로컬 경로(sudo 필요 없음)에 설치합니다:
- 앱 (app):
~/.local/share/mind
- 런처 (launcher):
~/.local/bin/mind
그 다음 실행합니다:
이 설치 프로그램은 설치된 src/mind.ts 진입점을 실행하는 런처를 생성합니다. 지원되는 모든 에이전트 통합을 자동으로 구성하지는 않습니다. 기존의 mind 관리 에이전트 통합을 새로 고치려면 mind setup refresh를 실행하세요.
요구 사항 (Requirements)
- Bun 1.2 이상 (원라인 설치 프로그램에 존재하지 않을 경우 자동 설치됨)
소스에서 설치 (Install from source)
git clone https://github.com/GabrielMartinMoran/mind.git
cd mind
bun install
빠른 시작 (Quick start)
이것은 Mind가 실제 어떻게 작동하는지 가장 빠르게 확인할 수 있는 방법입니다.
mind create projects/my-project "My project"
...
에이전트 설정 (Agent setup)
Mind는 여러 에이전트 통합을 지원하지만, 이들 모두가 동등하게 성숙한 것은 아닙니다. mind setup을 에이전트 이름 없이 실행하여 현재의 기능 매트릭스(capability matrix)를 확인한 다음, 원하는 특정 에이전트를 구성하세요.
mind setup
mind setup claude-code
mind setup opencode
...
`mind setup refresh`는 기본적으로 보수적입니다. 이는 감지된 통합(integration)만 새로 고칩니다. 여기서 '감지'란 `mind`가 MCP 설정(config), 관리 프로토콜 블록(managed protocol block), 훅/플러그인/스크립트(hook/plugin/script), 또는 설치된 mind-management skill과 같은 기존의 mind 소유 신호(signal)를 찾는 것을 의미합니다. 변경 사항 미리 보기를 위해 `--dry-run`을 사용하고, 모든 지원 에이전트(agent)를 새로 고치려면 `--all`을 사용하며, 특정 에이전트를 대상으로 하려면 `--agent <name>`을 사용합니다.
대부분의 설정은 선택 사항입니다. 경로(paths), 포트(ports)를 변경하거나 시맨틱 검색(semantic search)을 활성화하려는 경우에만 추가 설정이 필요합니다.
**1. .env 파일 생성:**
```bash
cp .env.example .env
mind는 모든 구성 가능한 옵션을 포함하는 .env.example과 함께 제공됩니다. 설치 프로그램은 또한 .env가 존재하지 않으면 자동으로 이 작업을 수행합니다.
2. 환경 변수 설정 (선택 사항):
설정을 사용자 정의하려면 .env를 편집하세요:
| Variable | Default | Description |
|---|
MIND_PORT | 30303 | 웹 서버 포트 |
| ... | | |
| RAG / 시맨틱 검색 설정: | | |
AI 기반 시맨틱 검색을 활성화하려면:
MIND_RAG=true
OPENAI_API_KEY=sk-your-key-here
활성화되면, 메모리(memories)는 OpenAI의 text-embedding-3-small 모델을 사용하여 임베딩되고 하이브리드 검색(hybrid retrieval)을 위해 전체 텍스트 검색과 결합됩니다.
기본 CLI 예시
mind create projects/mind "Mind project memory"
mind add projects/mind architecture "CLI uses command registry + atomic command modules"
mind search architecture
전체 명령어 목록은 다음을 참조하세요:
사용법
CLI
mind help
mind create <space> "description"
mind update <space> --hidden
...
Autosync (실험적)
Autosync를 사용하면 프로젝트 공간(project spaces)을 버전이 지정된 .mind/ 디렉터리에 미러링할 수 있어, git에서 메모리 파일을 검토하고, 로컬 디스크의 마크다운(markdown)을 편집하며, 그 변경 사항들을 다시 로컬 데이터베이스에 동기화할 수 있습니다. 공간이 활성화되면, CLI, 웹/API 또는 MCP를 통해 성공적으로 이루어진 DB 변형(DB mutations)은 영향을 받은 공간을 비차단 측면 효과(non-blocking side effect)로 .mind/spaces/<hash>/에 다시 내보냅니다.
<!-- prettier-ignore -->
[!NOTE]
이 기능은 현재 활발하게 개발 중인 실험적 기능입니다.
다음 흐름을 따라 autosync를 설정하세요:
mind sync init을 실행하여 .mind/config.yml과 .mind/.gitignore 파일을 생성합니다.
- 어떤 공간이 구성될지 선택하기 위해
.mind/config.yml을 검토하거나 편집합니다.
- 동기화하려는 프로젝트 공간에 대해
mind sync enable --space <name>을 실행합니다.
- 선택 사항: 현재 터미널에서 워처(watcher)를 시작하려면
mind sync serve --space <name>을 실행하거나, 활성화된 공간의 워처 자동 시작은 MCP 시작 시 의존할 수 있습니다.
.mind/ 디렉터리는 파일 기반 설정 및 해시된 공간 디렉터리를 사용합니다:
.mind/
├── config.yml
├── .gitignore
...
autosync를 관리하려면 다음 명령을 사용하세요:
mind sync init
mind sync status
mind sync enable --space <name>
mind sync disable --space <name>
mind sync now --space <name>
mind sync export --space <name>
mind sync import --space <name>
mind sync conflict --space <name> --strategy <strategy>
mind sync remove --space <name>
mind sync config
mind sync serve --space <name>
충돌 전략(Conflict strategies):
db-wins는 실제 충돌 발생 시 데이터베이스(DB) 버전을 기록하며, 매니페스트가 관리 대상으로 표시한 파일만 정리합니다.
file-wins는 실제 충돌 발생 시 파일 측 버전을 보존합니다. 자동 DB-to-파일 내보내기(export)는 충돌하는 파일을 건너뛰고 경고를 기록합니다.
latest-wins는 해시 기반의 변경 감지(dirty detection) 후 정규화된 UTC 타임스탬프를 동점 처리(tie-break)에 사용합니다. 시계 편차(clock skew)로 인해 5분 이내의 근미래 타임스탬프는 허용되지만, 더 먼 미래의 타임스탬프는 무작정 덮어쓰기 하는 대신 안전하지 않다고 보고되어 건너뜁니다.
Autosync는 매니페스트 v2 파일을 작성합니다. 각 매니페스트 항목은 관리 파일 소유권, 메모리 이름(memory name), 경로(path), 선택적 DB ID, 표준 콘텐츠 및 메타데이터 해시(metadata hashes), 정규화된 UTC 타임스탬프, 파일 수정 시간, 그리고 마지막 동기화 시간(last sync time)을 추적합니다. 해시는 공통 기준선(common baseline) 이후에 데이터베이스 측, 파일 측, 양쪽 모두, 또는 어느 쪽도 변경되지 않았는지 결정합니다. 파일의 단순한 존재 자체가 충돌은 아닙니다.
예시 .mind/config.yml:
현재의 제한 사항 및 주의 사항:
mind sync status --space <name>은 DB, 파일 및 매니페스트(manifest) 개수를 보고하며, 더티한(dirty) DB/파일 드리프트(drift), 충돌(conflicts), 툼스톤(tombstones), 누락된 관리 파일(missing managed files), 그리고 매니페스트 데이터가 사용 가능한 경우 최신 자동 내보내기 경고 또는 오류를 보고합니다.
기존 메모리 가져오기는 충돌 전략이 '파일-대-DB: 콘텐츠, 태그, 티어, 고정 상태, 및 links_to 링크'를 선택할 때 파일에서 지원되는 메타데이터를 업데이트합니다. 유효하지 않은 메타데이터는 해당 파일을 안전하게 건너뛰며, 해결되지 않은 링크는 보고되고, 프론트매터(frontmatter)의 name은 기존 메모리를 이름 변경하지 않습니다.
내보내진 links_to 값은 프론트매터에 작성되며, 가져오기 시에는 해당 링크들이 데이터베이스에서 재구성됩니다.
동기화된 마크다운 파일을 삭제해도 해당 데이터베이스 메모리가 자동으로 삭제되지는 않습니다. mind sync status는 누락된 관리 파일을 드리프트로 보고하여 사용자가 의도적으로 복원하거나 삭제할 수 있도록 합니다. DB 측의 삭제 및 이름 변경은 매니페스트가 관리 대상으로 표시한 파일만 정리합니다.
자동 DB-대-파일 내보내기 경고는 로그에 기록되며 원래의 CLI, API 또는 MCP(Mutation) 작업을 실패시키지 않습니다. 명시적인 sync export, sync import, 및 sync now 명령어는 여전히 동기화 실패를 눈에 띄게 보고합니다.
웹 서버 (Web Server)
mind serve start
mind serve start --port 8080
mind serve start --detached
...
뉴럴 맵 (Neural Map) (웹 MVP)
웹 UI에서 각 공간(space)은 이제 뉴럴 맵(Neural Map) 뷰를 가집니다:
- 공간별 읽기 전용 그래프
- 티어별(T1..T3) 동심원 링
- 확대/축소 및 이동 제어 기능
- 연결성(링크 정도, link degree) 기반 노드 중요도 표시
- 노드를 클릭하여 기존 메모리 상세 엔드포인트를 통해 메모리 세부 정보 가져오기/표시
SPA는 신뢰할 수 있는 딥링크 및 리로드 복구를 위해 URL 기반 클라이언트 라우팅을 사용합니다:
/ → 공간 홈
/spaces/{encodedSpace}
?view=list|map
- 선택적
?memory={encodedMemory}
탐색은 URL을 업데이트하고(공간 열기, 목록/맵 전환, 메모리 선택), 리로드는 상태를 복원하며, 브라우저의 뒤로 가기/앞으로 가기는 History API를 통해 지원됩니다.
SPA가 사용하는 그래프 API 엔드포인트:
GET /api/spaces/:space/graph?limit=<n>
- 노드당 최소 페이로드(payload) 반환:
id:string, name, tier, links_to:string[], linked_by:string[]
- 기본적으로 모든 티어(tiers) 포함
- 절단 메타데이터(truncation metadata) 포함 (
total_nodes, returned_nodes, requested_limit, applied_limit, max_limit, truncated)
MCP Server
mind mcp
mind mcp start --http
mind mcp start --http --detached
...
MCP 서버가 시작되면, .mind/config.yml에서 활성화된 스페이스(spaces)에 대한 autosync watcher를 자동으로 시작합니다.
예시 MCP 도구 사용 (Agent용):
{
"name": "memory_query",
"arguments": {
...
Stage 1의 MCP 구조화된 도구(structured tools)는 이제 두 가지 형태의 페이로드를 반환합니다:
structuredContent: 구조화된 데이터를 직접 소비하는 Agent용
- 원본 YAML 형식의
content 텍스트 항목: 동일한 페이로드에서 직렬화됨 (마크다운 펜스 없음)
이 단계에서는, system_instructions와 콘텐츠 전용 삭제/링크 도구(delete/link tools)는 기존의 텍스트 응답을 유지합니다.
memory_query는 전체 텍스트 검색을 위한 선택적 search 기능을 지원하며, structuredContent와 YAML 콘텐츠 모두에서 limit 및 offset과 같은 페이지네이션 필드를 반환합니다. 또한 선택적 tier 필드는 null도 허용하는데, 이는 티어 필터를 생략한 것(모든 티어)과 동일한 의미입니다.
Memory MCP 워크플로우는 원자적 도구(atomic tools)를 유지하면서 제한된 복합 기능성(bounded composite ergonomics)을 지원합니다:
memory_add: 선택적 pinned 및 links_to를 지원합니다 (최선의 노력 — 응답에서 links_failed 확인).
memory_read: links_to와 linked_by를 통해 방향성 링크 요약(directional linked summaries)을 높은 신호 필드(name, changed_at, tier, tags, pinned, ref)와 함께 반환합니다. 부작용 없이 읽으려면 noPromote:true를 사용하십시오.
- Memory MCP 페이로드는
changed_at을 사용하며, access_count, last_accessed_at, created_at, 또는 updated_at은 노출하지 않습니다.
space_get은 이제 하나의 스페이스에 대한 개요 요약(orientation summary)을 반환합니다:
- 전체 메모리 수(total memory count), 활성 체크포인트 수(active checkpoint count), 그리고 티어별 수(per-tier counts)를 포함하는
overview
changed_at을 기준으로 순위가 매겨지며, tier_1, tier_2, tier_3으로 그룹화된 trending_memories
- 각 티어별
coverage 메타데이터를 제공하여 에이전트(agents)가 해당 미리 보기(preview)가 완전한지 아니면 일부만 포함하는지 알 수 있습니다.
checkpoint_query와 일치하는 체크포인트 항목을 가진 복수형 active_checkpoints
세션 연속성(session continuity)을 위해 Checkpoint MCP 도구도 사용할 수 있습니다: