
sodam-ai/sodam_o-brain
Browser automation클로드코드 대화의 결정·약속·금지를 자동으로 기억하고, 검색·2D/3D 지식그래프·타임라인으로 보여주는 100% 로컬 기억 도구. 내보내기(6종)·가져오기(미리보기·되돌리기)·백업·복원, 의미검색 중단 알림, MCP 7도구 제공. 기억 데이터는 이 PC 밖으로 나가지 않으며 API 키·과금이 없습니다.
개요
AI는 천재지만 대화가 끝나면 모든 걸 잊어버립니다. O-Brain은 그 AI 옆에 두는 **예요. 중요한 말을 알아서 적어두고, 언제든 꺼내줍니다. Claude Code는 MCP 도구 연동·플러그인 설치 시에만 필요. 웹 대시보드는 Claude Code 없이도 사용 가능. 이 문서를 읽고 있다면 O-Brain 파일은 이미 내 컴퓨터에 있습니다. 프로젝트 폴더 위치만 확인하면 됩니다(현재 이 PC 기준 절대경로). 이 저장소는 공개(public)라 별도 권한 없이 받을 수 있습니다. (비공개로 바뀌면 접근 권한이 필요해요.) 예시: 저장소를 C:\Tools\O-Brain에 내려받았다면 cd C:\Tools\O-Brain\app → O-Brain 로컬 서버 ▶ http://127.0.0.1:7740 메시지가 나오면 성공. : AI 임베딩 모델(약 90 MB)을 자동 다운로드합니다. 1~3분 소요. 이후 실행부터는 즉시 시작. 새 버전을 받은 뒤에는 아래 순서로 해 주세요. Windows는 실행 중인 파일을 바꿀 수 없어서 **이 중요해요.
README
소담 오브레인 (SoDam O-Brain) — AI 기억 시스템
AI와 나눈 대화에서 중요한 결정·약속을 자동으로 저장하고, 지식 그래프로 시각화하는 완전 로컬 기억 도구.
비유 한 줄: AI는 천재지만 대화가 끝나면 모든 걸 잊어버립니다. O-Brain은 그 AI 옆에 두는 자동 메모 노트예요. 중요한 말을 알아서 적어두고, 언제든 꺼내줍니다.
목차
- 핵심 기능
- 사전 준비물
- 다운로드 방법
- 설치 (2단계) · 업데이트하기
- Claude Code 플러그인 방식 (선택)
- MCP 도구 연동 (Claude Code)
- 빠른 시작
- 실행 · 사용 방법
- 주요 명령어
- 파일·데이터 위치
- 워크플로우
- 아키텍처 요약
- 보안 개요 · 데이터 흐름
- 업데이트 내용 요약
- 문제해결 빠른 참조
- FAQ
- 라이선스 · 저작권 · 상업적 용도
핵심 기능
| 기능 | 설명 |
|---|---|
| 100% 로컬 | 모든 기억이 내 PC에만 저장됩니다. 외부 서버·클라우드 전송 없음 |
| 하이브리드 검색 | 키워드(FTS5) + 의미 유사도(벡터 검색)를 동시에 사용 |
| 지식 그래프 | 기억들을 2D/3D 점과 선으로 시각화 |
| 최단경로 찾기 | 상세 패널에서 다른 기억을 골라 "경로 찾기"를 누르면 두 기억이 관계로 몇 단계를 거쳐 이어지는지 찾아 그래프에서 그 경로를 강조 표시(탭 전환·2D/3D 전환 후에도 강조 유지). 연결이 없으면 "연결된 경로가 없어요"로 안내 |
| 시간여행 | 날짜 지정으로 그 날 기준 살아있던 기억만 조회 |
| 신뢰도 감쇠 | AI 추출 기억은 30일 반감기로 신뢰도 자동 감소 |
| 보안 필터 | API 키·비밀번호 자동 제거 후 저장 ([REDACTED]) |
| 자동 백업 + 백업 카드 | 서버를 켤 때·삭제/병합/가져오기 직전에 자동 백업(종류별로 따로 보관). 헤더 ⬇ 데이터 화면의 백업 카드에서 목록(종류·날짜·기억 건수·“열어서 확인함”)·“지금 백업 만들기”(.db)·“이식용 백업”(.json.gz, 다른 PC로 옮기기)·내려받기, 되돌리기는 npm run restore |
| MCP 연동 | Claude Code에서 7개 도구로 기억 저장·검색·관계 관리 |
| 고아 노드 시각화 | 관계 없는 기억에 점선 테두리 표시 |
| 일괄 선택·삭제 | 여러 기억을 한 번에 선택해 삭제 + 10초 안에 되돌리기 |
| ⚙ 설정 페이지 | 목록 개수·그래프 노드 개수·자동 새로고침·테마·안내 배너를 화면에서 직접 조절, 브라우저에 저장돼 계속 유지 |
| 중복 기억 정리 | 비슷한 기억 쌍을 자동으로 찾아 보여주고, 확인 후 병합·삭제(백업+10초 되돌리기) |
| 완전일치 중복 일괄 정리 | 내용이 완전히 똑같은 기억 쌍이 여러 건이면 “완전일치만 전부 한번에 정리” 버튼 하나로 모두 삭제(기존 건별 확인 방식과 별개, 백업+10초 되돌리기 동일 적용) |
| API 토큰 검증 | 모든 API 요청에 로컬 토큰 검사, 없거나 틀리면 차단 |
| 성능 가드 | 기억이 많아지면(1500건+) 그래프 연산을 자동으로 단순화해 멈춤 방지 |
| 믿을 수 있는 검색 순위 | 사람이 확인한 기억이 자동추출 노이즈보다 검색 결과 위쪽에 오도록 관련도·중요도·최신성·신뢰도를 함께 반영 |
| 저신뢰 기억 필터 | 목록 탭에서 자동 추출 신뢰도가 낮은(50% 미만) 기억만 골라 검토 가능 |
| 그래프 안정성·키보드 접근성 | 그래프를 못 불러오면 오류 안내+다시 시도 버튼 표시, 마우스 없이 Tab·Enter만으로 그래프의 모든 기억을 탐색·조회 가능 |
| 노이즈 기억 필터 | 목록 탭에서 대화 요약·인용문이 실수로 기억으로 잘못 저장된 것을 골라 확인·일괄 정리(전체 선택 버튼) |
| 관계 제안 큐 | 개요 탭에서 연결 없는 기억을 하나씩 보여주고, 비슷한 기억과 연결할지 사람이 직접 결정(자동 연결 아님) |
| 내보내기 6종 | 헤더 ⬇ 데이터 화면에서 기억을 JSON·JSON Lines·CSV(엑셀)·마크다운·텍스트·HTML(인쇄→PDF) 파일로 — 전체/지금 목록/고른 것/프로젝트 하나, 폴더 경로 빼기(기본), 압축(.gz), 내려받기 또는 이 PC 폴더에 저장 |
| 가져오기 | 위 형식 파일(JSON·JSONL·CSV·TSV·마크다운·TXT, .gz 포함)을 끌어다 놓기 → 미리보기(새것·중복·시크릿 가림·오류) → 확인 → 자동 백업 → 진행 바 → 30분 안 되돌리기. 외부 파일은 "검토 필요"로 들어와 새 대화에 자동으로 불러오지 않음 |
사전 준비물
| 항목 | 요구 사항 |
|---|---|
| 운영체제 | Windows 10 / 11 (64-bit) |
| Node.js | 26.7.x (nodejs.org에서 설치). 이 프로젝트는 app/package.json의 engines(~26.7.0)와 app/.nvmrc로 26.7 계열에 맞춰져 있어요. Node가 다른 버전이면 기억 저장이 조용히 실패할 수 있습니다 |
| 저장 공간 | 500 MB 이상 (임베딩 모델 ~90 MB 포함) |
| RAM | 4 GB 이상 (8 GB 이상 권장) |
| 브라우저 | Chrome, Edge, Firefox 등 |
Claude Code는 MCP 도구 연동·플러그인 설치 시에만 필요. 웹 대시보드는 Claude Code 없이도 사용 가능.
다운로드 방법
이 문서를 읽고 있다면 O-Brain 파일은 이미 내 컴퓨터에 있습니다. 프로젝트 폴더 위치만 확인하면 됩니다(현재 이 PC 기준 절대경로).
Git으로 받는 경우(개발자용):
git clone https://github.com/sodam-ai/SoDam_O-Brain.git
cd SoDam_O-Brain
이 저장소는 공개(public)라 별도 권한 없이 받을 수 있습니다. (비공개로 바뀌면 접근 권한이 필요해요.)
설치 (2단계)
1단계: 의존성 설치 (터미널에서)
cd \app
npm install
예시: 저장소를
C:\Tools\O-Brain에 내려받았다면cd C:\Tools\O-Brain\app
2단계: 서버 시작
npm start
→ O-Brain 로컬 서버 ▶ http://127.0.0.1:7740 메시지가 나오면 성공.
브라우저에서 열기:
http://127.0.0.1:7740
첫 실행 시: AI 임베딩 모델(약 90 MB)을 자동 다운로드합니다. 1~3분 소요. 이후 실행부터는 즉시 시작.
업데이트하기
새 버전을 받은 뒤에는 아래 순서로 해 주세요. Windows는 실행 중인 파일을 바꿀 수 없어서 먼저 모두 끄는 것이 중요해요.
- O-Brain 서버를 켜 둔 터미널에서
Ctrl+C로 끄고, 클로드코드 창도 모두 닫아요. - 새 버전을 받아요 — git으로 받았다면
git pull, 압축 파일이면 새로 받은 내용으로 덮어써요. (app/data/안의 내 기억은 건드리지 않아요.) - 터미널에서
app폴더로 가서npm ci를 실행해요 — 저장소의package-lock.json에 적힌 검증된 버전 그대로 설치해요(npm install보다 안전해요). 몇 분 걸릴 수 있어요. npm run selftest로 점검해요(✅가 쭉 나오고 마지막에 🎉가 나오면 정상). 이어서npm start로 서버를 켜요.- 클로드코드 플러그인을 쓰고 있다면
npm run plugin:pin을 한 번 실행한 뒤, 새 클로드코드 창에서/plugin으로 업데이트해요. - 브라우저에 이전에 열어 둔 O-Brain 화면이 있다면 “서버가 다시 시작된 것 같아요” 안내가 뜰 수 있어요. 그때는 화면 새로고침 버튼(또는
F5)을 누르면 돼요.
서버를 켤 때마다 기억 데이터베이스는 자동으로 백업되고 구조도 자동으로 맞춰져요. 무언가 이상하면 아래 "문제해결 빠른 참조"의
npm run restore로 되돌릴 수 있어요.
Claude Code 플러그인 방식 (선택)
Claude Code를 사용 중이라면 플러그인으로도 설치 가능합니다. 반드시 2단계로 나눠서 실행하세요(한 번에 설치 시도 시 “Marketplace not found” 오류):
/plugin marketplace add \plugin
/plugin install o-brain@o-brain-local
예시:
/plugin marketplace add C:\Tools\O-Brain\plugin
⚠️ 설치(또는 업데이트) 전에 한 번만:
/plugin으로 설치하면 플러그인 파일이 Claude Code의 캐시 폴더로 복사돼서 옆에app폴더가 없어집니다. 그래서 설치·업데이트 전에 터미널에서app폴더로 가서npm run plugin:pin을 한 번 실행해 O-Brain 위치를 등록해 주세요(내 사용자 폴더의.obrain/root파일에 위치 한 줄이 저장됩니다). 등록하지 않으면 대화를 시작할 때 “app 폴더를 찾지 못했어요” 안내가 나오며, 그때 같은 명령을 실행하면 됩니다.
설치 후 Claude Code 재시작 → 슬래시 명령어 사용 가능:
| 명령 | 하는 일 |
|---|---|
/o-brain:status |
현재 기억 수·상태 조회 |
/o-brain:selftest |
저장·검색·보안 일괄 점검 (✅✅✅이면 정상) |
/o-brain:remember |
현재 대화에서 결정 추출·저장 |
/o-brain:link |
기억끼리 관계 연결 |
/o-brain:backup |
수동 백업 생성 |
/o-brain:open |
브라우저로 대시보드 열기(서버가 꺼져 있으면 자동으로 켬) |
MCP 도구 연동 (Claude Code)
Claude Code settings.json에 등록하면 대화 중 기억을 바로 저장·검색할 수 있습니다:
{
"mcpServers": {
"o-brain": {
"command": "node",
"args": ["C:/절대경로/app/src/mcp-server.mjs"]
}
}
}
경로는 절대 경로, 슬래시(
/) 사용 — 백슬래시(\) 쓰면 오작동할 수 있습니다.
사용 가능한 MCP 도구: save_memory, search_memory, get_memory, get_related, get_timeline, add_relation, list_categories
빠른 시작
npm install(최초 1회) →npm start- 브라우저에서
http://127.0.0.1:7740열기 - (Claude Code 사용자) 평소처럼 대화 중 또렷한 결정 문장을 말하고
/clear→ 자동 저장 - 화면 우측 상단 ⚙ 설정에서 목록 개수·그래프 노드 개수 등을 취향대로 조절
실행 · 사용 방법
실행
# app 폴더에서 실행
npm start # 서버 시작 (기본 포트 7740)
$env:OBRAIN_PORT=7741; npm start # 포트를 바꿔서 시작 (PowerShell)
서버 종료: 터미널에서 Ctrl + C.
사용 — 웹 대시보드 (5개 탭)
| 탭 | 설명 |
|---|---|
| 그래프 | 기억을 점과 선으로 표시하는 지식 맵. 첫 화면. |
| 개요 | 총 기억 수, 유형별·카테고리별 분포, 연결 많은 기억 |
| 목록 | 기억을 카드 형태로 나열. 선택 모드로 일괄 삭제 가능 |
| 타임라인 | 시간순으로 기억 표시 |
| ⚙ 설정 | 목록/타임라인/개요 불러오기 개수, 그래프 표시 노드 개수, 자동 새로고침 켜짐·주기, 테마, 안내 배너 표시 여부 — 5개 항목을 이 화면에서 직접 조절. 값은 브라우저(localStorage)에 저장돼 다음에 열어도 유지됨 |
화면 미리보기
아래는 예제(합성 더미) 데이터로 채운 실제 화면입니다 — 실제 개인 기억이 아닙니다.
그래프 뷰 — 2D/3D 지식그래프 (빨강 점선=모순됨, 초록 실선=뒷받침)
개요 탭 — 통계·분포
목록 탭 — 카드 목록 + 상세 패널
타임라인 탭 — 시간순 기억
설정 탭 — 5개 조절 항목
데이터 화면 — 내보내기 · 가져오기 · 백업
헤더 오른쪽의 ⬇ 버튼(또는 Ctrl+K → “데이터 관리”)으로 엽니다. 위에서부터 내보내기 · 가져오기 · 백업 세 칸이에요.
① 내보내기 — 기억을 파일로 꺼내요(원본은 그대로 남아요).
| 쓰임새 | 고를 형식 |
|---|---|
| 엑셀·구글 시트에서 보기 | CSV (한글이 안 깨져요, 관계는 빠져요) |
| 다른 PC로 옮기기·통째로 보관 | JSON (관계 포함, 다시 가져올 수 있어요) |
| 옵시디언·노션 같은 메모 앱 | 마크다운(.md) |
| 읽기·인쇄·PDF | HTML (열어서 Ctrl+P → “PDF로 저장”) |
| 개발자·데이터 분석 | JSON Lines (한 줄에 기억 하나) |
| 메모장·메신저에 붙여넣기 | 텍스트(.txt) |
범위는 전체 / 지금 목록에 불러온 것 / 목록에서 고른 것 / 프로젝트 하나만 중에서 고릅니다. "폴더 경로 빼기"는 기본으로 켜져 있어요(남에게 보여줄 때 안전합니다. 내 다른 PC로 옮길 때는 끄세요). "내려받기"는 브라우저 다운로드 폴더로, "이 PC 폴더에 저장"은 app/data/export/에 저장하고 위치를 알려 줍니다. 압축(.gz) 옵션도 있어요.
② 가져오기 — 파일에서 기억을 들여와요.
- 파일을 끌어다 놓거나 “파일 고르기” —
JSON·JSON Lines·CSV·TSV·마크다운·텍스트, 그리고 이걸.gz로 압축한 것(최대 5MB · 5,000건). 엑셀.xlsx는 "다른 이름으로 저장 → CSV UTF-8"로 바꿔 올려 주세요. 한글 윈도우 CSV(CP949)도 읽어요. - 미리보기 — 새로 들어올 기억, 이미 있어서 건너뛸 것, 읽지 못한 줄, 시크릿이 가려진 기억을 먼저 보여 줘요. 이 단계에서는 아무것도 저장되지 않아요.
- "가져오기"를 누르면 먼저 지금 기억을 자동 백업하고 저장해요(진행 바 표시. 중간에 멈추면 아무것도 저장되지 않아요).
- 끝난 뒤 **30분 안에는 “되돌리기”**로 방금 가져온 것만 지울 수 있어요.
⚠️ 외부에서 받은 파일은 기억 속 문장이 AI에게 지시처럼 섞일 수 있어서, 기본으로 **“검토 필요”(신뢰도 40%)**로 들어오고 새 대화에 자동으로 불러오지 않아요. 기억을 열어 내용을 확인하고 저장하면 정식 기억이 됩니다. 내가 직접 만든 파일(이 화면에서 내보낸 JSON 등)이면 “믿을 수 있는 파일” 체크를 켜세요 — 파일에 적힌 출처·신뢰도를 그대로 씁니다. 비밀번호·API 키로 보이는 부분은 가져올 때도 자동으로 가려져요.
③ 백업 — 사고에 대비한 사본이에요.
- 자동: 서버를 켤 때, 그리고 기억을 지우기·합치기·가져오기 직전에 만들어져요. 종류별로 따로 보관해요(서버 시작 7개 · 위험 작업 직전 7개).
- 직접: “지금 백업 만들기”(
.db, 10개까지)와 “이식용 백업”(.json.gz, 10개까지 — 다른 PC로 옮길 때 새 PC의 "가져오기"에 올려요). 직접 만든 백업은 자동 백업에 밀려나지 않아요. - 목록에는 종류·날짜·용량·기억 건수·"열어서 확인함 ✔"이 보이고, 내려받기로 파일을 따로(USB·클라우드) 보관할 수 있어요.
- 되돌리기는 화면이 아니라 터미널에서 해요(열려 있는 데이터 파일을 덮어쓰면 망가질 수 있어서입니다). 서버·클로드코드 창을 모두 닫고
app폴더에서npm run restore→ 번호 선택 →yes. 지금 데이터는 먼저 자동 백업되고, 원래 파일은 지워지지 않고 옆에 남아요.
주요 명령어
# app/ 폴더에서 실행
npm start # 서버 시작 (포트 7740)
npm run selftest # 자가 진단
npm run backup # 수동 백업(.db)
npm run backup -- --portable # 이식용 백업(.json.gz, 다른 PC로 옮길 때)
npm run restore # 백업으로 되돌리기(서버·클로드코드 창을 모두 닫고 실행)
npm run status # DB 상태 조회(마지막 자동 저장 성공 여부·의미검색 상태 포함)
npm run reindex # 의미검색용 정보가 빠진 기억 채우기(의미검색이 멈췄던 뒤에)
npm run plugin:pin # /plugin 설치용 위치 등록(플러그인 설치·업데이트 전 1회)
npm run seed # 예제 데이터 입력 (테스트용)
파일·데이터 위치
| 항목 | 위치 |
|---|---|
| 기억 데이터베이스 | app/data/obrain.db |
| 백업 | app/data/backup/ (종류별 보관: 서버 시작 7 · 위험 작업 직전 7 · 직접 만든 .db 10 · 이식용 .json.gz 10) |
| 내보낸 파일 | app/data/export/ ("이 PC 폴더에 저장"을 고른 경우) |
| API 토큰 파일 | app/data/.api-token (실행마다 갱신) |
| 개인 설정 | app/.env.local (없으면 기본값 사용) |
| 이 문서 | 프로젝트 최상위(README.md/README.en.md/각 .html) |
app/web/graph.html |
의도적으로 남겨둔 초기 시제품 파일(지금 쓰는 화면은 index.html). 코드 어디서도 안 쓰이는 죽은 파일이지만, 개발 초기 기록 보존 목적으로 삭제하지 않고 그대로 둠 |
⚠️ 멈추고 확인:
app/data폴더(기억 DB)를 삭제·이동·덮어쓰기 하기 전에는 먼저npm run backup으로 백업하세요. 지운 기억은 되돌릴 수 없습니다. OneDrive 같은 클라우드 동기화 폴더 안에서는 DB가 깨질 수 있으니 쓰지 마세요.
환경 변수 (app/.env.local)
| 변수 | 기본값 | 설명 |
|---|---|---|
OBRAIN_PORT |
7740 |
서버 포트 번호 |
OBRAIN_DATA_DIR |
./data |
데이터 저장 폴더 |
OBRAIN_CAPTURE_SDK |
(꺼짐) | 1로 설정하면 프로그램이 호출한 세션(claude -p·Agent SDK 등)의 대화도 자동 저장합니다. 기본은 사람이 직접 쓴 글만 저장 |
OBRAIN_EMBED_DISABLE |
(꺼짐) | 1로 설정하면 의미검색(임베딩 모델)을 끄고 키워드 검색만 씁니다(진단·저사양용). 끄면 새 기억에 검색용 정보가 생기지 않으니, 다시 켠 뒤 npm run reindex로 채우세요 |
워크플로우
일반 사용자(웹 UI 중심): 아침에 npm start → 어제 기억 확인 → 작업 중 중요 결정 직접 입력 → 저녁에 관계 연결·정리.
Claude Code 사용자(MCP/플러그인): 대화 중 결정을 말하고 /clear로 세션 종료 → 자동 저장 → 가끔 /o-brain:open으로 화면 확인 → /o-brain:backup으로 주기적 백업.
아키텍처 요약
[Claude Code / 브라우저]
↓
[Express 서버 127.0.0.1:7740]
↓
[보안 필터] → [임베딩(로컬 AI)] → [SQLite DB]
├── FTS5 (키워드 검색)
└── sqlite-vec (벡터 검색)
기술 스택: Node.js ES Modules · Express.js v5 · SQLite (better-sqlite3) · sqlite-vec · @huggingface/transformers (all-MiniLM-L6-v2) · force-graph / 3d-force-graph · @modelcontextprotocol/sdk
보안 개요 · 데이터 흐름
- 서버는 127.0.0.1(내 PC 전용)에만 바인딩 — 외부 기기에서 접근 불가
- 기억 저장 전 API 키·비밀번호 자동 제거 (redact.mjs 처리) — GitHub·Slack·Stripe 토큰, JWT, DB 주소 속 비밀번호, “비밀번호는 …” 같은 한글 표현까지 가립니다. 다만 모든 비밀번호를 막는다고 보장하지는 않습니다(키워드 없이 적힌 임의 문자열이나 숫자·기호가 없는 비밀번호는 못 잡을 수 있음) — 민감한 값은 애초에 대화에 쓰지 않는 것이 가장 안전합니다
- 서버는 허용한 주소(
127.0.0.1·localhost+ 서버 포트)로 온 요청만 받습니다 — 악성 웹페이지가 브라우저를 속여 내 PC의 서버를 읽게 하는 “DNS 리바인딩” 공격을 막습니다(2026-10-20) - 의미검색 모델을 못 쓰는 상황이 생기면 화면 위에 경고 배너가 뜨고, 기억은 저장하되 키워드 검색으로 계속 동작합니다(조용히 엉뚱한 결과를 내지 않음)
- 서버 실행마다 새로운 로컬 API 토큰 자동 생성 (crypto.randomBytes)
data/,.env.local,*.sqlite는.gitignore에 포함 — Git에 절대 올라가지 않음- 외부 클라우드 통신 없음. 임베딩 모델도 완전 로컬 실행
- 입력값 검증: 잘못된 id·범위 밖 숫자·CORS 미허용 출처는 서버가 400/403/404로 안전하게 거부(실측 확인됨)
- 예상치 못한 서버 오류(예: 깨진 형식의 요청)가 나도 내부 파일 경로·오류 스택 정보는 절대 화면에 노출되지 않음 — 안전한 안내 문구만 표시, 상세 기록은 서버 로그에만 남음(2026-07-27 전역 에러 핸들러 추가)
- 여러 Claude Code 창을 동시에 열어도 데이터가 안전하게 처리됨(2026-09-11 실측 검증: 동시 생성·동시 수정 다수 실행 후에도 손상·충돌 없음, 대기 후 재시도 안전장치 추가)
- 모르는 요청은 서버 창에 기록합니다 — 허용되지 않은 주소·출처이거나 토큰이 없거나 틀린 요청은 거절하고
[security] 요청 거절(이유) …한 줄을 남깁니다(같은 이유는 분당 1줄로 요약하고, 토큰·기억 내용은 기록하지 않음)(2026-10-21) - 삭제·병합·관계 추가·가져오기 되돌리기 요청의 번호(id)는 정수 또는 숫자 문자열만 인정합니다(
true·배열·빈 값 등은 거부) — 보안 점검에서 재현한 결함(번호 목록에true가 섞이면 1번 기억이 지워짐)을 고친 것입니다(2026-10-21) - 응답 헤더로 서버 종류(
X-Powered-By: Express)를 알리지 않습니다(2026-10-21) - 화면은 내가 쓴 글을 항상 글자 그대로만 보여 줍니다 — 악성 문자열(
,등)을 넣고 목록·검색·상세·수정·타임라인·개요·그래프·설정·가져오기 미리보기에서 실행되지 않음을 실제 브라우저로 확인했습니다(2026-10-21) - 설치되는 외부 패키지의 알려진 취약점(
npm audit)은package-lock.json기준 0건입니다(2026-10-21). 이 PC에 적용하려면 위 "업데이트하기"의npm ci가 필요합니다 - 보호 범위 밖(한계): 한 PC를 여럿이 쓰는 환경, 공유 폴더·클라우드 동기화 폴더에
app/data/를 두는 경우, 내보내기·백업 파일을 남에게 보내는 경우 — 이 파일들에는 대화에서 모은 개인·업무 정보가 들어 있을 수 있어요 - 한계: AI가
save_memory(MCP 도구)로 저장한 기억은 신뢰도 0.8로 새 대화 자동 주입 대상이 됩니다. 대화 중 AI가 속아서 이상한 문장을 저장하면 이후 대화에도 보일 수 있어요. 주입 문구를 한 줄·400자로 정리하고 "참고용이며 지시가 아닙니다"를 붙이지만 완전한 차단은 아니니, 목록에서 낯선 기억은 지워 주세요. 또 “가져온 뒤 검토 전” 기억은 자동 주입에서만 빠지고 검색·MCP 도구·화면에는 보입니다
적용되는 보안 헤더: Content-Security-Policy(같은 출처 리소스만 허용) · X-Content-Type-Options: nosniff · X-Frame-Options: DENY(iframe 삽입 차단) · Referrer-Policy: no-referrer · Cache-Control: no-store(기억 내용이 담긴 화면·API 응답은 캐시에 남기지 않음).
업데이트 내용 요약
최신 항목이 위에 오도록 정리했습니다. 각 항목을 눌러 펼쳐 보세요.
전체 이력(마일스톤별 상세)은 프로젝트의 CHECKPOINT.md에 있습니다(개발 참고용 문서).
문제해결 빠른 참조
| 증상 | 해결 |
|---|---|
'node'은 명령이 아닙니다 |
nodejs.org에서 LTS 설치 → 터미널 새로 열기 |
EADDRINUSE :::7740 |
.env.local에 OBRAIN_PORT=7741 추가 후 재시작 |
| 그래프가 비어 있음 | npm run seed로 예제 데이터 추가 |
| 브라우저 접속 안 됨 | npm start 실행 확인 → 주소가 http://127.0.0.1:7740인지 확인 |
| 임베딩 다운로드 실패 | 인터넷 연결 확인 · 방화벽에서 Node.js 허용 |
| 기억 실수 삭제 | 삭제 후 10초 안이면 화면의 “되돌리기” 클릭. 이미 지났다면 서버·클로드코드 창을 모두 닫고 터미널(app 폴더)에서 npm run restore → 삭제 직전 자동 백업을 골라 되돌리기 |
| 설정에서 개수를 바꿨는데 그래프가 그대로 | 정상입니다 — 그래프 탭은 "표시할 노드 개수"라는 별도 설정을 씁니다(목록 개수와 다름) |
| 다운로드한 폴더/파일이 차단되거나 안 열림 | 백신이나 “다른 PC에서 옴” 경고일 수 있습니다. 파일(또는 압축파일) 우클릭 → 속성 → 차단 해제(Unblock) 체크 → 확인. 백신에서 계속 막으면 이 폴더를 예외로 등록 |
| “Windows가 PC를 보호했습니다”(SmartScreen) 창이 뜸 | 서명되지 않은 프로그램을 처음 실행할 때 나올 수 있는 경고입니다. 이 프로젝트를 직접 받았고 믿을 수 있을 때만 "추가 정보 → 실행"을 누르세요. 출처가 확실하지 않으면 멈추고 실행하지 마세요 |
| 설치나 실행에서 관리자 권한을 요구함 | 관리자 권한은 필요 없습니다. 내 사용자 폴더 안(예: C:\Users\내이름\Tools\O-Brain)에 설치하세요 |
| 화면 위에 “의미검색이 일시 중단됐어요” 배너가 뜸 | 기억은 안전하게 저장되고 키워드 검색은 그대로 됩니다. app 폴더에서 npm run status로 원인(사유 줄)을 확인하세요(인터넷 연결·Node 버전). 해결 후 npm run reindex로 빠진 검색용 정보를 채우면 배너가 사라집니다 |
| 대화를 시작할 때 "O-Brain: app 폴더를 찾지 못했어요"가 뜸 | /plugin 설치본이 O-Brain 위치를 모르는 상태입니다. O-Brain의 app 폴더에서 npm run plugin:pin을 한 번 실행하세요 |
npm install 중 better-sqlite3 관련 오류 |
미리 컴파일된 버전을 쓰도록 돼 있어 보통은 자동 해결됩니다. 그래도 실패하면 Node.js를 26.7.x로 맞춰 재설치(app/.nvmrc 참고)한 뒤 npm install을 다시 실행 |
| 잘 쓰던 중 갑자기 기억이 하나도 안 쌓이거나 그래프가 안 늘어남(오류 메시지도 안 뜸) | Windows가 Node.js를 자동 업데이트하면 이미 설치된 better-sqlite3와 버전이 안 맞아 저장이 조용히 실패할 수 있습니다(오류가 화면에 안 보이는 게 정상 — 자동 저장 기능 특성). cd app 후 npm rebuild better-sqlite3 실행 → npm run status로 정상 작동 확인. 가끔 npm run status로 점검해보는 습관을 권장 |
/plugin install이 “Marketplace not found” 오류를 냄 |
반드시 2단계로 나눠서 실행해야 합니다 — 위 Claude Code 플러그인 방식 순서(marketplace add 먼저, install은 그다음)를 그대로 다시 따라 하세요 |
| 경로에 한글이나 띄어쓰기가 있으면 오류가 남 | 설치 폴더 경로에 한글·공백이 섞이면 일부 프로그램이 인식을 못 할 수 있습니다. 영문·공백 없는 경로(예: C:\Tools\O-Brain)에 설치하는 걸 권장 |
| 3D 그래프가 안 보이거나 자꾸 끊김 | 오래된 PC나 일부 브라우저는 3D 렌더링(WebGL)이 느립니다. 그래프 화면에서 2D로 전환하거나, ⚙ 설정에서 "그래프 표시 노드 개수"를 줄여보세요 |
| 검색했는데 결과가 하나도 안 나옴 | 서버를 막 켰다면 AI 임베딩 모델을 내려받는 중일 수 있습니다(1~3분, 최초 1회만). 그래도 안 나오면 아직 저장된 기억이 없는 것일 수 있으니 npm run seed로 예제 데이터를 넣어 확인해 보세요 |
| 프로그램을 새 버전으로 바꾼 뒤 동작이 이상함 | 서버를 다시 시작하면 데이터베이스 구조를 최신 버전으로 자동으로 맞춰줍니다(자동 마이그레이션). 그래도 이상하면 서버·클로드코드 창을 모두 닫고 npm run restore로 최근 백업으로 되돌리세요(업데이트 전 자동 백업됨) |
| 서버를 다시 켠 뒤 열어 둔 화면 위에 "서버가 다시 시작된 것 같아요"가 뜸 | 정상입니다. 서버는 켤 때마다 새 접속 열쇠(토큰)를 만들어서, 이전에 열어 둔 화면은 잠시 쓸 수 없어요. 안내의 화면 새로고침(또는 F5)을 누르면 바로 이어서 쓸 수 있고, 기억은 그대로예요 |
npm audit에서 취약점이 보임 |
저장소의 package-lock.json은 이미 수정된 버전으로 갱신돼 있어요. 서버·클로드코드 창을 모두 끄고 app 폴더에서 npm ci를 실행해 새 버전을 설치하세요(위 “업데이트하기” 참고) |
| 개요 탭에서 카드 오른쪽 글씨가 잘림 | 이전 버전의 문제입니다(공백 없는 긴 경로·주소가 들어 있으면 카드가 잘림). 최신 버전으로 업데이트하세요 |
FAQ (자주 묻는 질문)
Q. 데이터는 어디에 저장되나요?
A. app/data/obrain.db(SQLite 파일)에만 저장됩니다. 외부로 전송되지 않습니다.
Q. 비용이 드나요? A. O-Brain 자체는 무료입니다. Claude Code/Anthropic API를 쓰는 경우 그 서비스의 요금이 별도로 적용될 수 있습니다.
Q. 그래프 탭 노드 개수와 목록 개수 설정은 같은 건가요? A. 아닙니다. ⚙ 설정 페이지의 "한 번에 불러올 개수"는 목록/타임라인/개요에만, "표시할 노드 개수"는 그래프 탭에만 각각 따로 적용됩니다.
라이선스 · 저작권 · 상업적 용도
Apache License 2.0 © SoDam AI Studio, 2026
| 항목 | 내용 |
|---|---|
| 개인 사용 | 자유롭게 사용 가능 |
| 수정 · 복제 | 허용 (저작권 고지 보존 필수) |
| 상업적 사용 | 허용 — 수정·복제·포크·재배포·판매·서비스 운영·교육 자료 활용·회사/고객사 납품 모두 Apache-2.0 조건(저작권·라이선스 고지 보존) 하에 가능 |
| 금지 사항 | “Claude”·“Anthropic” 등 타인 상표·로고를 O-Brain 자체 상표처럼 쓰거나, 공식 제휴·인증인 것처럼 표시하는 것 |
| 책임 제한 (Limitation of Liability) | 이 소프트웨어를 사용해 발생하는 어떤 손해(데이터 손실 포함)에도 저작권자는 법적 책임을 지지 않습니다 |
| 보증 | 없음 (AS-IS, No Warranty) — 사용 결과 책임은 전적으로 사용자에게 있습니다 |
| 외부 서비스 | Claude / Anthropic 등 외부 서비스는 O-Brain과 별개로 그 자체의 이용약관이 적용됩니다(아래 참고) |
- 설치할 때 함께 깔리는 외부 패키지 213개 전부(2026-10-21, 각 패키지의
license표기 전수 조사)에 라이선스가 적혀 있고 대부분 허용형입니다(MIT 151 · ISC 27 · BSD 19 · Apache-2.0 7 외). GPL·AGPL 계열은 0건입니다. 직접 쓰는 라이브러리(better-sqlite3, sqlite-vec, @huggingface/transformers, force-graph, 3d-force-graph, express, @modelcontextprotocol/sdk)와 로컬 AI 모델(all-MiniLM-L6-v2, Apache-2.0)도 모두 허용형(MIT/Apache-2.0)입니다. 다만 함께 깔리는 이미지 처리 도구(sharp)의 Windows용 바이너리(@img/sharp-win32-x64)는 LGPL-3.0 라이브러리 여러 개와 MPL-1.1(cairo) 을 묶어 둔 것이라 약한 카피레프트 조건이 붙습니다. O-Brain은 이미지 처리를 쓰지 않고, 이 바이너리를 저장소에 싣지도 않으며(설치할 때 npm이 내려받음), 고쳐 쓰지도 않으므로 개인·내부 사용에는 보통 지장이 없습니다. 다만node_modules를 묶어 재배포하거나 고객사에 납품하기 전에는 전문가 확인을 권장합니다(이 문서는 법률 자문이 아닙니다). 자세한 목록은NOTICE파일에 있습니다. - Claude Code/Anthropic API로 만든 산출물(대화 결과)의 소유권: Anthropic 상업 이용약관 원문 기준으로 산출물은 사용자 소유이며, 대화 내용은 Anthropic의 모델 학습에 쓰이지 않습니다(anthropic.com/legal/commercial-terms 원문 확인, 2026-08-10). 다만 요금제·세부 사용 정책은 계정마다 다를 수 있으니 정확한 내용은 그 약관 원문에서 직접 확인하시기 바랍니다 — 이건 O-Brain이 아니라 Anthropic이 정하는 부분입니다.
- “Claude”, “Anthropic”, “Codex”, "OpenAI"는 각 회사의 상표입니다. O-Brain은 이들과 공식 제휴·인증 관계가 없고, 로고나 브랜드 이미지를 사용하지 않습니다. ("Claude Code와 함께 작동함"이라는 설명은 가능하지만, 공식 인증 제품처럼 보이게 하지 않습니다.)
- 제품명 "O-Brain"은 개인 프로젝트의 작업명입니다. 정식 상표 등록 여부는 확인되지 않았으므로, 이 이름으로 상표를 출원하거나 상업적으로 크게 내세우기 전에는 별도로 공식 상표 데이터베이스를 확인하는 것을 권장합니다.
- AI 생성 콘텐츠 확인 의무: 이 프로젝트의 코드·문서(설계 문서 포함)는 AI가 생성에 관여했습니다. 이 프로젝트를 실제로 배포·재배포·판매·회사/고객사 납품 등 상업적으로 활용하시기 전에는, 포함된 AI 생성 코드·문서·이미지에 대해 저작권 귀속·출처·상업적 이용 가능 여부·기존 저작물과의 유사성(특히 코드 조각)을 사용자가 직접 최종 확인하시기 바랍니다 — 이 프로젝트가 그 확인을 대신 보증하지 않습니다.
- 재배포할 때 지킬 것(Apache-2.0 요약): ①
LICENSE사본을 함께 줍니다 ② 내가 고친 파일에는 "고쳤다"고 표시합니다 ③ 원래의 저작권·특허·상표·출처 고지를 지우지 않습니다 ④NOTICE의 내용을 유지합니다. 이 요약은 이해를 돕기 위한 것이고, 정확한 조건은LICENSE원문이 기준입니다. - 라이선스가 주지 않는 것: 저작권·라이선스 고지를 지우는 것, "SoDam AI Studio"나 “O-Brain” 이름을 제휴·보증처럼 쓰는 것(Apache-2.0은 상표 사용권을 주지 않습니다), 타인의 상표·로고를 쓰는 것.
- 처음 실행할 때 인터넷이 필요한 부분: 임베딩 모델(
Xenova/all-MiniLM-L6-v2, 약 90MB)을 Hugging Face에서 한 번 내려받습니다(Apache-2.0, 2026-10-21 공개 정보로 확인). 그 뒤 기억 저장·검색·화면은 내 PC 안에서만 동작합니다. - 내보내기·백업·가져오기 파일: 내보낸 파일과 백업에는 클로드코드 대화에서 모은 개인·고객사·업무 정보가 그대로 들어갈 수 있습니다. 메신저·메일·클라우드·저장소에 올리면 외부에 공개된 것으로 보고, 올리기 전에 내용을 확인하세요(O-Brain은 파일을 어디로도 자동 전송하지 않습니다). 반대로 남이 만든 파일을 가져올 때 그 안의 글에 대한 저작권·개인정보 책임은 가져오는 사람에게 있습니다.
- 직접 확인해야 하는 것: Claude·Anthropic 등 AI 서비스의 요금제·이용 정책·약관(O-Brain과 별개), 모델 사용 정책, 외부 서비스 약관, 폰트·이미지·아이콘을 새로 넣을 때 그 라이선스. 지금 화면은 시스템 글꼴과 직접 그린 인라인 SVG만 쓰고 외부 폰트·이미지·CDN이 없습니다(2026-10-21 전수 검색). 문서의 스크린샷에는 합성 데모 기억만 담겨 있습니다.
- 법무·전문가 검토가 필요한 것: ① LGPL·MPL 바이너리가 든
node_modules의 재배포·납품 ② “O-Brain” 이름의 상표 ③ AI가 만든 코드·문서의 저작권 귀속과 유사 저작물 여부 ④ 면책·책임 제한 문구의 법적 효력 ⑤ Anthropic 약관의 “경쟁 제품” 조항이 내 사용에 해당하는지. - 이 README·라이선스 안내는 법률 자문이 아닙니다. 계약·납품·재배포 등 실제 상업적 활용을 계획 중이라면, 위 내용을 참고 자료로만 쓰고 필요 시 변호사 등 전문가의 확인을 받으시기 바랍니다.
- 라이선스 전문:
LICENSE파일 · 의존성 고지 전문:NOTICE파일
이 문서와 README.html의 내용은 동일합니다. 영문판: README.en.md
설치
This server does not publish a one-line install command.
Open the repository installation guide MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →설정
{
"mcpServers": {
"o-brain": {
"command": "node",
"args": ["C:/절대경로/app/src/mcp-server.mjs"]
}
}
}