peerd는 Chrome/Firefox 확장 프로그램 형태로, 클라우드나 백엔드 서버 없이 사용자의 브라우저 내부에서 직접 실행되는 최초의 네이티브 AI 에이전트 하네스입니다. 기존 탭과 세션을 그대로 활용해 웹 페이지를 제어하고, WebAssembly 기반 샌드박스에서 가상 머신을 구동하는 등 강력한 컴퓨팅 환경을 제공합니다. 모든 작업은 브라우저의 기존 보안 모델(V8, WebCrypto 등)을 활용하여 API 키와 데이터를 안전하게 보호하면서 에이전트를 로컬에서 실행할 수 있다는 점에서 매우 중요합니다.
번역된 본문
peerd는 브라우저에 네이티브로 탑재된 최초의 AI 에이전트 하네스(agent harness)입니다. 이는 사용자가 이미 사용하고 있는 브라우저 내에서 기존 탭과 세션을 그대로 활용하여 전체 에이전트 루프를 실행하는 Chrome 및 Firefox 확장 프로그램입니다. 이 도구는 웹 페이지를 읽고 제어하며, 샌드박스 처리된 컴퓨팅 환경(JS 노트북, WebAssembly로 컴파일된 완전한 Linux 가상 머신, 개인용 클라이언트 측 앱)을 구동합니다. 또한 (프리뷰 채널에서는) 에이전트 간 통신을 위해 구축된 P2P WebRTC 네트워크를 통해 생성된 결과물을 공유합니다. 사용자가 원하는 모델 제공자의 API 키(BYOK)를 직접 연결해서 사용합니다. 데이터가 지나는 경로에는 백엔드, 원격 측정(telemetry), 클라우드 구성 요소가 전혀 없습니다. [newdemo.mp4]
peerd는 브라우저 자체를 런타임 및 보안 모델로 사용합니다. 이는 수십 년간 다져진 브라우저 플랫폼의 견고한 보안 기술(샌드박싱을 위한 V8 격리, 비밀번호 금고를 위한 WebCrypto, 잠금 해제를 위한 WebAuthn 패스키, 불투명 출처(opaque-origin) iframe, 하위 리소스 무결성 등)을 기반으로 구축되었으며, 자체적인 암호화나 프로세스 격리 코드를 새로 작성하지 않았습니다. 키를 보유한 메인 에이전트는 원본 페이지를 직접 읽지 않습니다. 대신 키와 네트워크 권한이 없는 일회용 실행자(disposable runner)가 페이지를 읽으며, 그 출력값은 신뢰할 수 없는 데이터로 간주되어 철저히 격리됩니다. 에이전트가 수행하는 모든 액션은 완료된 것으로 간주되기 전에 실제 페이지를 기준으로 검증됩니다. (자세한 내용은 peerd.ai 참조)
현재 상태: 버전 0.x, 실험적 베타. 초기 기능 구축은 완료되어 통합되었으나(STATUS.md 참조), 인터페이스는 계속 변하고 있습니다. 호환성을 깨는 변경 사항이 발생할 수 있고, 저장소 형식이 바뀔 수 있으며, 무엇보다 이 도구가 브라우저를 제어하고 API 키를 보관하므로 주의해서 사용해야 합니다. 아직 'V1' 공식 출시 약속은 없으며, 시스템이 안정화될 때까지 버전은 0.x 대에 머물렀다가 완성될 예정입니다. 모듈별로 제공되는 기능의 전체 목록은 FEATURES.md를 참조하세요.
설치 방법
개발자 프리뷰: 아래 단계에 따라 압축을 풀지 않은 소스 코드를 직접 불러와 설치합니다. 이는 기여자와 초기 테스터를 위한 현재 기준 설치 경로입니다.
스토어 패키지: Chrome 웹 스토어 및 Firefox 부가 기능 스토어 패키지는 심사가 완료되는 대로 링크가 제공될 예정입니다. 스토어 패키지에는 프리뷰 전용 분산 웹(dweb) 구성 요소와 프리뷰/개발자 고급 자동화 경로가 제외됩니다.
분산 웹(dweb) 프리뷰 (연구 패키지): GitHub 릴리스에 서명된 프리뷰 빌드가 포함될 수 있습니다. 첨부된 릴리스가 없다면 아래 소스 설치 경로를 사용하세요. 프리뷰 패키지에는 peerd 인스턴스 간의 P2P 통신(dweb) 계층이 포함되어 있습니다. dweb 프로토콜이 연구 단계이며 변경될 수 있기 때문에 기여자와 초기 테스터용으로 의도되었습니다. 대부분의 일반 사용자는 위의 두 스토어 패키지 중 하나를 사용하는 것을 권장합니다. 프리뷰 패키지는 스토어 패키지와 함께 별도의 확장 프로그램('peerd preview')으로 설치되며 자체적인 격리된 저장소를 가집니다. 두 간의 상태 이동은 설정 → 내보내기 및 가져오기를 통해 명시적으로 수행해야 합니다.
프리뷰 패키지 설치 경로 (Firefox가 더 원활합니다):
Firefox: 릴리스 페이지에서 peerd-preview-firefox.xpi를 클릭하세요. AMO 서명이 완료되어 일반 확장 프로그램처럼 설치되며 자동 업데이트를 지원합니다.
macOS / Windows의 Chrome (권장): 압축 파일(zip)을 풀어서 직접 로드하세요. Chrome은 이러한 플랫폼에서 스토어 외부의 CRX 설치를 강제로 비활성화합니다 ("모르는 사이에 추가되었을 수 있음"이라는 메시지와 함께 토글이 잠김). 현장 테스트 결과, 관리되지 않는 컴퓨터에서 chrome://policy에 ExtensionInstallAllowlist 정책을 적용해도 이 잠금이 풀리지 않습니다 (Chrome 수준의 MDM 관리를 요구함). 따라서 억지로 풀려고 하지 말고 다음 방법을 사용하세요: peerd-preview-chrome.zip을 다운로드하고 압축을 해제한 뒤, chrome://extensions에서 '개발자 모드'를 활성화하고 '압축 해제된 확장 프로그램 로드'를 클릭하여 압축을 푼 폴더를 선택하면 됩니다. 주의 사항: 자동 업데이트가 지원되지 않으며 (새 릴리스마다 새 zip을 다운로드해야 함), 확장 프로그램 ID가 CRX ID가 아닌 기기마다 고유하게 부여됩니다. 이는 peerd의 선택이 아니라 자체 호스팅 확장 프로그램에 대한 Chrome 플랫폼의 제약 사항입니다.
Linux의 Chrome (또는 정책으로 관리되는 Chrome): peerd-preview-chrome.crx를 다운로드하고, chrome://extensions에서 개발자 모드를 활성화한 다음 파일을 페이지로 드래그하세요. 그러면 peerd.ai/updates/의 피드를 통해 자동 업데이트가 진행됩니다.
확장 프로그램 ID (현재 실행 중인 패키지 확인):
패키지 ID:
peerd (Chrome 스토어): 스토어 목록이나 설치 후 chrome://extensions에서 확인
peerd (Firefox 스토어): peerd@peerd.ai
peerd preview (Chrome): lpdkhfeldihoejbbfonnbekpjclkknoc
peerd is the first AI agent harness native to the browser. It's a Chrome/Firefox extension that runs a full agent loop inside the browser you already use, with your existing tabs and sessions. It reads and drives your pages, spins up sandboxed compute (JS Notebooks, full Linux VMs compiled to WebAssembly, personal client-side apps), and (on the preview channel) shares what it builds over a peer-to-peer WebRTC network built for agent-to-agent communication. BYOK to the model provider of your choice. No backend, no telemetry, no cloud component in the data path. newdemo.mp4 peerd uses the browser as its runtime and its security model. It builds on decades of hardened browser platform work (V8 isolates for sandboxing, WebCrypto for the vault, WebAuthn passkeys to unlock it, opaque-origin iframes, Subresource Integrity) and writes none of its own cryptographic or process-isolation code. The agent that holds your keys never reads a raw page; a disposable runner with no keys and no network does, and its output comes back fenced as untrusted. Every action the agent drives is verified against the live page before it counts as done. (More at peerd.ai .) Status: 0.x, experimental beta. The initial feature buildout is complete and integrated (see STATUS.md ), but the surface is still moving: breaking changes are likely , storage formats may shift, and it drives your browser and holds your API keys, so use it with care. There is no "V1" commitment; versions stay in the 0.x range until the surface stabilizes. For the full, itemized list of what's shipped, categorized by module, see FEATURES.md . Install Developer preview: Load the source tree unpacked using the steps below. This is the current source-of-truth install path for contributors and early testers. Store packages: Chrome Web Store / Firefox Add-ons listings will be linked here once they are approved. Store packages omit preview-only dweb pieces and the preview/dev advanced automation path. Dweb preview (research package): GitHub Releases may include signed preview artifacts. If there is no release attached yet, use the source install path below. The preview package includes the decentralized web (dweb) layer: peer-to-peer dwapps between peerd instances. It's intended for contributors and early testers, since the dweb protocol is research-grade and subject to change. Most users want one of the two store packages above. The preview installs alongside the store package as a separate extension ("peerd preview") with its own isolated storage; move state between them explicitly via Settings → Export & import . Preview package install paths (Firefox is the smoother of the two): Firefox: click peerd-preview-firefox.xpi on the release page. It's AMO-signed, installs like any extension, and auto-updates. Chrome on macOS / Windows (recommended): load the zip unpacked. Chrome hard-disables off-store CRX installs on these platforms ("may have been added without your knowledge", enable toggle locked), and field testing showed even an ExtensionInstallAllowlist policy visible in chrome://policy does NOT unlock it on an unmanaged machine (Chrome wants MDM-grade management). So don't fight it: download peerd-preview-chrome.zip , unzip it, enable Developer mode at chrome://extensions , Load unpacked , and pick the unzipped folder. Caveats: no auto-update (download the new zip per release) and the extension ID is machine-specific, not the table's CRX ID. This is a Chrome platform restriction on all self-hosted extensions, not a peerd choice. Chrome on Linux (or any policy-managed Chrome): download peerd-preview-chrome.crx , enable Developer mode at chrome://extensions , and drag the file onto the page. Auto-update then follows the feed at peerd.ai/updates/ . Extension IDs (verify which package you're running): package id peerd (Chrome store) verify from the store listing or chrome://extensions after install peerd (Firefox store) peerd@peerd.ai peerd preview (Chrome) lpdkhfeldihoejbbfonnbekpjclkknoc (CRX installs only — an unpacked load gets a machine-specific ID) peerd preview (Firefox) peerd-preview@peerd.ai Getting started peerd has no build step : you load the extension/ folder straight into Chrome as it is on disk. You need a Chromium-based browser (Chrome, Edge, Brave, Arc, …) and a model to talk to: a key from Anthropic and/or OpenRouter , or a local Ollama (keyless, no bill, nothing leaves your machine). BYOK: any key lives encrypted in a local vault and is only ever sent to that provider. 1. Get the code git clone https://github.com/NotASithLord/peerd.git cd peerd 2. Load the extension in Chrome Open chrome://extensions . Turn on Developer mode (toggle, top-right). Click Load unpacked . Select the extension/ folder inside the repo, not the repo root. (The folder with manifest.json in it.) peerd now appears in your extensions list. Click the puzzle-piece icon in the toolbar and pin peerd so its icon is always visible. 3. Open peerd and set up the vault Click the peerd toolbar icon and the side panel opens. On first run you create a local vault: unlock with Touch ID / a passkey (recommended) or a recovery passphrase. Keys, chat history, and the audit log are all encrypted on this device; nothing leaves your machine except the calls to your model provider. 4. Add your API key(s) Open Settings (gear icon) → API keys . Paste a key for Anthropic ( sk-ant-… ) and/or OpenRouter ( sk-or-… ). You can set both at once, each stored independently. Choose a default under Default model for new chats , and switch the model per chat from the picker above the message box. 5. Chat Back in the chat, type a message. peerd can read and drive your open tabs, run shell commands in a sandboxed in-browser Linux VM, build small apps, search the web, and more. Turn on Confirm before actions in Settings if you want to approve each tab/automation step first (off by default). Updating after a code change. Hit the reload icon on the peerd card in chrome://extensions . The side panel, offscreen document, and any open VM/JS/App tabs reload with it. Firefox (temporary). about:debugging#/runtime/this-firefox → Load Temporary Add-on → pick extension/manifest.json . Re-load on each edit. Firefox parity is still being polished; Chrome is the primary target for now. Generated files. extension/manifest.json and extension/shared/channel-config.js are GENERATED (the checked-in copies are the dev defaults: preview channel, dweb on). Don't hand-edit them; change manifests/*.json or packaging/default-settings.mjs and run bun run gen:dev . CI fails if they drift. Why the permissions? peerd asks for broad host access ( <all_urls> , and debugger on the preview/dev channels) because driving arbitrary tabs and reading the page the agent is acting on is the whole point. Each permission, why it's needed, and what the store build strips is spelled out in docs/store/PERMISSION-JUSTIFICATIONS.md , and the trust boundaries (BYOK vault, egress allowlist, untrusted-content handling, no telemetry) in SECURITY.md . Project conventions (the short version) Plain vanilla JS, ES2024+. No TypeScript, no JSX, no bundler, no npm inside extension/ . ES modules only. Strict mode by default. Pure functions and reducers over classes. Classes only where lifecycle is real (vault, VM, ports). safeFetch / webFetch for all outbound HTTP; bare fetch is forbidden. Comments explain why , not what . The codebase is security-sensitive and is meant to be read carefully. The full version of these conventions and the architectural rationale lives in CLAUDE.md (orientation), ARCHITECTURE.md (module organization), and DESIGN.md (the full technical design record: vault crypto, dispatcher gates, prompt-injection defenses, the MV3 keepalive trick; long, historical, and worth searching before reopening a settled question). The five modules The five-letter wordmark is the architecture: each colored letter is one top-level module. Each module has its own README with how it works today, its public API, kno