MadoHub Docs

지속성

MadoHub이 무엇을 어디에 어떻게 저장하는지 설명합니다.

MadoHub은 워크스페이스 상태를 디스크에 저장하므로 앱을 다시 실행하면 모든 것이 복원됩니다. 저장된 워크스페이스 데이터는 모두 로컬 머신에 보관됩니다.

저장 위치

모든 파일은 ~/.madohub/에 저장됩니다:

~/.madohub/
├── canvas-state.json         # 전체 캔버스 상태
├── config.json               # 앱 설정
├── chat-history.json         # 채팅 메시지 기록
├── memory-policies.json      # 메모리 자동 주입 정책
├── templates/
│   └── <slug>.json           # 저장된 워크스페이스 템플릿마다 하나씩
├── flows/
│   └── <id>.json             # 저장된 flow마다 하나씩
├── logs/
│   └── madohub.log           # 애플리케이션 로그
├── notifications/            # Stop 훅 완료 마커
└── orchestrator/             # 오케스트레이터 모드 상태

저장되는 항목

캔버스 상태 (canvas-state.json)

데이터세부 내용
Tiles유형, 위치, 크기, z-index, 파일 경로, 작업 디렉터리
Frames워크스페이스 경로, 색상, 위치
Viewport팬 오프셋(X/Y) 및 줌 레벨
Connections트리거/변환 설정이 포함된 모든 라우팅 연결
SettingsAPI 공급자, 키, 모델, 알림 훅 상태
Max z-index새 타일의 스태킹 순서
Dismissed sessions숨겨진 tmux 세션

앱 설정 (config.json)

데이터세부 내용
Hooks stateClaude Code 알림 훅 활성화 여부
Workspaces (레거시, 비활성)config 스키마에는 등록된 프로젝트 디렉터리 목록과 활성 워크스페이스 ID가 여전히 정의되어 있지만, 이를 저장/로드하는 프런트엔드 코드 경로가 전혀 없어 사실상 죽은 코드입니다. 프로젝트별 상태를 나타내는 실제 개념은 frame이며, canvas-state.json에 저장됩니다.

저장 방식

  • 자동 저장: 캔버스, 연결, 설정이 변경될 때마다 실행됩니다.
  • 지연 처리: 500ms 지연으로 빠른 변경을 묶어서 처리합니다.
  • 원자적 쓰기: 데이터를 고유한 사이드카 파일(<name>.tmp.<pid>.<seq>)에 먼저 쓴 뒤 제자리로 이름을 바꿉니다. 앱이 쓰는 도중에 충돌해도 손상을 막습니다.
  • 손상 복구: 로드 시 어떤 파일이 JSON으로 파싱되지 않으면, 그 바이트는 콘텐츠 해시 기반의 <name>.corrupt.<hash> 사이드카 파일로 격리되고(재시작해도 동일하게 유지됨), 로딩은 실패하는 대신 기본값으로 대체됩니다.

저장되지 않는 항목

  • 터미널 세션 콘텐츠(PTY 출력은 휘발성입니다)
  • 클립보드 내용

On this page