
El primer harness de agentes de IA nativo del navegador. Una extensión de navegador que ejecuta un bucle de agente completo allí donde ya trabajas: controla tus pestañas, levanta entornos de computación en sandbox (notebooks JS, máquinas virtuales Linux WASM, aplicaciones del lado del cliente) y comparte lo que construye peer-to-peer. BYOK, sin backend, sin telemetría.
peerd es el primer runtime de agentes de propósito general construido directamente sobre primitivas del navegador: Workers, orígenes, sandboxing, OPFS, WASM/WASI, WebRTC, WebAuthn y WebExtensions. Se ejecuta completamente dentro de Chrome y Firefox, con tus pestañas, sesiones iniciadas, aplicaciones web y cómputo local.
Mientras que las plataformas de agentes intentan meter el navegador en el harness, peerd mete el harness en el navegador.
Para la inferencia real puedes elegir un proveedor de modelos alojado compatible, un modelo local mediante localhost, o probar el soporte preliminar para modelos WebGPU locales (también estamos vigilando WebNN).
No se requiere cuenta de peerd, navegador alojado ni conexión a un servidor de herramientas. Las compilaciones actuales no envían telemetría de producto a peerd.
registry.js, incluyendo adaptadores cloud BYOK
y opciones locales sin claves.Los agentes locales pueden acceder a todo tu ordenador. Los agentes remotos viven en el de alguien más. El navegador es la alternativa: capacidad local detrás de límites de seguridad endurecidos durante tres décadas.
peerd usa esos límites. El trabajo de página va a actores separados con solo las herramientas para esa pestaña o entorno. Las credenciales, reglas de red, confirmaciones y auditoría permanecen en la extensión. Su diseño de defensa en profundidad asume que el contenido no seguro eventualmente pasará un filtro.
peerd soporta Chromium y Firefox. Firefox ejecuta actores en workers dedicados y usa Notebooks visibles para el cómputo JavaScript. Las características que necesitan el host de documento fuera de pantalla de Chrome se eliminan de los controles de Firefox y las herramientas de modelo antes de su uso. Las compilaciones de vista previa de Firefox omiten dweb hasta que Firefox tenga un host de malla.
Las Apps y WebVMs se ejecutan en Chrome. Las Apps no tienen acceso de red ambiental. Los recursos remotos, fetches, WebRTC, formularios y navegación a documentos externos están bloqueados. Los enlaces HTTP y HTTPS externos requieren confirmación del usuario.
Las brechas concretas de capacidad del navegador, sus problemas ascendentes y las pruebas requeridas
para eliminar cada guarda se rastrean en
docs/BROWSER-COMPATIBILITY.md.
El código es la fuente de verdad para el comportamiento actual. Comienza con
CLAUDE.md, luego lee el módulo relevante bajo extension/.
peerd usa aislamiento del navegador, exposición estrecha de herramientas, puertas de política de service-worker y controles explícitos de egreso. El agente principal delega el trabajo de entorno a actores sin claves. En Chrome y Firefox, los bucles de agente no orquestadores se ejecutan en heaps de workers dedicados separados. Si el navegador no puede probar ese límite, la solicitud del actor no se ejecuta y no realiza ningún trabajo en su objetivo.
El comportamiento de red depende de la operación. Las llamadas de modelo, lecturas web, cargas de
activos de runtime, tráfico de sandbox y tráfico dweb de vista previa usan rutas y
políticas limitadas diferentes. Consulta SECURITY.md y el
modelo de amenazas para los límites actuales y
limitaciones conocidas.
chrome://extensions.extension/.Recarga la extensión desde chrome://extensions después de cambios en el código fuente.
Firefox necesita un paquete específico de Firefox. No cargues el manifiesto de desarrollo
de Chrome verificado. Usa una versión de Firefox igual o superior al mínimo declarado en
el parche de canal bajo manifests/. Ese mínimo sigue el soporte de scripting vinculado a documentos
usado por las herramientas del navegador.
bun run package -- --channel=preview --browser=firefox --no-sign
Abre about:debugging#/runtime/this-firefox, elige Load Temporary Add-on,
y selecciona artifacts/peerd-preview-firefox.xpi. Los add-ons temporales deben
cargarse de nuevo después de reiniciar Firefox. Las transformaciones de navegador y canal están definidas
por los scripts de empaquetado.
Consulta GitHub Releases para los artefactos actuales. Las compilaciones de tienda y vista previa difieren. Las compilaciones de tienda omiten el dweb. Las compilaciones de vista previa lo incluyen y pueden habilitar características de automatización adicionales. El código de empaquetado es la autoridad para cada navegador y canal.
Solo los secretos de la bóveda y los registros de seguridad protegidos están cubiertos por el límite de cifrado de la bóveda. Otro estado local de la extensión sigue las reglas de almacenamiento en la documentación de seguridad.
La extensión tiene cinco módulos principales. Cada módulo expone su API pública a través de
su index.js.
| Módulo | Rol |
|---|---|
peerd-provider | Adaptadores de modelo y formato de respuestas |
peerd-egress | Bóveda, política de red, denylist y auditoría |
peerd-engine | WebVM, Notebook, App y ejecución headless |
peerd-runtime | Bucle de agente, actores, herramientas, sesiones, memoria y permisos |
peerd-distributed | Red peer-to-peer y dwapps solo de vista previa |
El chasis de la extensión vive en background/, offscreen/, sidepanel/,
engine-tabs/, permissions/, shared/ y directorios de soporte relacionados.
La ubicación de hosts y la regla de worker en frío están documentadas en
docs/EXTENSION-HOSTS.md.
La extensión fuente es JavaScript vanilla con módulos ES y se ejecuta directamente
cuando se carga sin empaquetar. No hay bundler de desarrollo, transpilador, watcher ni
árbol de runtime generado. El empaquetado de lanzamiento usa Bun solo en su
copia de staging desechable para eliminar espacios en blanco/comentarios de los módulos creados en el
service-worker estático y los grafos en frío fuera de pantalla de Chrome. Preserva los límites de módulos,
nombres de enlaces, imports perezosos y cada byte vendido. Pasa --no-minify a
bun run package -- ... cuando un artefacto de diagnóstico legible sea útil.
bun install
bun run gen:dev
bun test ./tests
bun scripts/cdp/run-inbrowser-tests.mjs
bun run typecheck
bun run lint
bun run e2e:verify
bun run preflight
Hay tres superficies de prueba:
Junto a ellas, la suite de red team en tests/red-team/ impulsa
cada adversario del modelo de amenazas contra el código de defensa real y registra
si cada sonda hostil fue bloqueada. Su matriz es
docs/security/RED-TEAM-RESULTS.md.
Cada carril publica su propio recuento como insignia arriba. El JSON de insignias bajo
badges/ es generado por el trabajo de CI que ejecutó el carril y luego
se compara, por lo que un recuento en esta página siempre es evidencia de una ejecución que ocurrió
en lugar de un número que alguien escribió. Regenera uno con bun run gen:badge:functional, bun run gen:badge:red-team, bun run gen:badge:inbrowser, bun run gen:badge:gecko (necesita Firefox y
geckodriver), o bun run gen:badge:e2e, y confirma el resultado. bun run check:badges verifica que los endpoints estén bien formados sin lanzar un
navegador.
Para cambios de UI, ejecuta bun run e2e:verify, inspecciona
scripts/cdp/artifacts/result.json e inspecciona las capturas de pantalla generadas.
Los archivos generados no deben editarse a mano. En particular,
extension/manifest.json y extension/shared/channel-config.js provienen de las fuentes de manifiesto y empaquetado. CI los verifica por desviación.
Lee CONTRIBUTING.md antes de cambiar código.
CLAUDE.md: estructura del proyecto, convenciones y postura actualSECURITY.md: política de seguridad y reportedocs/security/THREAT-MODEL.md: límites de confianza y riesgos residualesdocs/security/LIFECYCLE-CONTRACT.md: comportamiento de interrupción y límites de recuperacióndocs/security/RED-TEAM-RESULTS.md: cobertura de red teamdocs/APP-ACTORS.md: actores App definidos por manifiesto, adaptadores semánticos en vivo y la UX de co-piloto en pestañadocs/DWAPP-BUNDLE.md: transporte dwapp comprimido, árboles de trabajo decodificados y activos binariosdocs/store/: empaquetado de tienda, permisos, privacidad y notas de revisoresscripts/cdp/states.mjs: estados E2E y visualesLa extensión distribuida no tiene dependencias de runtime npm. package.json declara
ninguna, y el empaquetado nunca resuelve una ruta node_modules en el
artefacto de staging, por lo que el árbol de herramientas de desarrollo no puede alcanzar un navegador instalado.
El código de runtime de terceros se vende bajo extension/vendor/ en su lugar. Su
fuente, versión y licencia viven en los archivos SOURCE.txt adyacentes, y cada
byte vendido está fijado por SHA-256 en
extension/vendor/vendor.lock.json, que
bun run check:vendor verifica en CI y preflight.
Dos posiciones más de cadena de suministro llevan sus propias insignias arriba, ambas regeneradas
por bun run gen:dev y verificadas por desviación en CI. Cada GitHub Action de terceros
se ejecuta en un SHA de commit completo, controlado por
check:actions: una etiqueta mayor es una ref mutable
que su publicador puede mover, lo que significaría código arbitrario en un trabajo que tiene este
checkout, y en el flujo de trabajo de lanzamiento, los secretos de firma. Las dependencias
recién resueltas también esperan una ventana de cuarentena antes de poder entrar en el lock,
establecida por minimumReleaseAge en bunfig.toml, junto con un
escaneo de malware en la instalación.
peerd está licenciado bajo la Apache License 2.0. Los componentes vendidos conservan sus propias licencias. CheerpX es un runtime propietario proporcionado por Leaning Technologies y no está cubierto por la licencia Apache de peerd.