C.W.K.
Stream
Lesson 03 of 04 · published

3-tier 연결

~11 min · three-tier, connection, tailscale, endpoint

Level 0식은 초고
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"브레인은 책상 하나에 살아. 그래서 연결 설정이 답해야 해: 지금 브레인이 어디 있어?"

브레인은 아빠 책상에 살아

Rekindle 은 자기 브레인이 없으니까, 아빠가 cwkPippa 백엔드가 도는 머신을 떠나는 순간 margin-Pippa 와 CMD+K 가 죽어. 버그가 아냐 — 'no own brain' 의 정직한 귀결이야. 수정은 로컬 브레인을 키우는 게 아냐. 한 질문에 답하는 런타임 Pippa connection 설정이야. 여기서 브레인에 어디로 닿을 수 있어? 세 tier 가 실제 상황을 덮어.

Tier                타겟                    브레인               되는 것
------------------  ---------------------  -------------------  --------------------
This Mac            localhost              full cwkPippa        CMD+K + margin iframe
Office (Tailscale)  office 호스트, PIN-gated full cwkPippa (원격)  같음, PIN-gated
Offline             로컬 Ollama            persona-only fallback CMD+K + 네이티브 채팅

세 tier, 하나의 정체성

핵심: 두 online tier 는 브레인이 어디 인지를 바꾸지 누구 인지를 안 바꿔. "This Mac" 은 REST+SSE 클라이언트와 embed iframe 을 localhost 로 겨눠. "Office" 는 Tailscale (사설 mesh VPN) 로 office 머신에 겨누되, 원격 브레인이 열려 있지 않게 remote-PIN 세션 토큰으로 gate 해. 같은 cwkPippa, 같은 binding, 같은 Pippa — endpoint 만 움직여. tier 를 바꾸는 건 클라이언트를 다시 겨누는 거지 성격을 바꾸는 게 아냐.

endpoint 는 움직이고, 정체성은 안 움직여

이게 얇은 클라이언트를 브레인에서 떨어져도 쓸 수 있게 만드는 깔끔한 방법이야. 브레인을 단수로 유지하고 그 위치를 런타임 설정으로 만들어. 아빠가 책상에 있으면 localhost; 여행 중이면 PIN 으로 Tailscale 로 office; 네트워크가 아예 없으면 offline fallback (다음 레슨). 설계가 'no own brain' 이 실생활과의 접촉을 살아남게 해 — 원격 접근을 얻으려 단일-브레인 규칙을 타협하는 게 아니라, 그냥 클라이언트한테 어디를 두드릴지 가르치는 거야.

Code

연결 tier 는 endpoint 를 다시 겨눠, 정체성이 아니라·typescript
type ConnMode = "this-mac" | "office" | "offline";

// 두 ONLINE tier 는 같은 cwkPippa 브레인에 어디로 닿을지만 고를 뿐.
function endpointFor(mode: ConnMode, officeHost: string): string {
  switch (mode) {
    case "this-mac": return "http://localhost:8000";        // 책상의 브레인
    case "office":   return `http://${officeHost}`;         // Tailscale 로 브레인, PIN-gated
    case "offline":  return "http://localhost:11434";       // 로컬 Ollama fallback (다음 레슨)
  }
}

// this-mac 과 office 는 같은 Pippa, 같은 bind — URL 만 달라.
// 원격 tier 는 추가로 PIN-세션 토큰을 실어 열려 있지 않게 해.

External links

Exercise

집 머신에 도는 서비스에 의존하는 도구가 있어. 연결 tier 를 설계해봐: 집에서, 여행 중, 네트워크 없음. 각각 endpoint 와 gate (있으면) 를 이름 붙여. 그다음 모든 tier 가 지켜야 할 invariant — 클라이언트가 어디로 연결하든 같게 남는 것 — 을 말해.
Hint
집 = localhost, gate 필요 없음. 여행 = 사설 VPN 으로 집 호스트, 토큰/PIN 으로 gate. 네트워크 없음 = scoped 로컬 fallback. invariant: 내내 같은 브레인/서비스 정체성; tier 마다 위치 (와 그 gate) 만 바뀜.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.