이 노트에 대하여

이 노트는 2026년 6월 말부터 7월 초까지 이어진 entwurf 0.12 전환기의 날것을 한 방에 담는다. 겉으로는 pi-shell-acp 의 rename, npm release, Fable에게 보낸 설치면 편지처럼 보이지만, 중심 주제는 하나다. entwurf 는 에이전트 오케스트레이터가 아니라 경계를 다루는 프로젝트다. 각 하네스의 transcript/auth/runtime을 소유하지 않으면서, 가든 아이디와 힣의 드라이버 하나로 서로를 부르게 하는 얇은 배선이다. 그래서 설치면, 상태바의 물음표, run.sh setup, smoke가 실제 배선을 자르지 않는 검증 계약이 모두 철학의 일부가 된다.

히스토리

  • [2026-07-06 Mon 17:24] 2026-06-27, 2026-06-29, 2026-07-03 journal 원석 세 편을 하나의 autholog 방으로 회수했다. 원래 빈방의 Gas Town 씨앗은 하단 옛 방의 씨앗 으로 보존.
  • [2026-07-06 Mon 15:31] Beads Agent Mail 멀티에이전트 병렬작업 노트를 여기로 통합했다.
  • [2026-01-02 Fri 07:22] Created!

관련메타

관련노트

한 줄

entwurf 는 더 많은 오케스트레이션 기능이 아니라, 각 하네스가 자기 경계를 지키면서도 힣의 드라이버 하나로 서로를 부를 수 있게 하는 설치면의 결계다.

세 편의 같은 맥락

세 원문은 시간상으로 0.12.0-pre → 0.12.2 release → Fable 설치면 편지 순서다. 그러나 주제는 버전 번호가 아니다.

첫 글은 이름을 바꾸는 이유를 말한다. pi-shell-acp 라는 이름은 pi와 ACP를 중심으로 둔다. 하지만 실제 방향은 각 모델사의 네이티브 하네스, 즉 Claude Code, Codex, agy, pi가 자기 자리에서 태어난 그대로 연결되는 쪽으로 이동했다. 그러므로 이름은 entwurf 여야 한다. 중심은 프로토콜이 아니라 분신도구상자다.

둘째 글은 release 표면의 짧은 문장이다. garden-citizen dispatch substrate, thin bridge, without pretending to own transcript/auth/runtime. 이 한 줄은 첫 글의 긴 왜?!를 영어 공개면으로 압축한다.

셋째 글은 설치면으로 내려간다. 얇은 bridge일수록 실제 보장해야 하는 것은 설치와 배선이다. 상태바의 물음표는 장식이 아니라 트립와이어다. 배선이 끊기면 바로 보이고, 그러면 설치 경계를 다시 조인다. run.sh setup 은 개발자 설치의 멱등 한 방이고, npm 설치는 소비자의 배선을 책임지는 공개 계약이다.

경계를 다루는 프로젝트

entwurf 는 “많은 에이전트를 멋지게 부리는 두꺼운 오케스트레이터”가 아니다. 오히려 반대다. 각 하네스가 이미 가진 오케스트레이터 기능, 투두, 메모리, 서브에이전트, 내장 도구를 모두 켜면 서로 친구가 될 수 없다. 그래서 힣은 빼라고 말한다. 각 학교 친구들에게 하나의 드라이버만 쥐여준다.

그 드라이버는 소유하지 않는다. transcript를 가져오지 않고, auth를 탈취하지 않고, runtime을 대신하지 않는다. 대신 garden id로 부른다. 이것이 thin이다. 얇기 때문에 약한 것이 아니라, 얇아야 각자의 경계가 보존된다.

이 경계 감각 때문에 ACP도 “버린다/받는다”의 단순한 결론이 아니다. 범용 중심축으로서 ACP를 내려놓되, 기업용 하네스나 Snowflake Cortex 같은 경우를 위한 얇은 pi ACP plugin은 다시 받아준다. 정공법이면 남기고, 정공법이 아니면 버린다.

설치면은 철학이다

설치면은 기술 지원 항목이 아니다. entwurf 의 실체가 얇은 배선이라면, 설치는 곧 존재 방식이다. 개발자는 로컬 체크아웃에서 run.sh setup 한 방으로 배선을 회복해야 하고, 소비자는 npm 설치 후 권고된 설정으로 Claude Code, pi, claude-agent-acp 쪽 배선이 깔려야 한다.

그래서 상태바의 물음표는 실패가 아니라 성공한 경보일 수 있다. 배선이 끊겼는데 조용히 넘어가는 것이 진짜 실패다. 물음표가 떠야 한다. “여기 경계가 풀렸다”고 말해야 한다. 그때 maintainer는 다시 결계를 조인다.

Fable 답장은 이 원칙을 실측으로 확인한다. smoke가 uninstall의 honest inverse를 실제 checkout에 실행해 .assembled 를 삭제했고, 그 결과 새 Claude Code 세션에서 meta-bridge plugin이 로드되지 않았다. check는 초록이었지만, 실제 개발자 배선은 잘렸다. 이 사건은 “검증이 검증 대상을 파괴하면 안 된다”는 새 gate를 요구한다.

원문 보존 — 2026-06-27 entwurf 0.12.0-pre

from: /home/junghan/sync/org/journal/20260622T000000--2026-06-22__journal_week25.org:574-617

Danger

[entwurf 0.12.0-pre - pi-shell-acp 근황]

AI 에이전트 하네스 도구 만들어 쓰는 것 다들 알게다. pi-shell-acp라고 있다. 이 주제는 크아. 길다. 프론티어 모델한테 깃허브 주고 물아보는게 좋을게다. 가든도 같이 주고 샅샅이 조사해줘라고 한 다음에 궁금한걸 물아보는게 좋을 것 같다. 힣은 AI를 전혀 모른다. 사적인 용어가 많기에 구구절절 어디를 이야기할지 모르겠다. 개발자일 필요는 없으나 클로드코드 코덱스 agy 등을 사용해 보았다면 뭐하는지 알게다.

두꺼운 오케스트레이터는 힣도 제대로 안써봤다. 스티브예기 선생의 gastown도 관심있게는 보았지만 아직 힣의 수준은 여기에 이르지 못했다. 힣은 pi coding agent 갬성이다. 이걸 만드는 마리오와 아르민을 좋아한다. 즉, 실리콘밸리 공장 보다 유럽의 어느 대장장이의 공방를 선호한다. pi 이야기를 하면 너무 길어 질 것 같다.

돌아가자. entwurf는 pi-shell-acp을 rename한 프로젝트 이름이다. entwurf-rename 브랜치에 거의 다 준비가 되어있다. 제주도에서 끄적이다가 하루 이틀 손도 안대고 쉬고 있다. 마리오가 말하는 OSS-WEEKEND인가? 공방 휴가 기간이라고 봐야 한다.

왜?!에 대한 이야기를 좀 하려고 한다.

pi-shell-acp는 pi를 중심에 두고 ACP 프로토콜로 클로드, 지피티, 제미나이를 묶어내는 것이 목표였다. auth 구독 요금제 이런 이야기는 조심스럽다. 요금제 이슈는 올해 상반기에 나에겐 중요한 이슈였다.

pi로 묶어 냈다는 말은 결국 힣의 드라이버 1개를 각 하네스에 연결 해줬다는 말이다. 여기서 entwurf v1를 시작하게 되었다. 분신이라고 한글로는 번역하는 용어이다. 감이 오는 그런 것들이 다 된다고 보면 된다. 다른 학교 친구들과 만나서 힣의 공방에서 끄적이게 하는 거다.

그렇다면 entwurf로 rename하는 이유는? 그래 올게 왔다. ACP 프로토콜을 내려 놓아야 할때가 되었기 때문이다. 프로토콜의 문제가 아니라 각 모델사의 정책에 따른 것이다. 클로드는 클로드코드를 써야 하고, 제미나이는 agy를 사용해야 한다. 그렇다면 pi일 필요가 없어졌다. 사실 어떤 터미널 에이전트 도구를 사용하든간에 테마 대강 맞추고 상태바 맞추고 키바인딩 맞추면 거의 차이가 없다. 어짜피 입력하고 엔터 누르는것 뿐이니까.

물론 각 에이전트 도구는 보통 물건이 아니다. 내장 시스템 프롬프트랑 빌트인 도구세트가 빵빵하다. 근데 이걸 다 켜면?! 힣의 드라이버를 줘도 안쓸꺼다. 투두, 메모리, 서브에이전트 다 자기꺼 쓰면 다른 학교 친구들하고 친하게 지낼수가 없다. 과감히 다 버려야 한다. 거의 pi 수준으로 싹 정리하는거다. 그리고 힣의 드라이버 1개를 다시 건네 주는거다.

그 이름이 entwurf v2이다. 즉 클로드코드 코덱스 agy pi가 하나의 드라이버, 하나의 인터페이스로 결속한다. 그리고 서로는 가든아이디로 바라본다. entwurf는 각 하네스를 존중한다. 어떠한 TOS 위반 사항이 없이 각 모델이 태어난 그대로 연결해준다. 이는 각 도구에 스키마 변경에 영향을 받는 구조다. 허나 정직한 방향이며 정공법이다. 정공법이 아니라면 과감히 버려야 한다.

이러한 방향으로 간다면 pi-shell-acp로 이름을 부르는 것이 거짓이 된다. pi, acp가 중심이 아니기 때문이다. 오직 entwurf로 분신도구 상자로 보아야 한다. entwurf v2는 의도적으로 인터페이스를 하나로 만들었다. spawn resume send 가 나뉠 필요가 없다. 상황을 판단해서 누구를 어디에 어떻게 부를지 권한을 에이전트에게 돌려준 것이다. (이런 이야기 전에도 썻었는데, 비대칭 대칭 공존 이야기에서 했던가)

아무튼 이런 작업은 힣도 에이전트도 힘들다. 경계, 결계를 잡고 조이는 것인데 이건 에이전트들도 태생적으로 힘들어하는 일이다. 새로 뭐 만드는게 펀한데 만들지 말고 빼고 조이라니… 생성코드와 테스트코드 라인 수 기준으로 비슷하게 가는거다. 목업 린트 스모크는 하고 실제 게이트 테스트로 넘어가야한다. 테스트 자체가 비용이 들어가는 구조다. 에이전트 불러야하니까. 어쩔수 없다. 구독 요금제에서나 할수 있다. 하기 싫다고 할거다. 우리가 안하면 누군가 이 고생을 해야 할텐데 그러니 끝내야 한다라고 말을 해줘야 한다. 자기희생 헌신의 워딩이다.

조금 더 가자. 사실 지쳤다. 손구락이 아프다. ACP 이야기 하자. 여기서 ACP가 왜 필요하지? 필요 없다. 그래서 버렸었다. 버리고 아 좋아라 하고 있는데 덴마크에서 PR이 날라왔다. 뭐지? snowflake cortex acp를 가지고 pi-shell-acp 0.11.0에 구현해서 넣어 달라는 것이다. 이런!!!! 놀랍게도 PR은 바로 자진 닫기를 하더라. 더 테스트 해서 다시 날리겠단다. 며칠 뒤에 더 테스트해서 PR이 다시 왔다.

하아. 긴급 회의를 소집했다. 메인테이너로서 결단을 내렸다. ACP 지원한다. pi 앞에 얇게 붙이기로 하였으며 클로드코드만 일단 ACP로 지원하기로 했다. 단 범용 인터페이스로서 cortex와 같은 기업용 하네스 도구들을 받아주기로 한 것이다.

아무튼 여기까지 다 만들고 쉬고 있다. 릴리즈 컷 전인데 각 잡고 4시간은 다듬어야 할 것 같아서 엄두를 못내고 있다. 이전까지는 알아서들 하고 있어라고 했는데 마지막 결계를 조이는 작업은 인지 부하가 크다. 이게 뭐라고 하겠지만 구역질이 올라올것이다. 이런 뭔가 작업은 힣의 생체 에너지 범위 밖에 수준이기 때문에 견디기 힘든 것이다. 너님들은 별것도 아닌 일 일지도 모른다. 어쩌겠는가! 힣의 에에전트는 힣의 한계를 넘지 못하는 것이다. 힣도 쌍코피가 날 각오로 던지는 것이다.

여기까지 근황을 적겠다. 3000자 한계란다. 끝.

원문 보존 — 2026-06-29 entwurf 0.12.2 release

from: /home/junghan/sync/org/journal/20260629T000000--2026-06-29__journal_week26.org:267-290

Danger

[entwurf 0.12.2 release]

entwurf is a garden-citizen dispatch substrate: a thin bridge that lets already-existing agent harnesses address one another by garden id without pretending to own each other’s transcript, auth, or runtime.

npm package: https://lnkd.in/gVu5gErP

Legacy package: @junghanacs/pi-shell-acp. entwurf is its 0.12+ successor line: the same work renamed around the garden-citizen dispatch substrate rather than the pi adapter.

며칠 전에 이거 근황을 적었다. 줄줄.

한마디로 힣맨의 드라이버. acp도 여전히 지원한다. 기업용 하네스를 acp로 여럿 지원하게 될듯하다. snowflake cortex는 pr 가이드를 적아놨으니 작업해서 올려주시겠지. 일단 정리정돈하고 agy, codex 지원할거 넣을 예정.

깃허브에 정말 에이전트 도구 천지다. 힣은 왜 이걸 또 만들었나? 궁금하면 물어보라. 굳이 왜 이렇게 만들어놨는가. 가든id가 왜 필요한가? 왜 thin이라고 할까? entwurf가 뭐 좋을게 있는가? 신박한게 하나도 없어보이는데 뭐할려고 이래 했는가? 왜 굳이 드라이버1개를 들고 있어야하는가? sibling 이나 worker나 뭐가 차이라고 저래 적어놨나? 부르면 그게 그거 아닌가? 그럴지도 아닐지도.

https://lnkd.in/gMsQDfvP

원문 보존 — 2026-07-03 Fable에게 보낸 설치면 편지

from: /home/junghan/sync/org/journal/20260629T000000--2026-06-29__journal_week26.org:547-649

Danger

[§entwurf: Fable 에게]

페블이 다시 풀렸다. 이 친구한테 현재 상황을 좀 보자고 편지를 썼다. 프롬프트 원문이다. 8분이 지났는데 아직 답변은 없다. 다른 친구한테 편지를 보내려고 하다가… 여기 글이나 써야지. 편지지는 emacs-everywhere라는 편지지를 사용한다. 아. 답변 왔다.


페블 반갑다. 이야기를 해보자. 설치 면에 대해서 보자는거야. 설치는 개발자가 나와 같이 코드에서 설치하는 방법이 있고, 소비자가 npm에서 설치하는 방법이 있다. 우리 하네스는 thin 브릿지로서 설치를 제대로해서 배선을 깔아주는게 거의 핵심이야. 이 배선은 각 하네스에 영향을 받기 쉬워 지금은 클로드코드, pi, pi acp (claude only) 만 지원되지만 codex, agy를 추가할 거야. 어제는 pnpm 배선을 점검했어. 여기 nixos에서 pnpm 패키지 버전이 여러개 있는 문제를 해결한 것이야. 그리고 추가로 pi install 커맨드를 제거했어.

이전에 pi-shell-acp 였을 때는 pi의 패키지로서 동작했지만, 지금은 entwurf 프로젝트야. 즉, pi는 4번째 하네스일 뿐이거든. 설치면에서 pi install이 들어가면 안되는거야.

나는 메인테이너로서 개발자 설치에 하나의 커맨드는 멱등성을 보장하는 핵심 커맨드를 세워야 한다고 했어. 그게 run.sh setup 이야. 이게 무너지면 안되거든.

소비자들에게는 npm 배포버전을 설치하면 바로 동작하는 것을 보장해야 한다고 했어. .claude 설정과 .pi 설정까지 다 건드는 설치야. 사용자는 각각 나름의 설정이 있을거야.

단, entwurf 를 설치한다면 entwurf의 룰을 따르기로 한 것이기 때문에 우리가 권고하는 설정으로 변경해줘야돼. 물론 각자 추가 설정은 남아있겠지만 우리 설정값으로는 변경해주는거야. 그리고 entwurf 는 pi, claude-agent-acp는 무조건 설치해줘야돼. 쓰던 안쓰던간에 acp 배선은 깔아줘야해. 그걸 전제로 이 패키지가 운용되는거야.

오늘 출근해서 클로드코드를 실행해보니 상태바에 드라이버 이모지 옆에 ?가 보인다. 이는 개발자 설치 배선이 풀려버린거야. 이 배경에는 뒤에 오푸스 세션을 복붙해줄거지만, 어제 nixos-config에서 pnpm정리를 한 영향이 있을수도 있어. 근데 이건 정확하지 않아. 왜냐하면, pnpm 정리한 이후에도 세션을 열고 대화를 했었거든, 그리고 setup 커맨드는 퇴근 직전까지 검수한 작업이었어. 즉, setup을 호출했을거라는거야. 그리고 커밋푸시를 했어. 커밋푸시를 하면 pnpm check 과정을 다 통과해야하기 때문에 검증면이 된다고 알고 있었어.

근데 왜 오늘 아침에 ?가 뜨면서 배선이 풀려버린 것인가? 이는 중요해. 이게 오늘만의 일이 아니라. 최근 entwurf 0.12.x 수차례 릴리즈 과정에서 계속 설치면을 가다듬고 있었거든, 다시 말하지만 entwurf 는 설치면을 단단하게 붙잡고 조여서 가는게 핵심이야.

entwurf v2의 핵심 로직과 meta-bridge 등은 실제로 코드로서 오케스트레이터에 비해서 아주 미비해. 기능이 별게 없어. 의도적인 것이지. 유일하게 확실하게 보장해야 하는 것은 claudecode, codex, agy, pi, claude-agent-acp 등이 매일 계속 변경되더라도 설치면에서 이를 잡아줄 수 있어야 한다는거야.

문제가 있으면 설치면에서 바로 박살이 나고, ’?’가 상태바에 보이면서 뭔가 꼬였다는게 명백히 드러나야되는거지. 그러면 다시 나는 설치 경계를 단단하고 조여줄거야.

각각의 하네스는 이미 오케스트레이터 수준의 기능을 가지고 있어. 그럼에도 entwurf는 그것을 버리고 힣의 드라이버 1개만 들자고 외치는 거야. 우리의 룰이 확실히 보장이 되야 각 학교 출신들의 하네스가 가든 아이디로 모이게 된다.

옛 방의 씨앗

이 방은 원래 Gas Town과 Beads Agent Mail 멀티에이전트 병렬작업을 담으려던 빈방이었다. entwurf 설치면 노트로 리모델링하면서 씨앗만 보존한다.

GAS-TOWN을 2026년형 IDE와 Claude Code 계열 오케스트레이션의 다음 단계로 소개한다. 수많은 에이전트 인스턴스를 관리하는 미래 폼팩터를 이해하는 데 중요한 노트다.