독핏 인프라 지도 — 내부용

정본 = 03_설계/인프라_통합_정책.md · 2026-09-19 밤(v2.8 — 배포 repo dogfit-ops · 리더/오퍼레이션 이름 · 엔진 v0.21.3 · 컨테이너 경로 /opt/data · 채널 9 체계)

현재 결정: Hana 개인 dogfit-staging/main을 계속 사용. 내부 테스트는 dogfit-stg.pages.dev, 실제 내부 운영은 dogfit.pages.dev. 후임 repo 선택·연결 인계는 ⑭.
2026-09-19 추가(R430): 서버는 개인 repo를 clone하지 않는다 — 승인본만 infra/deploy_runtime.sh로 배포 repo oimoaoa/dogfit-ops에 미러하고, 컨테이너가 그것을 /opt/data/workspaces/dogfit-ops/에 clone한다(STG = main pull · PRD = 승인 태그). 어떤 판이 나가 있는지는 03_설계/배포_원장.md(R435).
인증 방식·DB 조직 요금제·PRD 배포 연결은 검토 대기. 이 지도는 설계이며 계정·서버의 라이브 상태 확인표가 아니다.
🔴 Owner = owner@ · 금고 · 평소 안 연다 🔵 Dev = dev@ · 매일 여는 계정 🟢 Hana = 개인 계정 ⬜ 아직 안 정함
소유 = 청구·복구·최종 권한을 쥔 계정 · 관리 = 매일 로그인해 실제로 쓰는 계정. 한 줄에서 둘이 다를 수 있다.
흐름① 업무 데이터 흐름 · ② 배포 흐름 구성③ 무엇이 몇 개 · 누구 계정인가(+지금 상태) 분리④ 컨테이너 2개 · ⑤ default = 리더(운영 총괄 역할) · ⑥ 컨테이너에 올라가는 3층 · ⑦ 언제 또 가르나 · ⑧ Slack 앱 운영⑨ 테스트 세 겹 · ⑩ 엔진 · ⑪ 배포 사고 방지 · ⑫ 문제가 생기면 곁가지⑬ 지식 위키 · ⑭ GitHub · ⑮ 판 사이트 미결⑯ 아직 안 닫힌 것

① 업무 데이터 흐름

업무 데이터 흐름 독핏 직원과 Hermes 프로필이 같은 슬랙 채널 안에서 멘션으로 대화하고, Hermes는 Supabase·지식 위키·Google 드라이브 세 곳과 양방향으로 데이터를 주고받는다. 지식 위키는 Hermes 런타임 안의 폴더이고 원본은 GitHub에 있으며 배포로 동기화된다. Slack 채널 — 예약 · 변경 · 결제 · 호텔 · 유치원 · 클래스 · 정산 · 리마인드 멘션 · 대화 배포로 동기화 독핏 직원 사람 · 20명 Hermes 프로필 각 서비스 담당 전문 에이전트 Supabase (DB) 예약 · 결제 · 고객 · 반려견 조회 · 생성 · 수정 지식 위키 Hermes 런타임 안의 폴더 조회 · 생성 · 수정 GitHub 위키 원본 — 코드와 같은 repo Google 드라이브 사진 · 서류 · 녹음 파일 읽기 · 저장 양쪽 화살표 = 꺼내 쓰기도 하고 채워 넣기도 한다 · 점선 = 배포로 동기화 · 정본 = 03_설계/인프라_통합_정책.md

② 배포 흐름 (2026-09-19 R430 — 배포 repo dogfit-ops 미러 구조)

배포 흐름 내 맥에서 만든 것을 개인 dogfit-staging main에 커밋하고, 승인본만 deploy_runtime.sh로 배포 repo dogfit-ops에 미러한다. STG 컨테이너는 dogfit-ops main을 pull해 /opt/data/workspaces/dogfit-ops에 두고 테스트 Slack에 붙는다. 통과한 판은 SHA·엔진 지문·마이그레이션을 얼려 Hana 승인 태그로 PRD 컨테이너가 같은 배포 repo에서 받는다. 컨테이너 홈(기억·키·SOUL)은 배포에 실리지 않는다. 커밋 미러·push pull 붙는다 통과한 것만 · SHA로 얼린다 검증 후 같은 이미지 승인 같은 배포 repo · 태그로 받는다 붙는다 Hermes 엔진 공식 이미지 1개 · v0.21.3 STG·PRD가 같은 digest 🧪 스테이징(STG) · 테스트하는 곳 🚀 프로덕션(PRD) · 직원이 실제로 쓰는 곳 내 맥 (로컬) 편집 · 스크립트 직접 실행 테스트 ① dogfit-staging · main Hana 개인 · 작업 과정 전부 서버에 clone하지 않는다 dogfit-ops · main 배포 repo · 승인본 4층만 위키·스킬·입구·페르소나 컨테이너 hermes-stg dogfit-ops를 pull 프로필 5 · CLI 테스트 ② 테스트 Slack 사람이 실제로 말 걸어본다 테스트 ③ — 마지막 관문 🧊 동결 (freeze) SHA · 엔진 지문 · DB 판 Hana 승인 게이트 dogfit-ops · 승인 태그 태그 = 승인한 판의 이름표 태그 규칙은 운영 전 확정 컨테이너 hermes-prd 태그 checkout 같은 SHA · 같은 엔진 지문 직원 Slack 게이트웨이로 연결 새 판으로 답하기 시작 서버 clone 자리 = /opt/data/workspaces/dogfit-ops/ · 컨테이너 홈 /opt/data(기억 state.db · 키 · SOUL · MEMORY)는 배포에 실리지 않는다 — 승격되는 것은 「정의」뿐 · 나가 있는 판 = 03_설계/배포_원장.md 점선 = 밖에서 받아 오는 것 · 파란 선 = 스테이징에서 프로덕션으로 가는 유일한 길 · 정본 = 03_설계/인프라_통합_정책.md §5 「포장 단위」·R430

③ 스테이징·프로덕션 구성과 계정 권한

무엇
쓰는 서비스
🧪 스테이징 (STG)
🚀 프로덕션 (PRD)
Slack 워크스페이스
Slack
독핏-스테이징Dev 소유 Hana 관리
독핏 실제 워크스페이스Owner 소유Hana는 채널 관리만
Slack 앱 (합계 10개)
Slack
테스트 전용 5개Hana 관리리더 1 + 전문 4(호텔·유치원·클래스·오퍼레이션) · 스테이징 워크스페이스에만 · 설치 2/5(리더-TEST·호텔-TEST · 2026-09-19) · 나머지 3은 그 프로필을 여는 묶음에서
프로덕션 전용 5개Hana 관리리더 1 + 전문 4 · 프로덕션 워크스페이스에만 설치 · 정의만 준비(미설치)
서버 · 컨테이너
Hostinger VPS그 위의 Docker
컨테이너 hermes-stgDev 소유·관리프로필 5명
컨테이너 hermes-prdDev 소유·관리프로필 5명
에이전트 (합계 10명)
Hermes
STG 리더(default) + 전문 4hotel-stg · daycare-stg · class-stg · operations-stg(구 booking-stg · 2026-09-19 개명) · 5 실존(hermes profile list 09-19)
PRD 리더(default) + 전문 4hotel-prd · daycare-prd · class-prd · operations-prd · 컨테이너 미생성
GitHub repo
GitHub코드 · 스킬 · 정책 · 지식 위키(wiki/) 한 벌
oimoaoa/dogfit-staging · main = 편집Hana 소유·관리작업 과정 전부 · 서버에 clone하지 않는다(R430) → 승인본만 infra/deploy_runtime.sh로 미러 → 배포 repo oimoaoa/dogfit-opsHana 개인 사설 · 오픈 때 독핏 조직 이전STG 컨테이너 /opt/data/workspaces/dogfit-ops = main pull · 2026-09-19 1dd4c29 · 배포 원장 = 03_설계/배포_원장.md
같은 dogfit-ops · 승인 태그태그 규칙 = 운영 시작 전 확정PRD 컨테이너가 태그를 checkout · 개인 main의 변경이 운영에 자동으로 가지 않는다
데이터베이스
Supabase
dogfit-stgDev 소유·관리회사 STG 유지 · 현재 Free
운영 요금제 배치는 별도 검토
dogfit-prdDev 소유·관리
실서비스 웹
Cloudflare Pages
테스트 웹 페이지Devdogfit-stg.pages.dev
내부 관리 웹Devdogfit.pages.dev반려견·추후 어드민·지표
회사 도메인은 고객용 서비스
파일 저장소
Google 드라이브
Dogfit Staging독핏 조직 소유 Dev 관리
Dogfit Product독핏 조직 소유 Dev 관리
티피 (외부)
TeePee
⚠️ 테스트 환경 없음 — 외부 실서비스 하나뿐「테스트」 = 조회 전용 별도 계정으로 실서비스를 읽기만
시크릿
서버 안에만
stg.env
prd.env
판 사이트
(딴 축)
Cloudflare Pages
dogfit-plan 작업판Hana — 안 넘김🔒 공유용 판에서는 이 행을 통째로 뺀다 — 우리 임시 설계 사이트라 독핏이 알 필요가 없다
dogfit-ax 공유판Hana — 안 넘김🔒 공유용 판에서는 「안 넘김」을 뺀다 — 실서비스가 아니라 임시 설계 사이트이고, 오픈과 함께 역할이 끝난다

🔒 서버 1대 · 그 위 Docker가 컨테이너 2개. 컨테이너끼리는 격리 — 상대 환경에 손댈 수 없다(④). 서버를 또 가르는 것은 외부 고객용이 생길 때(⑦).

현재 STG 출처는 오픈 뒤에도 그대로 유지한다(Hana 2026-09-15). 후임이 오면 조직 repo 또는 개인 repo를 선택한다. PRD 배포 연결은 실제 운영 전에 결정하며, 개인 main의 모든 변경을 운영에 자동 배포하지 않는다. 웹 주소는 결정됐지만 확보·연결은 미검증이다.

계정을 가르는 규칙은 두 줄뿐이다.
① 독핏에 넘어가나? 아니오 → Hana / 예 → 회사 계정
② (회사 계정 중) 매일 로그인하나? 예 → Dev / 아니오 → Owner
개발·운영 인프라는 회사 Dev 소유·관리가 기본. Workspace 최고관리자·Slack PRD는 Owner, Slack STG는 Dev. Shared Drive는 조직 소유이며 Dev가 관리한다. 개인 GitHub·판 사이트·STG AI 계정은 별도 결정대로 유지한다.
2026-09-15 확정 — Hermes 모델 계정
STG: Hana 개인 ChatGPT · PRD: 독핏 회사 ChatGPT. 각 컨테이너에서 직접 로그인하며 인증 파일을 서로 복사하지 않는다. STG 기본 모델은 Terra / Medium / 900k(Hana 지정). 아래 과거 기록의 한 구독 공유 질문은 현재 구축의 선행 조건에서 제외한다.
대화 백업 · 보관 정책
매일 새벽 04:00 KST + 수동 실행으로 그때 저장된 전 기간 대화를 포함한 전체 대상 스냅샷을 암호화해 Drive에 누적한다. 과거 세션을 이어 쓴 내용도 다음 백업에 포함된다.
스냅샷 보존 기간은 미정. 현재 자동 삭제는 구현하지 않았다. 추후 복구 가능한 과거 기간·오류 발견 지연·누적 용량을 검토하고 기간을 결정한 뒤 자동 삭제를 구현한다. 대화 원본 영구 보존과 과거 복구 지점 보관은 별개다.
성공·실패는 해당 환경 리더(운영 총괄 역할)가 #settings에 안내한다. 모든 프로필의 home channel도 그 환경 settings로 설정한다.
프로덕션 구축: 별도 대상·키·Drive·Slack 설정 → 수동 업로드·복원 검증 → 예약 활성화 → 첫 예약·실패 알림·Hermes 복구 시험. STG 설치가 PRD 설치 완료를 뜻하지 않는다.

Hermes 백업

대화 기록과 설정을 암호화해 날짜별로 보관합니다.

  1. 01대화·설정이전 대화와
    이어서 나눈 대화까지
  2. 02매일 새벽 4시전체 대상 스냅샷
    필요할 때 수동 백업
  3. 03암호화 보관Google Drive에
    날짜별 백업 저장
  4. 04필요할 때 복원복구키로 열어
    저장된 기록 복원
백업 결과 안내성공·실패를 Slack 설정 채널에서 확인

현재 스테이징 적용 · 한국 시간 기준

이전 실측 기록 (2026-08-30 당시, 현재 상태 재확인 필요)

✅ owner@dogfit.co.kr — 확보 · Workspace 최고관리자 확인(조직 dogfitkorea · 도메인 dogfit.co.kr)
✅ dev@dogfit.co.kr — 생성 완료 + 2단계 인증 + 백업코드는 owner@ 금고 보관
⚠️ 최고관리자가 한 명 더 있다 — 독핏 기존 담당 직원. 둘 이상인 것 자체는 구글 권장이라 정상(하나뿐이면 잠기는 순간 회사가 잠긴다). 문제는 그 사람도 owner@ 비번을 재설정할 수 있고 dev@를 장악해 외부 서비스 복구까지 탄다는 것 → 지금은 그대로 진행(실고객 데이터 아직 0) · 오픈 전 명단 확정(M10). 에이전트는 그 권한을 건드리지 않는다
✅ Hostinger 계정 — 가입 완료 · dev@dogfit.co.kr 명의(Google 로그인) · 통화 USD
🔴 Hostinger 계정 위생 3건 미비 — 2단계 인증 꺼짐 · 복구 이메일 없음 · 비밀번호 미설정(구글 로그인만) → 서버 셋업 전에 먼저 닫는다
🟡 독핏 VPS — 결제 완료 (2026-08-30). 24개월 · Hana: "네가 제안한 걸로" = KVM 4(4vCPU·16GB). 남은 일 = 서버 셋업(OS 템플릿은 반드시 「Docker」) → 컨테이너 2개 올리기
  └ 사양 근거: 직원 20명 동시 사용 + 프로필 10명 상주 + 컨테이너 2개(실측 1.325GiB → 약 2.6GiB) + 음성 전사 여지. ⚠️ 주문 실물은 아직 못 봤다 — 호스트명·리전·사양 화면은 셋업 때 대조한다
✅ 독핏 ChatGPT 구독 확보(2026-08-30) — Hana 확정: "ChatGPT 구독 = OpenAI OAuth = 헤르메스 연동". 사람이 쓰는 구독을 Hermes가 OAuth로 붙여 쓴다(Codex·Claude Code와 같은 방식) — API 키 종량이 아니다. 남은 일 = 서버에서 그 리눅스 사용자로 OAuth 로그인. 플랜 = Plus · 카드 등록됨(본격 테스트 전이라 일단 Plus, "상황 봐서 올릴 거야"). ⏳ 컨테이너 2개가 한 구독에 각각 붙어도 되는지 미확인
✅ 티피 자격증명 — Hana 맥에 있음(2026-08-29). 로그인·조회·추출 실집행 완료 — 정본 = 03_설계/티피_API_카탈로그.md. ⏳ 독핏 전용 조회 계정은 미발급
⚠️ 음성 전사 = 아직 확정 못 함(M11 다시 열림) — 같은 날 「OpenAI API 확정」이라 적었다가 철회했다. 이미 있는 초안 스펙이 Hermes 자동전사를 끄고 ffmpeg 전처리 + local faster-whisper를 제안하며, local vs cloud는 실제 코치 녹음으로 벤치마크하라고 열어 뒀다. 그래서 사양은 「어느 쪽이든 감당되는 선」인 KVM 4로 샀다
❌ Slack 워크스페이스 2개 · Supabase PRD · 컨테이너 2개 · 프로필 10명 · Slack 앱 10개 — 전부 미생성

④ 컨테이너를 두 개로 가른다 — 스테이징과 프로덕션 (✅ Hana 확정 2026-08-29)

컨테이너를 가르면 둘은 서로 격리된다 — 규칙으로 막는 게 아니라 상대 환경을 아예 안 보여주는 것이라 새는 길이 없다.
지금 스테이징이 프로덕션 폴더를 읽고 쓸 수 있는 이유는 두 폴더가 같은 컨테이너 안에 같이 들어 있어서다. 컨테이너마다 자기 폴더만 넣으면 상대 폴더는 그 컨테이너에서 존재하지 않는 경로가 된다.
지금 (컨테이너 1개)                          바꾸면 (컨테이너 2개)
┌─ hermes ─────────────────┐            ┌─ hermes-stg ────┐  ┌─ hermes-prd ────┐
│  workspaces               │            │ workspaces      │  │ workspaces      │
│    ├ dogfit-stg  ←┐       │            │   └ dogfit(스테이징)│  │   └ dogfit(운영) │
│    └ dogfit-prd  ←┘ 서로   │            │ 데이터(STG)      │  │ 데이터(PRD)      │
│         보이고 써진다       │            └─────────────────┘  └─────────────────┘
└───────────────────────────┘                    상대 폴더는 아예 존재하지 않는다
축
지금 → 2개로 가르면
판정
메모리
컨테이너 1개가 1.325GiB → 약 2.6GiB
KVM 4(16GB)의 16% — 여유
디스크
같은 설계도(이미지) 1벌 공유 + 데이터만 2벌
추가 거의 없음
CPU
개인 VPS는 vCPU 1개로 봇 3명을 0.17%로 돌린다
KVM 4로 충분
포트
compose에 포트 매핑이 없다(연결이 밖으로 나간다)
충돌 없음
운영
명령이 2벌이 된다(배포·재시작·엔진 교체)
늘어난다
바꾸는 법
compose 파일 하나에 서비스 2개 — 가르는 건 볼륨 2줄과 이름뿐
단순
⭐ 덤 — ⑩의 「엔진엔 스테이징 먼저가 안 통한다」가 풀린다. 컨테이너가 둘이면 새 엔진을 STG에만 먼저 올려 보고 운영은 나중에 올릴 수 있다. 엔진이 평균 5.8일에 한 번 나오는 걸 생각하면 가치가 크다.
✅ 총괄도 컨테이너마다 1명씩으로 갈렸다 — 그건 바로 아래 ⑤에서 다룬다.

그래서 「테스트 버전 스크립트」는 이렇게 간다

컨테이너·볼륨·자격증명을 환경별로 가른다. repo 소유자나 branch 이름만으로 격리되는 것은 아니다.
Hana 개인 dogfit-staging/main →(deploy_runtime.sh 미러)→ dogfit-ops main → hermes-stg /opt/data/workspaces/dogfit-ops/
검증 SHA · digest · 마이그레이션 → Hana 승인 태그 → hermes-prd /opt/data/workspaces/dogfit-ops/ (같은 배포 repo · 태그로 판을 가른다)
2026-09-19 R430 정정(구 /home/hermes/workspaces/dogfit/ — 이 이미지엔 /home/hermes가 없고 홈 = /opt/data). 태그 규칙은 운영 시작 전 확정. 상대 컨테이너 볼륨은 마운트하지 않는다.
하고 싶은 것
하는 일
대상
테스트 판 배포
개인 main의 승인본을 dogfit-ops로 미러(Hana 「올려」) → 컨테이너 pull · 배포 원장 1행
hermes-stg
확인 끝·동결
SHA·이미지 digest·마이그레이션 고정
Hana 승인 대상
운영 배포
확정한 배포 경로로 승인 판만 적용
hermes-prd
되돌리기
직전 검증 판 재배포. DB는 별도 복구 판단
Hana 승인 후
아래는 이전 설계를 폐기한 실증 기록이다. 폴더만 나누는 안을 채택하는 지시가 아니다. 현재 결정은 컨테이너 분리다.
⚠️ 2026-08-29 실증 — 갈리기는 하는데 「담」은 아니다.
Hana 개인 VPS에 테스트 프로필 2개를 실제로 만들어 재봤다(끝나고 전부 삭제). 일하는 방식으로는 성립한다 — cwd가 다르면 상대경로가 각자 폴더로 가고, clone 2벌+branch로 읽는 내용이 실제로 다르다. 그런데 막아 주지는 않는다.
재본 것
결과
뜻
STG 프로필이 PRD 폴더를 절대경로로 읽나
읽힌다
읽기 차단 목록에 자격증명 파일만 있고 폴더 기준 차단이 없다
STG 프로필이 PRD 폴더에 쓰나
써진다 — 실제로 파일이 생성됐다
쓰기 허용 범위가 workspaces 전체다
검사가 죽은 건 아닌가 (대조군)
살아 있다 — /etc·/tmp는 정상 차단
즉 workspaces 안이 의도적으로 열린 것
실측  HERMES_WRITE_SAFE_ROOT=/opt/data:/home/hermes/workspaces      ← 쓰기 허용 = workspaces 전체
      이 값은 컨테이너 환경변수 하나 → 프로필별로 좁힐 수 없다
그래서 「폴더로 갈랐으니 스테이징이 운영을 못 건드린다」는 못 쓴다. 실수·오작동으로 스테이징 프로필이 운영 스크립트를 덮는 길이 열려 있다. M15는 컨테이너 분리 선택으로 닫혔다(2026-08-29). 이 표는 그 결정 전 실증 기록이다.
⚠️ 같은 날 또 하나 — 없는 폴더를 cwd로 두면 터미널은 조용히 딴 데로 간다.
파일 도구는 명확한 에러를 내지만(File not found), 터미널 환경은 조용히 /home/hermes/workspaces 루트로 폴백한다 — 경고 로그 한 줄만 남고 아무도 안 본다.
실물 증거: Hana 개인 VPS의 kan 프로필은 cwd가 /home/hermes/workspaces/kan인데 그 폴더가 없고, 35일째 정상 가동 중이다. → 경로 오타 하나로 프로필이 루트에서 일하게 된다. 배포 게이트(R244)에 「cwd가 실재하는 폴더인가」 검사를 넣는다(R260).

⑤ default = 리더(운영 총괄 역할) — 컨테이너마다 1명, 그래서 2명 (✅ Hana 확정 2026-08-30 · 이름 「리더」 = 2026-09-17 R396)

각 컨테이너의 default 프로필이 그 환경의 리더다(역할 = 운영 총괄 · 슬랙 앱 「리더」/「리더-TEST」 · handle leader · 폴더명 default 유지 · 2026-09-19 서버 반영). 아래는 이전 명칭의 근거다. 과거 Hana 원문: "프로덕션 총괄은 스테이징의 CTO, 프로덕션은 CTO가 있는 거야. AI CTO."

 🧪 스테이징(STG) 컨테이너                    🚀 프로덕션(PRD) 컨테이너
┌──────────────────────┐             ┌──────────────────────┐
│ default = STG 총괄    │             │ default = PRD 총괄    │
│  「STG 리더·총괄」    │             │  「PRD 리더·총괄」      │
│ ···················· │             │ ···················· │
│ hotel-stg            │             │ hotel-prd            │
│ daycare-stg          │             │ daycare-prd          │
│ class-stg            │             │ class-prd            │
│ operations-stg       │             │ operations-prd       │
└──────────────────────┘             └──────────────────────┘
       프로필 5명                          프로필 5명   = 합계 10명
           │                                   ▲
           └── 「정의」만 승격 (코드·스킬·설정) ──┘
               ⛔ 기억·자격증명은 어느 것도 안 넘어간다

총괄이 하는 일 — 네 가지

무엇
구체적으로
STG · PRD 차이
① 진행 논의
Hana와 지금 어디까지 왔고 뭐가 문제인지를 같이 본다
STG = 테스트하는 동안 계속 자문(개인 서버의 헤르 같은 자리)
PRD = 전문 프로필들이 실제로 일하는 것을 지켜보며 잘 굴러가는지·개선점은 없는지
② 전문 프로필 감독
4명이 제 일을 하는지, 서로 어긋나게 답하지 않는지
양쪽 같음 — 자기 컨테이너 안 4명만 본다
③ 스킬 자동 업데이트 검토
Hermes에는 스킬이 스스로 갱신되는 기능이 있다(백그라운드로 도는 것 · 에이전트가 셀프로 하는 것). 어디까지 알아서 하고 어디부터 물어볼지를 총괄이 판정한다
STG에서 등급 기준을 먼저 굴려 보고 PRD에 적용
④ 에이전트 위생·환경 개선
Hana 요약: "이 헤르메스 에이전트들의 시스템 관리자라고 보면 될 것 같아."
양쪽 같음
③의 등급 3종(Hana 설명) — ⓐ개선하지 말고 보고만 ⓑ검토하고 통과 ⓒ자잘한 건 알아서 하고 후보고. ⏳ 어디까지가 「자잘한 것」인지 경계는 아직 안 정했다(⑯ 미결 R277).
⛔ 총괄은 직원 문의 창구가 아니다. 직원이 슬랙에서 묻는 일은 전문 프로필 4명이 받는다(①의 흐름도에 총괄이 없는 이유). 총괄은 그 일이 잘 굴러가는지를 보는 쪽이다.

⚠️ 이건 2026-08-28 판의 변경이다

항목
옛 판 (~08-28)
지금 (08-30~)
총괄 프로필
1명이 양쪽 겸임
2명 — 컨테이너마다 1명
기억
스테이징↔운영이 한 덩어리
"이어지는 게 의도이자 목적"
각자 자기 컨테이너 안에서만
사람이 바뀌어도
히스토리가 남는다
총괄 1명이 들고 있어 자동
두 컨테이너를 함께 넘겨야 성립
Hana: "나중에 이관할 때 스테이징을 같이 이관하지"

왜 갈렸나 — 위험이 무서워서가 아니다

순서를 헷갈리지 않는다. 먼저 정해진 것은 「컨테이너를 2개로 가른다」(④)이고, 총괄이 갈린 것은 그 귀결이다.

기억이 실제로 어디에 남나(2026-08-28 Hermes 공식 문서·소스 실측)
· 프로필마다 자기 홈 디렉토리를 갖고 설정·.env·성격·메모리·세션·크론·state DB가 따로 있다
· state.db는 SQLite + 전문검색이라 대화 원문이 그대로 저장되고 나중에 검색해 꺼낼 수 있다 — 요약이 아니라 원문 보관소다
→ 총괄의 기억 = 그 총괄이 자기 환경에서 나눈 대화 전부. 상대 환경의 대화도, 전문 프로필의 대화도 총괄 DB에 없다. 총괄이 전문 프로필의 일을 보려면 슬랙 채널·DB·산출물을 통해 본다.

⑥ 컨테이너에 「올라가는 것」은 층이 셋이다 (Hana 개인 VPS 실측 2026-08-28)

앞선 판은 "스테이징에 올린다"를 한 덩어리로 적어서 무엇이 어떻게 올라가는지 구분이 없었다. 이미 돌고 있는 Hana 개인 VPS에서 재서 확인했다.

⚠️ 아래 표·실측의 /home/hermes·v0.17.0은 Hana 개인 VPS 값이다(2026-08-28). 독핏 컨테이너 실측(2026-09-15·19)은 다르다 — 엔진 v0.21.3(⑩ · 인프라 정본 「엔진 버전 원장」) · 홈 = /opt/data(리더) · /opt/data/profiles/<이름>(나머지) · ②층 작업 폴더 = /opt/data/workspaces/dogfit-ops/hermes/<프로필>/(프로필마다 다른 폴더 · terminal.cwd) · 이 이미지엔 /home/hermes가 없다. 층 구분(엔진 / 우리가 만드는 것 / 성격·키)은 그대로 성립한다.
층
무엇
어디 사나 (실측)
바꾸는 방법 · 프로필마다 갈리나
① 엔진
Hermes 프로그램 본체
/opt/hermesDocker 이미지에 구워져 있다(git 아님) · 현재 v0.17.0
이미지 재빌드 → compose 교체
❌ 안 갈린다 — 컨테이너 1개 = 엔진 1개
② 스크립트
스킬·정책
우리가 만드는 것 전부
/home/hermes/workspaces/<이름>/git repo를 clone해 둔 폴더
git pull
✅ 갈린다 — 프로필마다 다른 폴더를 본다
③ 성격
설정·키
SOUL.md · config.yaml · .env · 기억
/opt/data/profiles/<이름>/
배포 스크립트 또는 직접 편집
✅ 갈린다 — 프로필마다 자기 폴더
실측한 것 (값은 안 봤다 — 경로·존재·개수만)

컨테이너      hermes | hermes-agent:v2026.6.19-hana2 | Up 5 weeks    ← 1개
엔진          /opt/hermes · Hermes Agent v0.17.0                     ← 1개, 전 프로필 공유

terminal.cwd  default → /home/hermes/workspaces/her                  ← ⭐ 프로필마다
              dot     → /home/hermes/workspaces/dot                     다른 폴더!
              kan     → /home/hermes/workspaces/kan

repo clone    workspaces/ 안에 hana-brain · hana-brain-cron
              · project-context                                       ← 같은 repo 2번 clone 실증

skills        /opt/data/skills(전역) + /opt/data/profiles/dot/skills   ← 프로필별로 따로
.env          /opt/data/.env 495줄 · dot 11줄 · kan 18줄              ← 프로필마다 다른 파일

⑦ 언제 컨테이너를 또 가르나 — 기준은 「누가 말을 거는가」

프로필은 담이 아니라 서랍이다. 진짜로 막아야 하면 프로필이 아니라 컨테이너를 가른다. 스테이징↔운영이 그 첫 적용(④)이었고, 다음 경계는 이것이다.

대상
어디서 도나
왜
내부 직원용
총괄 + 호텔·유치원·클래스·예약결제
지금의 컨테이너 2개(STG·PRD)
컨테이너마다 5명
한 컨테이너 안 5명은 같은 정책을 공유하고 같은 DB를 함께 참조해도 되는 사이라 서로에게서 지킬 것이 없다(Hana 판정). 컨테이너를 가른 것은 이들 사이가 아니라 스테이징과 프로덕션 사이를 가르기 위해서다
🆕 외부 고객용
예약 앱 등 보호자·비직원이 직접 대화
또 다른 컨테이너를 새로 짓는다
지금 컨테이너에 프로필을 더하는 게 아니다
외부 고객이 직접 글을 넣으면 그 글이 에이전트에게 내리는 지시가 될 수 있다. 프로필이 담이 아니므로 같은 컨테이너 안에서는 그 지시가 다른 프로필의 파일까지 닿는다
⚠️ 한 컨테이너 안에서는 여전히 뚫린다. 2026-08-29 실측 — 같은 컨테이너의 프로필은 서로의 폴더를 절대경로로 읽고 쓸 수 있다(쓰기 허용 범위가 workspaces 전체이고, 그 값은 컨테이너 단위 설정이라 프로필별로 좁힐 수 없다). 엔진 문서도 "프로필은 에이전트를 격리하지 않는다"고 스스로 못 박아 뒀다. 그래서 서로 지킬 게 없는 사이끼리만 한 컨테이너에 묶는다.

같은 기준이 민감 정보 전담 프로필(예: 인사·평가)에도 적용된다. 순서는 ① 대화 상대를 제한한다(직원 채널에 안 붙인다 — 1차 방어선) ② 필요하면 컨테이너를 가른다(2차). ⏳ 예약 앱은 미도입이라 이 절은 원칙이고 시점은 아직이다.

⑧ Slack 앱은 몇 개인가 — 앱 · 설치 · 봇은 서로 다른 것

Hana 질문이 여기 다 걸려 있어서 말 세 개부터 가른다.

말
쉬운 뜻
내가 뭘 하나
앱(App)
Slack에 내는 프로그램 등록증 한 장"이런 프로그램이 있습니다"라고 Slack에 등록해 두는 것. 아직 아무 데서도 안 돈다
api.slack.com/apps에서 한 번 만든다붙여넣을 설정표는 Hermes가 뽑아준다
설치(install)
그 등록증을 워크스페이스 안으로 들여놓는 것호텔 체인 브랜드(앱)와 지점 개점(설치)의 관계
워크스페이스마다 한 번씩설치할 때마다 그 워크스페이스 전용 열쇠(봇 토큰)가 새로 생긴다
봇(bot)
워크스페이스에서 말을 거는 그 계정
⭐ 따로 안 만든다. 설치하면 자동으로 생긴다Hana 질문: "봇을 또 만들어야 되나?" → 아니다
순서는 딱 두 걸음이다 — ① 앱을 만든다 → ② 워크스페이스에 설치한다. 봇은 ②의 결과로 저절로 생긴다.

그래서 몇 개인가

🧪 스테이징 컨테이너
앱 5개
총괄 1 + 전문 4
전부 스테이징 워크스페이스에만 설치
+
🚀 프로덕션 컨테이너
앱 5개
총괄 1 + 전문 4
전부 프로덕션 워크스페이스에만 설치
=
합계
앱 10개 · 설치 10건
프로필 10명 : 앱 10개 = 1:1
앱 하나가 두 방에 걸치는 일이 없어서
설치 수도 같다
✅ 2026-08-30 변경 — 앱이 9개에서 10개가 됐다. 총괄이 컨테이너마다 1명씩으로 갈리면서(⑤) 총괄 앱도 따라 갈렸다. 그러면서 설치가 하나 더 많던 것도 없어져 전부 1:1로 떨어진다.

총괄 앱과 총괄 프로필은 「같은 결정」이다 — 고를 수 있는 게 아니다

Hermes 문서에 이 줄이 있다: "목록의 첫 번째 토큰이 primary이고, Socket Mode 연결에 쓰인다." → Slack과의 실시간 연결선은 「앱」 하나당 하나만 열린다. 그래서 앱 개수를 정하면 프로필 개수가 따라오고, 반대도 같다.

  총괄 앱 1장을 두 방에            총괄 앱 2장 (방마다 하나)
 ┌──────────────┐                ┌────────┐   ┌────────┐
 │  앱 1장       │                │ 앱 A    │   │ 앱 B    │
 └──┬────────┬──┘                └───┬────┘   └───┬────┘
    │        │                       │            │
  스테이징    운영                     스테이징        운영
  연결선 1개가 양쪽 말을 다 받음      각자 자기 연결선 · 게이트웨이 2개
  = 총괄 프로필 1명                  = 총괄 프로필 2명
  ~~2026-08-28까지 이쪽~~            ✅ 2026-08-30부터 이쪽

총괄을 「STG 리더 · PRD 리더」로 갈랐으니(⑤) 앱도 2장이 된다(STG 앱 이름 = 리더-TEST · 2026-09-19). 물리가 그렇게 묶여 있어서 따로 고를 여지가 없다.

🎁 덤 — 옛 판의 위험 하나가 사라졌다. 앱을 한 장으로 공유하던 때는 권한을 바꾸면 스테이징·프로덕션에 동시에 반영돼 「스테이징에서 먼저 시험」이 불가능했다. 앱이 갈린 지금은 스테이징 앱에서 먼저 눌러보고 운영에 반영할 수 있다. 컨테이너를 가르며 엔진 시험 경로가 열린 것(⑩)과 같은 종류의 이득이다.
설치 단계도 줄었다 — 앱을 두 방에 걸치려면 앱 설정에서 배포(distribution)를 켜고 OAuth로 설치하는 단계가 더 필요했는데, 이제 각 앱이 자기 방에서 바로 설치된다. 그래서 옛 판의 ⏳[배포 켜는 화면 절차 미확인]은 해당 없음으로 종결한다.

⑨ 테스트는 세 겹이다 — 슬랙은 마지막 관문

앞선 판은 검증을 슬랙에서 사람이 해보는 것만 적었다. Hana 지적: "어떻게 다 슬랙에서 테스트하니? 슬랙에서 테스트는 최종으로 하는 거고." 맞다.

겹
무엇을 검증하나
어디서 · 누가
1겹
계산 로직 · 정책 규칙 (혼자 도는 것)
맥 로컬 유닛 테스트 · 에이전트
2겹
상태머신 · 스킬 · 워크플로우 케이스 원장전수 자동 실행
CLI — 슬랙 불필요 · 에이전트가 다 돌린다
3겹
사람 여정 완주 (버튼 · 스레드 · 멘션 · 화면)
스테이징 슬랙 — 사람이 한다
# 프로필을 지정해 한 번만 실행 (비대화형 · 슬랙 없이)
docker exec hermes-stg hermes -p hotel-stg chat -q "<케이스 문장>" --max-turns 3
실측 확인 — hermes chat에 -q QUERY(한 방 질의)와 --max-turns N이 있고 -p <프로필>로 프로필을 고른다. 케이스 원장을 에이전트가 전수 자동 실행할 수 있다.

⑩ 엔진 — 말풀이, 그리고 언제 새 판을 받나

말
무슨 뜻인가
왜 꺼냈나
엔진
Hermes라는 프로그램 그 자체.우리가 만드는 게 아니다 — Nous Research가 만들어 배포하고 우리는 받아서 쓴다. 우리가 만드는 건 그 위에 얹는 스크립트·정책·성격
우리가 만드는 것(②③층)과 다른 층이라 바꾸는 법도 다르다
컨테이너
프로그램을 통째로 담아 둔 컨테이너.서버에 컨테이너를 올려 돌린다. 컨테이너만 바꾸면 프로그램이 통째로 바뀐다
컨테이너가 2개라 엔진도 따로 올릴 수 있다(아래)
이미지
그 컨테이너의 설계도.설계도마다 지문(digest)이 있고, 지문이 같으면 완전히 같은 물건임이 보장된다
「검증한 그것을 그대로」가 지문 대조로 이뤄져서
가동 5주
Hana 서버의 컨테이너가 5주째 안 껐다 켜졌다는 뜻
⚠️ 내가 이걸 잘못 읽었다 — 아래
6월판
Hana 서버에 깔린 Hermes가 6월에 나온 버전이라는 뜻
⚠️ 같은 오류
정정 — 「엔진은 거의 안 바뀐다」는 틀렸다. 아주 자주 바뀐다.
Hana 서버의 Up 5 weeks·v0.17.0을 근거로 그렇게 썼는데, 그건 「우리가 안 올렸다」는 사실이지 「릴리스가 드물다」는 사실이 아니다. 둘을 뒤집어 읽었다(Hana 지적).
git ls-remote --tags .../NousResearch/hermes-agent      (2026-08-28 조회)

v2026.6.19  v2026.7.1  v2026.7.7  v2026.7.7.2  v2026.7.20  v2026.7.30
v2026.8.3   v2026.8.13 v2026.8.16 v2026.8.16.2 v2026.8.18  v2026.8.19  v2026.8.27
                                                                        ↑ 어제

→ 69일간 13건 · 평균 5.8일에 1건 · 8월만 7건
Hana 서버가 6월판인 것은 릴리스가 없어서가 아니라 「언제 올릴지 정한 규칙이 없어서 표류한 것」이다. 독핏에서 같은 표류를 반복하지 않으려면 규칙이 필요하다.
독핏 컨테이너의 지금 엔진(정본 = 인프라 정본 「헤르메스 엔진 버전 원장」 절 · R427 · 2026-09-19): hermes-stg·hermes-prd 둘 다 Hermes Agent v0.21.3(2026.9.14 · upstream 6a886240 · 2026-09-15 설치 · 이미지 digest f1b0199e…). 규칙 = 올리기 전에 「무엇 때문에」를 한 줄로 정하고 Hana 승인 → STG 먼저 → 같은 digest로 PRD → 원장에 한 행. 위 「6월판·v0.17.0」은 Hana 개인 VPS 이야기다.

그래서 진짜 질문은 「언제 받을 것인가」다

시기
규칙
왜
오픈 전(구축 중 — 지금)
최신을 따라간다 — 새 판이 나오면 받는다
실고객이 없어 위험이 낮다. 반대로 오래된 판으로 다 만들어 놓고 오픈 직전에 몰아서 올리는 것이 훨씬 위험하다(한 번에 두 달치가 바뀐다)
오픈 후
정기 창구 + 보안은 즉시가안 = 월 1회 정해진 시간대
매주 운영을 건드리지 않으면서도 표류하지 않는다
⏳ 창구 주기(월 1회)는 가안 — 실제 운영 부하를 보고 정한다(M14 · M5·M6과 같은 시점).

✅ 엔진에도 「스테이징 먼저」가 통한다 (2026-08-30 갱신 — 컨테이너 2개로 풀렸다)

⚠️ 이 절은 2026-08-29까지 정반대였다. 옛 판: "컨테이너가 하나라서 엔진을 바꾸면 스테이징과 프로덕션이 같이 바뀐다. 스크립트·정책(②③층)은 폴더가 갈려 있어 스테이징만 먼저 바꿀 수 있지만 엔진만 예외다." → 컨테이너를 2개로 가르면서(④) 그 제약이 사라졌다. 이게 R265에서 「덤」이라고 부른 것이다.
새 엔진 판이 나옴
   │
   ▼
1. 컨테이너 hermes-stg에만 새 이미지 태그로 올린다   ← ⭐ 여기가 엔진의 「스테이징」이다
   프로덕션 컨테이너는 옛 지문 그대로 돈다                     (compose에서 서비스별로 태그를 달리 준다)
   │
   ▼
2. CLI 케이스 전수 + 테스트 슬랙 여정 재검증
   │
   ▼
3. 통과하면 같은 지문을 hermes-prd에 준다             ← 다시 build 하지 않는다
   │
   ▼
4. 이상하면 직전 설계도로 되돌린다                        ← 이전 이미지를 지우지 않고 남겨 둔다
Hana 개인 서버는 이제 「필수 정거장」이 아니라 「덤」이다. 옛 판에서는 독핏 서버 안에 엔진 스테이징 자리가 없어 개인 서버가 그 자리를 대신했다. 지금은 독핏 서버 안에 자리가 생겼으므로 개인 서버는 더 이른 정찰(새 판이 크게 깨지는지 먼저 보기)로만 쓴다 — 써도 되고 안 써도 된다.
이 절차를 오픈 전부터 쓴다. 구축 중에 최신을 따라가기로 했으므로 위 4단계가 가끔이 아니라 평균 5.8일에 한 번 돌아간다. 손으로 하면 표류하니 ⑪의 기계 게이트에 넣는다.

⑪ 배포 사고는 사람이 아니라 기계가 막는다 (2026-08-28 · Hana 지시)

Hana는 개인 봇을 디스코드로, 독핏 봇을 슬랙으로 쓰기 때문에 사람 쪽에서 축을 헷갈릴 위험은 낮다. 틀릴 위험이 큰 쪽은 에이전트가 배포·마이그레이션을 실행할 때다. 그래서 확인을 사람 눈이 아니라 스크립트에 박는다.

층
장치
무엇을 막나
상태
1
이름·키 분리 — ssh hermes-new(개인) ↔ ssh dogfit-vps(독핏), 키 파일도 별개
엉뚱한 서버 접속
설계 완료
2
화면 분리 — 워크스페이스가 다르고 스테이징은 [TEST] 이름·아이콘 + 채널 stg- 접두사
사람이 방을 착각
설계 완료
3
실행 게이트 — 배포·마이그레이션 스크립트가 스스로 대상(STG/PRD)·remote·branch를 재고, 예상과 다르면 멈춘다. 운영 대상이면 확인 문구 입력을 요구
에이전트가 엉뚱한 환경에 배포
❌ 미구현
사람이 눈으로 pwd·remote·branch를 확인하는 방식은 3층이 아니다 — 잊으면 그만이라 장치로 세지 않는다. 확인 항목은 그대로 두되 스크립트가 대신 읽고 멈추게 바꾸는 것이 이 항목이다. 구현 = scripts/env_guard.sh 1개를 배포·마이그레이션 스크립트 머리에서 부른다.

⑫ 문제가 생기면 — 되짚는 순서

  1. 증거 고정        시각 · 채널/스레드 · 누가 · 입력 · 기대 · 실제 · 그때의「판」
        │            ⚠️ 바로 재시작부터 하지 않는다 — 재시작하면 증거가 사라진다
        ▼
  2. 어디가 고장인지   Slack 앱·토큰 / Hermes 프로필 / 도구 / Supabase /
        │            드라이브 / Cloudflare / 티피 / 지식 위키
        ▼
  3. 읽기만 하는 점검  게이트웨이 살아 있나 · 로그 · 지금 도는 판 · DB 환경 표시 · 외부 API
        │            ← 고치기 전에 본다
        ▼
  4. 스테이징에서 재현   가짜 데이터로 같은 일을 일으켜 본다
        │            ⚠️ 실고객 데이터를 스테이징로 복사하지 않는다
        │            재현 안 되면「원인 미확인」으로 둔다 — 그럴듯한 원인을 고르지 않는다
        ▼
  5. 자산별로 되돌림   아래 표
        ▼
  6. 같은 여정 재검증  고쳤으면 ⑨(테스트 3종)·②(배포 흐름)를 다시 밟는다
고장 난 곳
첫 행동
되돌리는 방법
누가
운영이 조용히 죽음
VPS 밖의 감시가 health·마지막 heartbeat 확인
⏳ [안] 외부 크론이 Slack·메일로 경보 · 봇이 자기 Slack으로만 알리게 하지 않는다(죽으면 알림도 못 보낸다)
Dev
VPS 전손
Hostinger 상태·침해 범위 확인 후 새 쓰기 중지
새 VPS → 고정 이미지 → 재구축 절차서 → 서버 밖 백업에서 복원 → 프로필별 확인
Dev Owner
Hermes 이미지·설정
지금 digest·프로필 로그 확인
직전 digest로 컨테이너 재기동 · 설정은 git 복원
Dev
Slack 앱·토큰
영향받은 앱·워크스페이스만 특정
그 앱 토큰만 재발급·재설치 · 다른 워크스페이스는 안 건드린다
Hana
웹·코드
지금 배포된 SHA 확인
직전 검증 SHA 재배포
Dev
Supabase
쓰기 중지 · 현재 상태를 먼저 뜬다
⚠️ 묻지도 않고 되돌리지 않는다 · 앞으로 가는 마이그레이션 또는 검증된 백업 복원
Owner Dev
구글 드라이브
파일 버전·휴지통·누가 만졌나
버전 복원 또는 휴지통 복원
Dev
지식 위키
git 이력 확인
git revert
Hana
⏳ 이 두 순서는 아직 한 번도 밟아 본 적이 없다 — VPS·PRD가 미생성이라 글로만 있는 절차다. 첫 스테이징 때 실제로 밟아 보고 고친다.

장애 알림은 어느 워크스페이스로 오나 (2026-08-28 Hana 결정)

기본 = 스테이징(STG) 워크스페이스의 #stg-alert 채널. 개발자가 상주하는 곳이고, 프로덕션 워크스페이스를 기술 알림으로 어지럽히지 않는다.
예외 = 직원이 행동을 바꿔야 하는 장애만 프로덕션 워크스페이스의 지정 채널 1곳에도 간다. 기준 한 줄 — "지금 헤르메스가 안 되니 기존 방식으로 진행하세요"를 알려야 하는가. 기술 상세는 보내지 않는다.
슬랙으로만 알리면 안 된다. VPS나 헤르메스가 죽으면 슬랙 알림 자체가 안 나간다 — 봇은 자기 죽음을 자기 슬랙으로 알릴 수 없다. VPS 밖 감시는 메일로도 보낸다.

⑬ 지식 위키(LLM 위키) — 코드와 같은 repo 안에 산다

위키는 코드 repo 안의 wiki/ 폴더를 쓰는 설계다. 편집은 개인 dogfit-staging/main, 서버가 읽는 것은 배포 repo dogfit-ops의 미러 사본(2026-09-19 R430). 그래서 ②층과 「똑같이」가 아니라 아예 같은 것이다 — 코드가 배포되는 그 경로로 위키도 같이 내려간다. 구조(정책·일하는 방식·용어·schema·채널 사용법) = R428 · 03_설계/헤르메스_작업폴더_위키구조_설계_2026-09-19.md.
참조 모델 = hana-brain(Hana 개인 VPS에서 이미 돌고 있는 구조). 한 repo 안에 wiki/(지식) · runtime/hermes/(에이전트 원본) · guides/(운영 절차) · scripts/(배포)가 함께 있고, VPS가 그 repo를 workspaces/에 clone해 쓴다. 에이전트가 위키를 고치면 그 repo에 그대로 commit·push한다.
근거: hana-brain/README.md(*"GitHub가 본체이고, 각자의 clone은 작업본이다"*) · guides/dot-ingest.md(에이전트가 wiki/observations.md를 직접 갱신) · guides/github-vps-operations.md(repo 전용 deploy key로 push)
질문
답
근거
어떻게 읽나
따로 할 일이 없다 — 배포 repo가 /opt/data/workspaces/dogfit-ops/에 clone돼 있고 위키는 그 안의 폴더다 → 그냥 파일 읽기(프로필 cwd = hermes/<프로필>/ · 위키는 ../../wiki/)
2026-09-19 묶음 2 실측(적재 확인)
어떻게 쓰나
헤르메스는 위키·스킬을 읽기 전용으로 쓴다(입구 AGENTS §3) — 고칠 것은 리더에게 올리고, 편집은 설계 세션이 개인 repo에서 한 뒤 다음 배포에 실린다
R428(정책·방식은 위키 · 입구 얇게) · 옛 안(헤르메스가 직접 commit·push)은 미채택
스테이징/운영 구분
STG 초안은 개인 main에서 작업. 사람이 검수한 정의만 PRD 승인본으로 배포. 구체 ref·승격 경로는 운영 시작 전 확정
위키 스키마 §1의 "LLM 생성 = 항상 draft, 사람 검수 → confirmed"와 같은 모양
⏳ 남는 것은 셋이고 워크플로우 트랙이다 — 언제 당겨오나(주기) · 충돌나면 어쩌나 · push 앞의 Hana 게이트를 직원 업무를 막지 않고 어떻게 태우나(R281).

⑭ GitHub·후임자 인계

현재: Hana 개인 oimoaoa/dogfit-staging의 main을 계속 사용한다. 오픈 때문에 새 repo를 만들거나 이력을 버리지 않는다.
후임 선택
구조
확인할 것
독핏 조직
배포 repo oimoaoa/dogfit-ops(2026-09-19 생성 · Hana 개인 사설)를 오픈 때 독핏 조직으로 이전 — 편집 repo dogfit-staging은 인계 대상이 아니다(R430)
회사 통제·복구 권한과 사람별 역할
후임 개인
후임의 별도 private staging repo
회사가 승인본·문서를 확보하고 다음 인계도 가능
인계 가이드에 담을 것: 승인 코드 SHA·마이그레이션, repo/배포 키, STG DB, STG Slack 앱·프로필, VPS·Hermes·백업, STG 웹 연결. 후임이 재배포·조회·멘션 응답을 확인한 뒤 Hana 접근 회수와 키 재발급을 진행한다. 자격증명 값은 가이드에 쓰지 않는다.
별도 관리 정본: 인프라_통합_정책.md §6 「후임자 GitHub·STG 연결 가이드」
운영 전 할 일: PRD repo/ref 또는 배포 산출물 경로·승인 절차 확정. 이것은 후임 인계 시점까지 미루지 않는다.

⑮ 판 사이트 — 위와 별개 축

우리가 만든 문서를 보여주는 정적 페이지다. 고객 데이터도 로그인도 없고, 독핏 실서비스가 아니다. 그래서 이관 대상이 아니고 계정도 Hana 개인 그대로 둔다.
판 사이트
작업판(내부)
공유판(독핏)
주소·배포
dogfit-plan.pages.devHana 개인 Cloudflare 전부 실림 · deploy_pan.sh · 수시
▶
dogfit-ax.pages.devHana 개인 Cloudflare 선별만 · --prod · Hana 게이트

⑯ 아직 안 닫힌 것

M4 — 호텔 계산기를 실서비스로 옮길지 (오픈 준비 때)
M5 — PRD 유료 방향. STG Free 별도 조직 또는 한 Pro 조직의 두 프로젝트 선택 (생성·결제 전)
M6 — 복구 훈련(restore drill) 주기 — 훈련용 복구 DB의 위치·접근 범위까지 검토. 실데이터 적재 대상 STG에 덮어쓰기 금지 (첫 훈련 후)
M10 — 기존 직원 최고관리자를 오픈 전에 어떻게 할지. 재직 여부·의도 여부를 독핏에 확인한 뒤 독핏이 정한다. 우리는 사실만 기록한다
M11 — 음성 전사를 local(faster-whisper)로 할지 API로 할지 (코치 실녹음 벤치마크 후)
M12 — Hermes가 DB를 어떻게 조회하나 — 직접 붙나, 조회 모듈을 통하나. 직원이 @헤르메스 멘션으로 조회·안내를 받는 요구 자체는 이미 확정(R20 · 2026-07-07). 안 정해진 것은 경로다 — ⓐHermes 안의 조회 스킬(쉽지만 키가 Hermes에 남아 직접 붙는 것과 사실상 같다) / ⓑ별도 조회 서비스(읽기 전용·좁은 질의 — Hermes가 마스터 키를 아예 안 갖는다) → 워크플로우 트랙 · 흐름도 ①의 「Hermes ↔ Supabase」 선이 여기서 갈린다
M14 — 엔진 새 판을 언제 받을 것인가(창구 주기 · 가안 월 1회) (오픈 전 3개월 운영 뒤)
R435 🆕 — 배포 필요(열림): 입구 5장·위키 §4의 R433 멘션 규칙 문안이 서버 clone(1dd4c29)보다 새 판 — 다음 프로필 작업 전에 한 번 「올려」(배포 원장 맨 위 행)
R277 🆕 — 스킬 자동 업데이트 등급 3종의 경계. 「개선 말고 보고만 / 검토하고 통과 / 자잘한 건 후보고」 중 어디까지가 자잘한 것인지를 정해야 총괄(⑤)이 판정할 수 있다 → 워크플로우 트랙
✅ 2026-08-27~30에 닫힌 것 — M1(VPS·OpenAI = dev@ 명의) · M2(실서비스 웹 = Cloudflare·dev@) · M3(테스트 슬랙 = 독핏 계정) · M7(상설 테스트 프로필) · M8(테스트 드라이브 = Dogfit Staging) · M9(프로필이 담이 아닌 것을 감수 — 단 한 컨테이너 안에서만) · M13(스테이징 슬랙 = dev@) · M15(컨테이너 2개로 가른다) · M16(총괄을 컨테이너마다 1명씩)

이번 Claude 검토 요청

반려견 접근 인증: 전체 로그인+긴 세션 또는 공개 반려견 정보+보호자 정보 조회 시 인증. 매번 이메일 인증해야 하는 구조를 피하고 직원별 접근·회수 방식을 검토한다. 브라우저에 원본 개인정보를 보내고 겉만 가리는 방식은 불가.
DB 비용: 같은 조직 Free/Pro 혼합 불가. Pro 한 조직에 Micro 두 개의 기본 예시는 월 약 $35($25 + $10×2 − $10 credit). Free 별도 조직+PRD Pro 예시는 약 $25. 실제 가동시간·초과사용·옵션·세금 별도.
Free 정지: 최근 7일간 충분한 DB 활동 기준. 특정 healthcheck의 보장은 없으므로 방식·실패 알림은 검토 후 결정.
근거: Supabase Invoice, Project Pausing. 조사 2026-09-15. 상세 = Claude 인계 원장