TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
代理設計、協調、持久記憶、治理、評估,以及開放協議。為創辦人及其代理艦隊提供單一基礎層——人類掌握鑰匙。
AI 翻譯
Agent design, orchestration, durable memory, governance, evals, and an open protocol. One substrate for founders and their agent fleets — the human holds the keys.
生產力Python · JavaScriptGitHub @frankxai上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證將您的 Claude.ai 與 ChatGPT 匯出轉換為 Obsidian 第二大腦,使用一個未被檢索工具指向的第二金庫,並以僅追加日誌記錄每次交叉。Python,MIT。
AI 翻譯
Turn your Claude.ai and ChatGPT exports into an Obsidian second brain, with a second vault no retrieval tool is pointed at and an append-only log of every crossing. Python, MIT.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
An Obsidian second brain that reflects on its own corpus, cites everything it claims, and refuses to trust its own synthesis until an adversarial pass verifies it. Two vaults, and an append-only log of every crossing between them. Coding-agent-native — the compute is the session you already pay for.
Status: v0.3.0 — proactive reflection engine + hard VERIFY gate.檢視完整 README ↗Kura browser captures now use the existing two-vault ingestion pipeline. See capture and automation SOP for supported inputs, repeat processing and source-change review.
An Obsidian second brain that reflects on its own corpus, cites everything it claims, and refuses to trust its own synthesis until an adversarial pass verifies it. Two vaults, and an append-only log of every crossing between them. Coding-agent-native — the compute is the session you already pay for.
Status: v0.3.0 — proactive reflection engine + hard VERIFY gate.
A bootable template for a working AI-augmented, two-vault Obsidian system. It ingests your AI chat exports, distills them into atomic notes, and — new in v0.3.0 — runs a scheduled reflection pass that asks questions of your own corpus and refuses to write an answer down until it's cited and adversarially checked. Retrieval is table stakes. The thing every other tool in this space skips is trustworthy synthesis you didn't ask for.
brain/ vault — MCP-wired. Your LLM (Claude Desktop, Claude Code, etc.) reads + writes here. Publishable.private/ vault — no MCP server points here, so nothing an LLM browses reaches it. The one exception is deliberate: /distill-inbox reads a raw conversation when you invoke it, through the pointer its stub names. Sensitive content lives here permanently.Every row below is a structural gap, not a missing checkbox — see docs/reflection-engine.md for the full comparison and why each gap is architectural.
| This (SBO) | BASB (Tiago Forte) | Mem0 | Zep / Graphiti | Letta / MemGPT | Plain Obsidian + AI plugin | |
|---|---|---|---|---|---|---|
| Proactive reflection | Yes — scheduled /reflect asks questions of the corpus unprompted | No — human runs Capture→Organize→Distill→Express by hand | No — extract-and-store only, no synthesis | No — recall is excellent, but on-demand | Partial — sleep-time agent compresses/merges, doesn't originate questions | No |
| Sovereign / local | Yes — local vault, local embeddings, nothing leaves the machine unless you export it | N/A (a methodology, not software) | No — managed cloud by default | Usually managed / hosted | Managed runtime | Yes, but no synthesis layer to be sovereign about |
| Cited-lens honesty | Every reflection carries {source_path, anchor} and is framed as a lens, not a verdict | N/A | No — facts stored, not framed | No — graph recall, not framed synthesis | No — merges without citation | No |
| Adversarial verify | Yes — distinct critic pass, 4 hard checks, failing candidates are dropped and logged | No | No | No | No | No |
| Privacy: two-vault split | Yes — filesystem boundary, MCP physically cannot resolve private/ | N/A | No — one store | No — one graph | No — one memory store | No — one vault, AI plugin sees everything |
Built-in-public receipts, scale stats only:
summary field (when the export carries one) is captured into brain frontmatter — new in 0.3, so agents read the AI's own compression instead of re-deriving it.memories.json export (the AI's pre-distilled cross-conversation memory) writes to a dedicated high-signal _memory-export.md that downstream agents are told to weight above any single conversation.docs/swarm-curation.md./distill-inbox, /patterns-detect, /people-update, /sbo-verify, /reflect) runs against the same wired vault. See docs/obsidian-mcp.md.pytest works in a fresh clone with no pip install -e . — see What's new below).Request your Claude.ai export first — it usually arrives in minutes, longer on a large account, and the download link expires 24 hours after it lands. Wire the system while you wait.
git clone https://github.com/frankxai/second-brain-os
cd second-brain-os
# Install the ingestion package
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
# Run setup
pwsh ./scripts/setup.ps1 # Windows
./scripts/setup.sh # macOS / Linux
See docs/getting-started.md for the full walkthrough.
Nine stages, each grounded in something you can point at on disk. No stage asserts anything that wasn't first retrieved from a real file. Full spec: docs/reflection-engine.md.
1 CAPTURE raw signal lands untouched — chat exports, daily notes, drops
v
2 INGEST dual-write applies the privacy boundary at the door
v private/ <- raw conversation, memories.json, audit row
v brain/ <- status:needs-summary stub + _INDEX.md corpus map
v
3 DISTILL /distill-inbox turns stubs into atomic notes (idea/learning/decision/…)
v
4 CONNECT /people-update refreshes _moc/ link-lists + per-person cross-refs
v
5 REFLECT *** new in v0.3.0 ***
v /reflect asks 3-5 cited questions of the whole corpus, weekly
v
6 SURFACE right memory, right moment — _moc/ + reflection output at session open
v
7 ACT highest-confidence verified insight -> content draft or next-action
v (human gates anything that goes external)
v
8 VERIFY *** hard gate, new in v0.3.0 ***
v citation-real | contradiction-queued | lens-framed | privacy-safe
v any FAIL drops the candidate — logged, never softened
v
9 COMPOUND reflection-log delta tells next week's run which errors to avoid
sbo-ingest has three modes. Default is agent — recommended.
| Mode | Cost | Compute | When to use |
|---|---|---|---|
agent (default) | $0 extra | Your coding-agent session | You have Claude Code / ChatGPT / Cursor / Codex / Gemini open. Best quality (agent cross-references your vault). |
api | ~$0.005/convo on Haiku 4.5 | Anthropic API | Batch automation. No coding-agent session handy. |
dry-run | $0 | None — stubs only | Smoke-test the install. Verify the dual-write boundary. |
sbo-ingest path/to/conversations.jsonl \
--brain-root /path/to/brain \
--private-root /path/to/private
# Writes raw to private/, stubs (status: needs-summary) to brain/_inbox/, refreshes _INDEX.md
ChatGPT exports can be passed as the downloaded ZIP without extracting it:
sbo-ingest path/to/chatgpt-export.zip \
--brain-root /path/to/brain \
--private-root /path/to/private
Both legacy conversations.json exports and current numbered
conversations-000.json, conversations-001.json, … shards are supported. ZIP
members are processed one shard at a time to keep peak memory bounded. Ambiguous,
nested, duplicated, mixed legacy/sharded, and gapped shard layouts fail closed.
Re-ingestion refreshes private raw sources atomically while preserving existing
same-conversation brain notes even after they move out of _inbox/. Completed runs write private receipts under
private/_distill/imports/.
If a memories.json sits next to the export (or you pass --memories path/to/memories.json), it's parsed and written to brain/_inbox/{platform}/_memory-export.md automatically — no separate command needed.
Then in Claude Code (or any other coding agent — see docs/cross-ai-portability.md):
/distill-inbox
The agent walks every stub, reads the linked raw conversation in private/, produces a real summary, writes it back, updates status: triage, and logs to private/_distill/audit.jsonl. No extra API spend.
sbo-ingest path/to/conversations.jsonl \
--brain-root /path/to/brain \
--private-root /path/to/private \
--mode api # or just set $ANTHROPIC_API_KEY
sbo-ingest tests/fixtures/claude-ai-export-sample.jsonl \
--brain-root /path/to/brain \
--private-root /path/to/private \
--mode dry-run # legacy --dry-run flag also works
/reflect — the reflection engine (Stage 5 of the pipeline). Weekly: gather the highest-signal 100 notes cheaply (frontmatter only, no per-note LLM call), generate 3-5 cited questions that cross-cut the corpus, synthesize each as a lens (never a verdict), run the VERIFY gate, write survivors to patterns/{YYYY}-W{ww}-reflection.md, log a reflection-delta so next week diversifies instead of looping. Spec: docs/reflection-engine.md./sbo-verify gained a reflection mode: four independent checks (citation-real, contradiction-queued-for-human, lens-framing, privacy-safe) run as a distinct critic pass, never the same generation that wrote the candidate. Any single FAIL drops the candidate — it's logged, not softened. Every surviving artifact carries a sip_attestation YAML block recording what verified it and when.memories.json + per-conversation summary ingestion — the export's own pre-distilled cross-conversation memory now lands as a dedicated high-signal _memory-export.md, and each conversation's own summary field (when present) is captured straight into brain frontmatter instead of being re-derived._INDEX.md corpus map — every ingest run regenerates a newest-first {date, title, summary} table per platform in brain/_inbox/{platform}/_INDEX.md, so an agent (or you) can read the whole corpus shape in one file instead of opening every stub.conftest.py puts src/ on sys.path, so pytest collects and runs in a fresh clone without pip install -e . first (you still need the runtime deps installed — pip install -e . remains the one-command way to get those).docs/obsidian-mcp.md — full MCP wiring guide: the HTTP-vs-HTTPS gotcha that silently breaks every tool call, the insecure-HTTP-off-by-default toggle, working config for Claude Code/Desktop, and a troubleshooting table.~/second-brain/
├── brain/ # 10 community plugins, MCP-wired, agent-maintained zones
│ ├── _capture.md
│ ├── _inbox/{claude-ai,chatgpt,manual}/ # status: needs-summary lives here
│ │ └── _INDEX.md # newest-first corpus map, regenerated on every ingest
│ ├── notes/{ideas,learnings,decisions}/
│ ├── projects/
│ ├── people/ # auto-maintained by people-map agent
│ ├── patterns/ # weekly pattern-detector output + weekly *-reflection.md
│ ├── _meta/ # paid-tier psychometrics, businesses, decisions-history
│ ├── _moc/ # Maps of Content
│ └── _agents/ # agent prompt contracts
└── private/ # no MCP points here; read only via /distill-inbox
├── chat-history/{claude-ai,chatgpt}/ # raw conversations, UUID-named
├── journal/
├── relationships/
├── health/
├── finances/
└── _distill/
├── audit.jsonl # append-only ingest + distill log
├── imports/ # completed import receipts (members + counts)
└── pending/ # private patterns awaiting promotion to brain
| Doc | What |
|---|---|
| Getting Started | 30-min wire walkthrough + Day 1 flow |
| Ingestion Guide | Claude.ai + ChatGPT export workflows + the three modes |
| Reflection Engine | The 9-stage pipeline, REFLECT + VERIFY spec, honest competitor comparison |
| Obsidian MCP Setup | Wiring Claude Code/Desktop to your vault + the gotchas that cost hours |
| Privacy Model | Threat model + privacy-hardening checklist |
| Architecture | Three edges, two vaults, agent zones |
| Composition Guide | Wiring to SIS / Library OS / Chronicle (optional) |
| Swarm Curation | Optional multi-model audit→build→verify pattern for large vaults |
| Paid Tier | 8 depth agents (Big 5, 16P, business-map, …) |
| Cross-AI Portability | Running /distill-inbox + other commands in ChatGPT / Cursor / Codex / Gemini |
MCP is never pointed at
private/. That is a path convention, not a kernel-enforced boundary — there is no separate uid, container, or mount namespace here, and a coding agent with shell access can read either tree.
So be exact about what this defends against: MCP scope creep, a misconfigured plugin, a retrieval tool pointed at the wrong root, and publishing brain/ by accident. It does not defend against the distilling agent itself, which you consciously grant one read per conversation. The audit log exists because the convention can fail.
Coding agents that run /distill-inbox read private/ once per conversation (with your explicit consent the moment you invoke the command), produce the summary, and never copy raw content into brain/. The audit log records every read. /reflect never reads private/ at all — if a candidate reflection would need private content to verify, it's dropped and the reason is stated, not silently skipped.
Filenames are hashed tokens, but the conversation title still lands as a stub's heading and as a row in _inbox/{platform}/_INDEX.md — one file listing every conversation you own. On a real 5,311-conversation export those titles named medical, legal, relationship and employer topics, in the vault an LLM reads. A title is often the most revealing line in a conversation.
Titles are also what make an inbox navigable, so this is your call:
SBO_TITLE_POLICY=redacted sbo-ingest path/to/export.zip
Headings and index rows fall back to the conversation token. The real title stays in private/, where the distilling agent still reads it.
Read docs/privacy-model.md before ingesting sensitive content. Run scripts/verify-privacy.{ps1,sh} weekly.
SBO is a vertical that composes SIP. It declines canon. The personal-instance pattern symlinks live commands and skills from your other substrates — see docs/composition-guide.md. The OSS template stands alone with no external dependencies beyond Python + Obsidian.
(Anthropic API is optional — needed only for --mode api.)
pytest -v
Test suite, zero-setup (root conftest.py puts src/ on sys.path): Claude.ai handler incl. per-conversation summary capture, ChatGPT JSON + fail-closed sharded ZIP handling, memories.json handling, identity-addressed idempotent dual-write, promoted-note preservation, path-containment guards, _INDEX.md corpus maps, private import receipts, all three ingest modes, audit logging, and zero-setup guards. CI runs the full matrix on ubuntu / macos / windows × Python 3.11 / 3.12 / 3.13.
MIT. See LICENSE.
Starlight Intelligence Protocol v1.1.1. See Starlight-Intelligence-System.
Built by Frank Riemer. For builders, not consumers.