메뉴
HN
Hacker News 41일 전

단순 챗봇 UI를 넘어선 에이전트 전용 IDE 'Polypore'

IMP
7/10
핵심 요약

폴리포어(Polypore)는 기존 코드 에디터에 챗봇을 덧붙인 방식이 아닌, 처음부터 AI 에이전트를 중심으로 설계된 오픈소스 데스크톱 IDE입니다. 모든 패널이 독립적인 샌드박스로 작동해 자유롭게 배치 및 확장이 가능하며, MCP(모델 컨텍스트 프로토콜) 서버를 통해 AI가 직접 디버깅, 메모리 관리, 코드 검증 등을 수행할 수 있습니다. 특히 API 키와 같은 민감 정보는 OS 키링에 안전하게 보관되어 에이전트가 직접 값을 볼 수 없도록 처리하는 것이 특징입니다.

번역된 본문

원문 제목: 에이전트 코딩은 코드 에디터에 채팅창을 덧붙인 수준 이상을 deserved한다 소스: 해커뉴스(hackernews)

폴리포어(Polypore) 에이전트 데스크톱 IDE입니다. 언어와 운영체제에 구애받지 않습니다. 모든 화면 영역은 도킹 가능한 패널로 구성되어 있어 분할, 재정렬이 가능하고 불필요한 것은 닫을 수 있습니다. 내장된 패널만으로도 대부분의 워크플로우를 다루며, 부족하다면 SDK를 활용할 수 있습니다.

기술 스택: Tauri 2 · React 18 · Dockview · Monaco · MIT 라이선스 · 추적 기능(Telemetry) 없음

데모: polyporedemo1080.mp4

설치 방법: 최신 릴리스에서 사용 중인 플랫폼에 맞는 빌드 파일을 다운로드하세요. 최초 설치 이후 폴리포어는 자동으로 업데이트됩니다.

  • Linux: .AppImage (모든 배포판), .deb (Debian/Ubuntu), .rpm (Fedora/RHEL)
  • macOS: .dmg (Apple Silicon 또는 Intel)
  • Windows: _x64_en-US.msi 또는 x64_setup.exe Linux에서 AppImage를 실행하려면 FUSE가 필요합니다 (Arch의 경우 fuse2). 실행 권한을 부여하고 다음 명령어로 실행하세요: chmod +x Polyporeamd64.AppImage ./Polypore_amd64.AppImage 소스에서 직접 빌드하려면 아래의 '시작하기' 섹션을 참조하세요.

핵심 아이디어 에이전트 도구 생태계는 매우 빠르게 변화합니다. 최신 모델, CLI, 오케스트레이션 패턴은 일반적인 IDE의 출시 주기보다 빠르게 변합니다. 폴리포어는 이러한 변화를 따라잡도록 구조화되었습니다. 모든 표면 영역은 공유 계약(Contract) 뒤에 있는 샌드박스 패널입니다. 코어를 건드리지 않고도 IDE의 어떤 부분이든 교체, 확장 또는 삭제할 수 있습니다. 이것은 단순히 코드 에디터에 에이전트 패널을 나중에 추가한 것이 아닙니다. 레이아웃, 메모리 시스템, 디버깅 도구 및 MCP 서버는 모두 에이전트를 주요 사용자로 삼아 설계되었습니다.

패널 구성

  • 탭 버튼을 통해 8개의 패널을 사용할 수 있습니다:
  • claude: 슬래시 명령어 빠른 실행이 가능한 Claude CLI 터미널
  • codex: 슬래시 명령어 빠른 실행이 가능한 Codex CLI 터미널
  • preview: 브라우저, CLI 또는 모든 개발 서버의 실시간 런타임 출력
  • editor: 프로젝트별 진단 기능이 있는 Monaco 편집기
  • diff-stack: 나란히 보기 diff 및 탐색 가능한 히스토리 피드
  • terminal: 독립적인 pty 터미널
  • debug: 실행 검증 및 진단
  • memory: [[위키링크]]와 컨텍스트 인벤토리가 있는 프로젝트 지식 베이스
  • agent: 포메이션 캔버스, 스킬, MCP 관리 및 보안 비밀값(Secrets) 관리

SDK 및 플러그인 서드파티 패널은 내장 패널과 동일한 HostRpcServer 계약을 사용하는 샌드박스된 iframe입니다. 어떤 프레임워크로든 플러그인을 작성하여 .polypore/plugins// 폴더에 넣으면 패널 스트립에 나타납니다. 에이전트는 내장 패널을 구동하는 것과 동일한 방식으로 MCP 서버를 통해 이를 구동할 수 있습니다.

폴리포어 IDE MCP 서버 Node MCP 사이드카(Sidecar)가 폴리포어와 함께 제공됩니다. Claude Code는 .mcp.json에서 이를 자동으로 인식합니다. 이를 통해 에이전트는 22개 이상의 도구를 사용하여 IDE를 직접 제어할 수 있습니다:

  • polypore.debug.*: 세션 시작, 중단점 설정, 단계별 실행, 콘솔/DOM/네트워크 캡처
  • polypore.memory.*: 지식 베이스 읽기/쓰기, 항목 연결, 인수인계 문서 작성
  • polypore.verify.*: 검증 스위트 선언 및 실행
  • polypore.tasks.*: IDE에 실시간으로 보이는 작업 생성 및 업데이트
  • polypore.phase.*: 라이브 UI에 워크플로우 단계 보고
  • polypore.secrets.*: 비밀값을 노출하지 않고 중개된 HTTP 요청 수행
  • polypore.skills.*: 활성화된 스킬 라이브러리 읽기
  • polypore.format.*: 에디터 내에서 포매터(Formatter) 실행

비밀값 브로커(Secret broker) 비밀값은 OS 키링(Keyring)에 저장됩니다. 폴리포어가 에이전트를 생성할 때 환경에서 등록된 모든 비밀값을 제거하고 POLYPORE_SECRET_HANDLE_ 감시값(Sentinel)으로 대체합니다. 에이전트는 HTTP 요청과 함께 polypore.secrets.use를 호출하며, 폴리포어가 값을 주입하고 반환 시 이를 마스킹합니다. AI 모델은 평문을 절대 볼 수 없습니다.

폴리플로우(Polyflow) 스킬 전체 개발 주기를 다루는 packages/polyflow/ 내의 15가지 슬래시 명령어: /polyflow, /polyflow-go, /polyflow-brainstorming, /polyflow-writing-plans, /polyflow-executing-plans, /polyflow-tdd, /polyflow-iterate, /polyflow-debug, /polyflow-review, /polyflow-design-interface, /polyflow-prd, /polyflow-improve-architecture, /polyflow-qa, /polyflow-glossary, /polyflow-compact

기술 스택

  • 셸(Shell): Tauri 2, Rust
  • 렌더러(Renderer): React 18, Vite, TypeScript
  • 패널(Panels): Dockview
  • 에디터(Editor): Monaco
  • 터미널(Terminal): xterm.js, portable-pty
  • MCP 사이드카: Node, JSON-RPC
  • 데이터 저장(Persistence): rusqlite를 통한 SQLite
  • 비밀값(Secrets): keyring 크레이트를 통한 OS 키링
  • 파일 감시(File watching): notify
  • 계약(Contracts): JSON Schema, packages/sdk/ 내 코드 생성(codegen)

시작하기 전제 조건: Node 20+, Rust 안정 버전(rustup). Linux의 경우 libwebkit2gtk-4.1-dev libgt(릴)도 필요합니다.

원문 보기
원문 보기 (영어)
Polypore Agentic desktop IDE. Language agnostic, OS agnostic. Every surface is a dockable panel: split, reorder, close what you don't need. The built-in panels cover most workflows. If they don't, the SDK is there. Tauri 2 · React 18 · Dockview · Monaco · MIT · no telemetry Demo polyporedemo1080.mp4 Install Download the build for your platform from the latest release . Polypore updates itself after the first install. Platform File Linux .AppImage (any distro), .deb (Debian/Ubuntu), .rpm (Fedora/RHEL) macOS .dmg (Apple Silicon or Intel) Windows _x64_en-US.msi or _x64-setup.exe On Linux the AppImage needs FUSE ( fuse2 on Arch). Mark it executable and run it: chmod +x Polypore_ * _amd64.AppImage ./Polypore_ * _amd64.AppImage To build from source instead, see Getting started below. The idea The agentic tooling space moves fast. The right models, CLIs, and orchestration patterns shift faster than a typical IDE's release cycle. Polypore is structured to keep up. Every surface is a sandboxed panel behind a shared contract. Any piece of the IDE can be swapped, extended, or dropped without touching the core. This is not a code editor with an agent panel added later. The layout, the memory system, the debug tooling, and the MCP server are all designed around the agent as the primary actor. Panels Eight panels are available from the + tab button: Panel What it does claude Claude CLI terminal with slash-command quick-launch codex Codex CLI terminal with slash-command quick-launch preview Live runtime output: browser, CLI, or any dev server editor Monaco editor with per-project diagnostics diff-stack Side-by-side diff and scrubbable history feed terminal Standalone pty terminal debug Verify runs and diagnostics memory Project knowledge base with [[wikilinks]] and context inventory agent Formation canvas, skills, MCP management, and secrets SDK and plugins Third-party panels are sandboxed iframes using the same HostRpcServer contract as the built-ins. Write a plugin in any framework, drop it in .polypore/plugins/<id>/ , and it appears in the panel strip. Agents can drive it through the MCP server the same way they drive built-in panels. polypore-ide MCP server A Node MCP sidecar ships with Polypore. Claude Code picks it up from .mcp.json automatically. Gives agents direct IDE control through 22+ tools: Namespace What agents can do polypore.debug.* Start sessions, set breakpoints, step, capture console/DOM/network polypore.memory.* Read/write the knowledge base, link entries, write handoff documents polypore.verify.* Declare and run verification suites polypore.tasks.* Create and update tasks visible in the IDE in real time polypore.phase.* Report workflow phase to the live UI polypore.secrets.* Make mediated HTTP requests without seeing the secret value polypore.skills.* Read the active skill library polypore.format.* Trigger formatters in-editor Secret broker Secrets live in the OS keyring. When Polypore spawns an agent it strips every registered secret from the environment and replaces it with a POLYPORE_SECRET_HANDLE_<KEY> sentinel. Agents call polypore.secrets.use with an HTTP request; Polypore injects the value and masks it on the way back. The model never sees plaintext. Polyflow skills 15 slash commands in packages/polyflow/ covering the full development loop: /polyflow /polyflow-go /polyflow-brainstorming /polyflow-writing-plans /polyflow-executing-plans /polyflow-tdd /polyflow-iterate /polyflow-debug /polyflow-review /polyflow-design-interface /polyflow-prd /polyflow-improve-architecture /polyflow-qa /polyflow-glossary /polyflow-compact Stack Shell Tauri 2, Rust Renderer React 18, Vite, TypeScript Panels Dockview Editor Monaco Terminal xterm.js, portable-pty MCP sidecar Node, JSON-RPC Persistence SQLite via rusqlite Secrets OS keyring via keyring crate File watching notify Contracts JSON Schema, codegen'd into packages/sdk/ Getting started Prerequisites: Node 20+, Rust stable ( rustup ). Linux also needs libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev . npm ci cd src-tauri && cargo build && cd .. npm run app For renderer-only development (no Tauri bridge): npm run dev Scripts Command npm run app Desktop app via Tauri npm run app:build Production bundle npm run dev Vite renderer on 127.0.0.1:1420 npm run typecheck Codegen + tsc --noEmit npm test vitest renderer suite npm run mcp MCP sidecar against cwd npm run mcp:smoke JSON-RPC tools/list smoke npm run mcp:pipeline-smoke End-to-end plugin + skill + secret cd src-tauri && cargo test Rust tests cargo clippy --no-deps -- -D warnings Rust lints Architecture ┌────────────────────────────────────────────────────────────────────┐ │ Tauri shell (Rust, src-tauri/) │ │ ├─ host_broker (HTTP) → emits Tauri events to the renderer │ │ ├─ secret_broker (HTTP) → OS keyring, never returns plaintext │ │ ├─ agent runtimes → stdio adapters per CLI; ACP opt-in │ │ ├─ pty (portable-pty) ├─ persistence (rusqlite) │ │ ├─ snapshotter ├─ fs_watch (notify) │ │ └─ plugin:// protocol → serves .polypore/plugins/<id>/<asset> │ ├────────────────────────────────────────────────────────────────────┤ │ Renderer (React + Dockview) │ │ ├─ HostRpcServer (packages/host) shared contract for all plugins │ │ ├─ PolyporeHost loopback built-in plugins use this │ │ ├─ PluginLoader 3rd-party iframes use this │ │ └─ built-in panels (plugins/) │ ├────────────────────────────────────────────────────────────────────┤ │ polypore-ide MCP sidecar (Node, packages/mcp-server/) │ │ ├─ 22+ tools → host_broker for live state changes │ │ └─ secrets.* → secret_broker, value never returned to agent │ └────────────────────────────────────────────────────────────────────┘ Contracts live in schemas/ and codegen into packages/sdk/src/types.gen.ts and packages/sdk/src/validators.gen.ts . Run npm run codegen after editing a schema. Environment variables POLYPORE_PROJECT_ROOT Override cwd as the workspace root POLYPORE_ENABLE_ACP=1 Opt into the ACP adapter POLYPORE_CONFIG_DIR Secrets metadata location (default ~/.config/polypore ) POLYPORE_UPDATE_ENDPOINT Override the auto-updater endpoint Contributing See CONTRIBUTING.md . License MIT