bobusang (보부상)
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> 100시간 대화한 AI, 기기 바꾸면 "안녕하세요, 무엇을 도와드릴까요?"
> Your AI doesn't remember you. It never did.
Windows, WSL, Linux 서버를 넘나드는 Claude Code 멀티디바이스 메모리 시스템.
What this is
A **multi-device memory system** for Claude Code that works across Windows, WSL2, and Linux servers.
Claude Code's built-in auto-memory is per-project and single-device. bobusang extends it with:
- **3-tier global memory** (core / domain / archive) — loaded by priority, not all at once
- **Automatic sync** — git-based, runs on every session start
- **Multi-device notes** — per-device inbox + shared notes
- **Structural change detection** — warns you when config changed on another device
The problem
You use Claude Code on multiple machines. Your laptop at home, WSL2 at work, a GPU server for training. Each one starts every session blank — no memory of what you discussed on the other device, no shared context, no continuity.
You could copy files manually. You could write your own sync script. Or you could use bobusang.
Quick start
setup.sh will:
1. Detect your current device (hostname, OS)
2. Initialize the memory directory structure in ~/.claude/
3. Set up git remote for sync
4. Install session-start hooks
Structure
Why 3 tiers?
| Tier | When loaded | What goes here | Example |
|------|-------------|---------------|---------|
| **core** | Every session, fully | Your identity, preferences, work style | "I'm a backend engineer who prefers terse responses" |
| **domain** | On demand (index only) | Active projects, tools, references | "Project X uses FastAPI + PostgreSQL" |
| **archive** | Never (unless searched) | Completed projects, old feedback | "Project Y shipped in March" |
Claude Code loads MEMORY.md (the index) every session. Core files are small enough to always include. Domain files are referenced by title — Claude reads them only when relevant. Archive stays cold.
Sync mechanism
Every session start triggers sync-memory.sh:
Structural change detection
When config files (CLAUDE.md, settings.json, hooks/) change on another device, commits are tagged with [구조변경]. On your next session start, detect-changes.sh catches these and warns you:
This matters because Claude Code loads config at session start. Mid-session changes don't take effect — you need a fresh session.
Commit convention
Marker block pattern
setup.sh installs/updates a sync-section in ~/.claude/CLAUDE.md using marker blocks:
Re-running setup.sh rewrites the content between markers — user edits *outside* markers are preserved, edits *inside* are overwritten on next update. To relocate the section, cut/paste the entire block (markers included); the next update finds it by marker.
Other components (e.g. munteok framework's own setup.sh) can install their own marker IDs into the same CLAUDE.md — multiple components coexist.
Multi-device setup
Device identification
bobusang uses hostname to identify devices. Add your machines to the device table in CLAUDE.md:
Path rules
**Always use relative paths** (~/.claude/...) in settings.json. Absolute paths (/home/user/...) break across devices.
Shared config goes in settings.json. Device-specific config goes in settings.local.json (gitignored).
Platform support
| Platform | Status | Notes |
|----------|--------|-------|
| WSL2 (Ubuntu) | Fully supported | Recommended for Windows users |
| Linux | Fully supported | Servers, desktops |
| Windows (native) | Partial | Git Bash required for hooks |
| macOS | Should work | Not tested — PRs welcome |