Pi – 최소한의 터미널 코딩 하니스
(pi.dev)- Pi는 터미널 기반의 미니멀 코딩 에이전트로, 사용자의 워크플로우에 맞게 확장 가능한 구조를 제공
- TypeScript 확장, 스킬, 프롬프트 템플릿, 테마를 조합해 자신만의 개발 환경을 구성하고, 이를 npm 또는 git 패키지로 공유 가능
- 15개 이상 AI 제공자와 수백 개 모델을 지원하며, 세션 중에도 모델을 전환하거나 사용자 정의 모델을 추가할 수 있음
- 세션은 트리 구조의 히스토리로 저장되어 이전 지점으로 이동하거나 HTML·GitHub gist로 내보내기 가능
- 핵심 기능을 최소화하고 확장성 중심의 설계 철학을 유지해, 개발자가 필요한 기능만 직접 구현하거나 패키지로 추가할 수 있음
Pi 개요
- Pi는 터미널 코딩 하니스로, 사용자가 워크플로우를 바꾸지 않고 도구를 맞춤화할 수 있는 구조
- 확장 가능한 구성요소로 TypeScript 확장, 스킬, 프롬프트 템플릿, 테마를 지원
- 이들을 묶은 pi 패키지를 npm 또는 git을 통해 설치·공유 가능
- 기본 설정은 강력하지만, 서브 에이전트나 플랜 모드 같은 기능은 포함하지 않음
- 네 가지 모드(인터랙티브, print/JSON, RPC, SDK)를 제공하며, clawdbot에서 실제 통합 사례 확인 가능
모델 및 제공자
- Anthropic, OpenAI, Google, Azure, Bedrock, Mistral, Groq, Cerebras, xAI, Hugging Face, Kimi, MiniMax, OpenRouter, Ollama 등 15개 이상 제공자와 수백 개 모델 지원
- API 키 또는 OAuth로 인증 가능
-
/model명령어나Ctrl+L로 세션 중 모델 전환,Ctrl+P로 즐겨찾기 모델 순환 - models.json 또는 확장을 통해 사용자 정의 모델 추가 가능
세션 관리
- 세션은 트리 구조로 저장되어,
/tree명령으로 과거 지점으로 이동 가능 - 모든 분기가 하나의 파일에 저장되며, 메시지 유형 필터링 및 북마크 라벨링 지원
-
/export로 HTML 내보내기,/share로 GitHub gist 업로드 및 공유 URL 생성 가능
컨텍스트 엔지니어링
-
최소한의 시스템 프롬프트와 확장성으로 컨텍스트 윈도우를 세밀하게 제어 가능
- AGENTS.md: 프로젝트 지침을 시작 시 자동 로드
- SYSTEM.md: 프로젝트별 기본 시스템 프롬프트 교체 또는 추가
- Compaction: 컨텍스트 한계에 도달 시 이전 메시지를 자동 요약, 확장을 통해 주제 기반 요약이나 코드 인식 요약 구현 가능
- Skills: 필요 시 로드되는 기능 패키지로, 프롬프트 캐시를 유지하며 점진적 기능 제공
-
Prompt templates:
/name명령으로 확장 가능한 재사용 프롬프트 - Dynamic context: 확장을 통해 메시지 삽입, 히스토리 필터링, RAG 구현, 장기 메모리 구축 가능
메시지 큐잉
- 에이전트가 작업 중일 때도 메시지 제출 가능
-
Enter: 현재 도구 실행 후 전달되는 steering 메시지 -
Alt+Enter: 작업 완료 후 전달되는 follow-up 메시지
-
확장 구조
- Pi는 기능이 아닌 원시 구성요소(Primitives) 중심으로 설계되어, 사용자가 직접 기능을 구현 가능
- 확장은 TypeScript 모듈 형태로, 도구, 명령, 단축키, 이벤트, 전체 TUI 접근 가능
- 예시 확장: 서브 에이전트, 플랜 모드, 권한 게이트, 경로 보호, SSH 실행, 샌드박싱, MCP 통합, 커스텀 에디터, 오버레이 등
- “Yes, Doom runs.”라는 예시처럼 게임 오버레이 확장도 존재
- 직접 구현하지 않으려면 pi 패키지 설치로 기능 추가 가능
- 50개 이상 확장 예시가 GitHub에 공개됨
패키지 관리
- 확장, 스킬, 프롬프트, 테마를 패키지로 번들링하여 npm 또는 git에서 설치 가능
- 예시:
$ pi install npm:@foo/pi-tools $ pi install git:github.com/badlogic/pi-doom - 버전 고정(
@1.2.3또는@tag),pi update로 전체 업데이트,pi list로 목록 확인,pi config로 설정 가능 -
pi -e명령으로 설치 없이 테스트 가능
- 예시:
-
npm 검색어
pi-package또는 Discord 채널에서 패키지 탐색 및 공유 가능
통합 모드
- Interactive: 전체 TUI 환경
-
Print/JSON: 스크립트용
pi -p "query", 이벤트 스트림용--mode json - RPC: stdin/stdout 기반 JSON 프로토콜로 비-Node 환경 통합 지원
- SDK: 애플리케이션 내 임베딩 가능, clawdbot에서 실제 사용 예시 제공
설계 철학
- Pi는 확장성을 극대화하여 핵심을 최소화하고, 사용자가 직접 워크플로우를 정의하도록 설계
- MCP, 서브 에이전트, 권한 팝업, 플랜 모드, 내장 TODO, 백그라운드 bash 기능은 포함하지 않음
- 대신 확장, 스킬, 패키지를 통해 동일 기능을 구현하거나 외부 도구와 연동 가능
- tmux를 통한 병렬 실행 및 관찰 지원
- 이러한 접근은 사용자 주도형 개발 환경 구성을 가능하게 함
- 전체 철학은 관련 블로그 포스트에서 추가 설명 제공
Hacker News 의견들
-
나에게 Pi와 “claw” 현상이 흥미로운 이유는 이것이 오픈소스의 미래를 보여주기 때문임
이제는 기능 요청이나 PR을 보내는 대신, 코딩 에이전트에게 기능 추가 방법을 알려주는 skill 파일을 내려받는 시대가 됨
소프트웨어는 더 이상 고정된 산출물이 아니라, 사용자마다 다른 살아있는 도구가 됨
이런 새로운 협업 패러다임에서 어떤 툴링이 등장할지 궁금함- 나도 같은 흐름을 보고 있음
지금의 소프트웨어는 사용자가 환경을 통제할 수 없게 만들어서 소외감을 줌
하지만 개인화되고 저렴하며 유연한 소프트웨어는 진정한 소유감을 줄 수 있음
예전엔 리눅스 데스크탑이 그런 자유를 줬다면, 이제는 모두가 그 혜택을 누릴 수 있을 것 같음
나는 이런 미래를 낙관적으로 보고 있음 - 나도 최근 이런 생각을 많이 함
앞으로는 극도로 개인화된 소프트웨어가 늘어날 것 같음 — 특정 개인이나 소수 그룹만 이해할 수 있는 수준으로
나도 최근 Claude를 이용해 나와 몇 명만 쓰는 툴을 많이 만들었음
예를 들어 DnD 일정 앱, 스포일러 없는 Formula E 뉴스 확인기, 클라이밍 협동조합 투표 사이트 등
예전엔 이런 걸 만들 이유가 없었는데, 이제는 가능해짐
관련 글은 Releasing Software Now에 정리했음 - “다른 사람의 복제본과는 다른 살아있는 도구”라는 말에 동의하지만, 이런 모델은 기관 채택은 어렵다고 봄
대기업이나 정부가 이런 비일관적인 시스템을 허용할 리 없음 - 이런 패러다임이 왜 흥미로운 툴링을 낳는지 모르겠음
오히려 더 나쁜 도구들이 나올 것 같음 - 모든 사람이 서로 다른 버전의 소프트웨어를 쓰게 되면, 문제 해결이 얼마나 복잡해질지 상상만 해도 아찔함
- 나도 같은 흐름을 보고 있음
-
나는 OpenCode에 익숙해서 개인용 AI 워크스페이스로 써볼까 고민 중임
Pi는 생태계가 작지만 유연성과 확장성이 더 크고, 커뮤니티의 열정도 느껴짐
Pi를 OpenCode 대신 써보는 게 나을지, 그리고 어떤 UI 옵션이 있는지 궁금함- 나도 같은 고민을 하고 있음
OpenCode를 .md 파일 기반으로 글쓰기나 정리용으로 써봤는데 꽤 잘 맞았음
이제는 이 작업에 더 적합한 새로운 하네스를 찾아보고 있음 - 네가 이해한 방향이 정확함
- 나도 같은 고민을 하고 있음
-
내가 요즘 가장 좋아하는 하네스(harness) 임
직접 확장할 수 있어서 효율이 높고, vibes 프로젝트에 통합했음
ACP보다 훨씬 빠름- 직접 통합과 ACP의 속도 차이가 왜 나는지 궁금함
나는 범용 에이전트 상호작용 프로토콜을 찾고 있었는데, ACP가 그 후보였음
그런데 OpenCode조차 UI에서 ACP를 안 쓰는 걸 보면 뭔가 문제가 있는 듯함
대체할 만한 더 나은 옵션이 있는지도 알고 싶음 - 어떤 하네스들과 비교해봤는지 궁금함
- 이거 정말 마음에 듦! 내가 직접 만들려던 걸 이미 구현해둔 느낌임
- “하네스”가 무슨 뜻인지? 그냥 코딩 에이전트 아닌가?
- 직접 통합과 ACP의 속도 차이가 왜 나는지 궁금함
-
Pi를 며칠만 써본 사람 중에 일상용으로 안 쓰게 된 사람을 본 적이 없음
자기 입맛대로 도구를 세팅할 수 있는 자유를 맛보면 다시 돌아가기 힘듦
게다가 그 위에 멋진 확장 기능도 만들 수 있음- 듣자하니 Pi는 코딩 에이전트계의 Neovim 혹은 Emacs 같음
- 반갑지만, 나는 Pi보다 Claude CLI와 OpenCode가 훨씬 생산적이었음
Pi는 확장성은 흥미롭지만, 실제 작업 품질은 부족했음 - Claude Code에는 없는 직접 만든 기능 중 어떤 게 가장 마음에 드는지 궁금함
-
왜 굳이 터미널 앱으로 코딩을 해야 하는지 이해가 안 됨
IDE 확장으로도 똑같은 일을 더 잘할 수 있고, VSCode에서도 창 배치를 그대로 복원할 수 있음- 나는 CLI 에이전트를 쓰면 IDE가 전혀 필요 없음
마치 텍스트 채팅으로 동료 개발자에게 지시하는 느낌임
예를 들어 서버 유지보수 프로그램을 Claude에게 맡겨두고, 다른 일 하다가 결과만 확인함
테스트 통과하면 코드가 어떻게 생겼는지는 중요하지 않음
실제로 15분 정도의 능동 작업만으로 여러 일을 병행할 수 있었음
- 나는 CLI 에이전트를 쓰면 IDE가 전혀 필요 없음
-
나는 Emacs용 pi-coding-agent 패키지로 Pi를 쓰고 있음
RPC 모드로 입력/출력용 Markdown 버퍼를 만들어서, 다른 TUI보다 훨씬 쾌적함
이슈 트래커 연동도 쉽게 했고,read와write명령을 Emacs 버퍼 기반으로 재정의했음
edit명령도 Emacs의 tree-sitter 쿼리를 활용해 개선해보고 싶음
또emacs_eval명령으로 EWW를 통해 문서 탐색도 가능하게 했음- 멋짐!
read와write를 Emacs 버퍼에 어떻게 매핑했는지 궁금함
참고로 Pi Emacs 모드는 여기서 설치 가능함
read,write,edit호출 결과에서 바로 해당 파일을 열 수 있게 하는 기능도 추가 중임
곧 Pi의 세션 및 트리 브라우징과 Magit 연동도 지원할 예정임
- 멋짐!
-
나는 Pi로 시작해서 최근 2주간 oh-my-pi를 써오고 있음
oh-my-pi 저장소는 Pi의 배터리 포함 버전임- oh-my-pi를 써본 경험이 어떤지 궁금함
- 샌드박스 환경에서 돌리고 있는지, 혹은 격리 기능이 있는지도 알고 싶음
-
나도 기존 프로젝트를 복제해서 다른 이름으로 내볼까 함
예를 들어 “Waterfox — 최소한의 웹 소비자” 같은 식으로 -
사전 구성된 Pi 버전: oh-my-pi
- 이 포크는 멋지지만, 아무 저장소의 툴을 마구 추가하는 건 보안상 위험해 보임
앱처럼 안전하게 설치·테스트할 수 있는 격리된 환경이 필요함 - 이 포크의 열렬한 팬임
codex/claude code → opencode → pi → oh-my-pi 순으로 넘어왔음 - 훌륭한 포크임! 나도 기여하려 했지만 커뮤니티가 다소 폐쇄적인 느낌이었음
- oh-my-pi의 웹 툴을 일반 Pi 플러그인으로 분리해서 쓰면 좋을 것 같음
언젠가 직접 시도해볼 생각임 - 하지만 이건 Pi의 본질을 놓친 것 같음
Pi의 매력은 가벼움과 자율성인데, oh-my-pi는 기능이 많아 오히려 OpenCode와 비슷한 무거움을 줌
- 이 포크는 멋지지만, 아무 저장소의 툴을 마구 추가하는 건 보안상 위험해 보임
-
Pi는 정말 훌륭한 설계 선택을 했음
Mario와 Armin에게 찬사를 보냄 — 좋은 취향은 결국 드러남- 하지만 왜 이런 걸 JavaScript로 구현했는지는 이해가 안 됨