{"_id":"@geohar/un-bien","_rev":"22-11e195c4084fb85ca392848ce0dd5b8c","name":"@geohar/un-bien","dist-tags":{"latest":"0.20.16"},"versions":{"0.7.0":{"name":"@geohar/un-bien","version":"0.7.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.7.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien":"dist/index.js","pi-supervisord":"dist/bin/supervisord.js"},"dist":{"shasum":"9ae225f326ae78ac7d64f75de1345ce2b970854f","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.7.0.tgz","fileCount":174,"integrity":"sha512-cDdn9VlgJu/J4ulHZ/NM38JHDN1GSHWUrG5hsJHCbuXBsnc0tq+GsveYE7cLDpIyZ0I1pzvPsMFHGzT1wvqjlw==","signatures":[{"sig":"MEUCIQDyj55oKBP9TNKix2ybOk/M6oqTGDRsWOUysw+awUF8OAIgQdIYkL49uuR5A42FQZBzPzmOLVpEq9gwuOuk8pSl/WY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1322930},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["@google/genai","esbuild","koffi","protobufjs"]},"type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"cb47f897d485c12ba21e466c2d8e5e197c173bfb","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"georgeharker","email":"george@georgeharker.com"},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"11.18.0","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.7.0_1788027480149_0.9522203888539047","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@geohar/un-bien","version":"0.8.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.8.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien":"dist/index.js","pi-supervisord":"dist/bin/supervisord.js"},"dist":{"shasum":"a4b789963ad8cc433a972df36b392173b541c776","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.8.0.tgz","fileCount":174,"integrity":"sha512-W6xRlC8nD4LgljwV+lc243Qwm9EXnm9IXNKcnWidCqYkBc3x5ywws8m4lU7ncEp+h+0jkqB84XzIbcnbZbNBUg==","signatures":[{"sig":"MEUCIB0Uq16sct5kpcYx9ONcLdIerE47Om5FcPzPx1CF+fRoAiEAnBJa/qGrRlQEu6P73r5k0kl7dWtohXtj+uF7I4kzpjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1345134},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["@google/genai","esbuild","koffi","protobufjs"]},"type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c2101f60abd205b33dd3027c6a1af1d821140dda","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.8.0_1788035028918_0.18718060512654056","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@geohar/un-bien","version":"0.9.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.9.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien":"dist/index.js"},"dist":{"shasum":"244ba603605dbbe717642f75ef0b10710648a754","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.9.0.tgz","fileCount":168,"integrity":"sha512-WCQsZNYCCyr4elx6wiy9UOxw2k+lI8Xues7vfNCemRpAnPXEL6gJ9OPeEQkR2BDfkWhcYnQ+eNoDviisaMOPPw==","signatures":[{"sig":"MEYCIQDz+lbMCU6QL8ggdVyRgrPO5Tak7eZ3FlYVVN4CRP/8PQIhAMNO39L4WBPhvj4kC1AGLknZU4BZHZkK4k83YsYtrhkf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1245177},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"58e6eee071f32f82cb5d235916ea432e9a1d43a8","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.9.0_1788156686764_0.23657919353165746","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@geohar/un-bien","version":"0.14.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.14.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien":"dist/index.js"},"dist":{"shasum":"95aea5af075f7d73e9d5e50c268160fcbf49049d","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.14.0.tgz","fileCount":213,"integrity":"sha512-w5GE2yBR1kifXf7qV9J1ZP5od0guDm8lVoxreGiaMAn+tmhC5inhx0q4p2K0GMkT2q8qeNE0R+6Pr5P2EBN61w==","signatures":[{"sig":"MEQCIDcTPKJgd+Nd0w8h6Y/xzlZNJelD9Ofy3QHVqcds4A6LAiBudNuTDGGjfX2d0whNEZeg2gPeOKNGXyKHGoKX8IybiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1416618},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"b73ff38976052ee02da62431ede3e213ab04a669","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.14.0_1788640280857_0.9223367606158916","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@geohar/un-bien","version":"0.16.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.16.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"3b7b620abab855916cac798e85201fc6b3118ec9","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.16.0.tgz","fileCount":216,"integrity":"sha512-PIu2Ad4XbA5zOa+dsdbafoeychiUSvS5VR7Na0KMi7srysLYTO0znDtFcs2h1H2aP9hQKfaylQcLG2NY7KV2yQ==","signatures":[{"sig":"MEYCIQCkC3CpTwdvuWIf2pID0IlnGudwycXPsZp+ujuGZMS9wgIhAILgVY25H+iM3T4oO3xFuAJHYAvzZ5yClnfJ2t1qG5Ri","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1429699},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"307a73d6b1a8c2c8692d372c80fd2746ffb90f69","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.16.0_1788899565593_0.7433676785332355","host":"s3://npm-registry-packages-npm-production"}},"0.18.2":{"name":"@geohar/un-bien","version":"0.18.2","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.18.2","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"eaf41883c338bb2ac086ba99596d5508c868488b","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.18.2.tgz","fileCount":219,"integrity":"sha512-TcGuFzLfvGe/ujYXyeNEXc8WSP1ANSIuSu1jZ1XhGCRWYBT9bDMplbmjXYJngFJ/B/JflhYStLk3JR3tUpc7ww==","signatures":[{"sig":"MEUCIQDwlyBq3YJDqUiZgS2GgYMxcvAqIbtF/I3aNISHXrCNMgIgJbE85tioWFdJMeTBvfGeOqRJg5LB53u2NWqVTJgLlKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGYN+Q42qUSHdDTwC4WL75TIDcKfN95HUiiLGMmSRCK/AiBS54q/Syk1Nv89Zgb/UCHJg1u8Y4a7bYZOSpgpr+QpJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.18.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1456548},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"5414980c1c73fb17b5fb47a42e879cb7c8d2fe3f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.18.2_1789170248110_0.45160269952791054","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@geohar/un-bien","version":"0.19.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.19.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"ceca76382e47eb7d6b033171cb16ac8a91741cb7","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.19.0.tgz","fileCount":219,"integrity":"sha512-cO8XY/0dewKZkA1ToaHrNtHOgf2Aj4iil7rQWEfJQxTdUa5byirZMHycXcWxRf2NSwFOy7mTpTJCG1kV3Oq9Kg==","signatures":[{"sig":"MEQCIF5OiHyAGrWvc+tl3WR+7ulAIQWNdI/f70BV8Rw5+ZWBAiBc4NHoSBPnhLV6u7R6bImZG0uEOOD0XCEHHZxvl6Qagw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCfLjFQBAdGpGE4PF5pXXoIcYZpQmfeMnlRvqzpG7eCjgIhALiMLgXY70ZtypwyqZ9wKcVAWSAI4k0HOazxWTls1dWO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1460177},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"e6a3e0fec157e5ae95de63123d92472da8b092c6","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.19.0_1789313088313_0.47602644464557664","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@geohar/un-bien","version":"0.20.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.0","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"ed694ac154c92b0af6b5a87e18e83a4e3c134db5","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.0.tgz","fileCount":227,"integrity":"sha512-CAqHOCIgzM5aRF3Xt9G5M+AdbCIfn9H9tJzFoX1MbkGgD2DjdXtobc4NT5uQta9pKYveK8R4DEf78Z5f4GpgcQ==","signatures":[{"sig":"MEYCIQCspPffxYTFI06sVj4iyFAew7dL5HEOI3uaeNocJfOqWQIhANGSZev9aqsKzZldk5iiSRC8U9VvtS0o5g6pTH7mJrPq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH2Trg9mQ+kj9br9dgsLq8zPbCnZCSKVcXfktKXif5tkAiEAg1BTdt6rCdqK+mYVM4IzKBGyXH/jjiUMuCbHRiczLUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1496035},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"e7913989a4d1000286b5a965ce72f37bee8d7664","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.0_1789346091703_0.41927820309266095","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"@geohar/un-bien","version":"0.20.1","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.1","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"fc072c5ea74509afe7e1085682c99f0c2a85c566","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.1.tgz","fileCount":227,"integrity":"sha512-zILFW9rGVcRb4ZCliJbKFfTHuJYfP4MeEn7YHnvUuPfkwXONonxS5dfs+sTAwhvPgDieTqkAdoccLja2qLVqmQ==","signatures":[{"sig":"MEUCIDjJ6FVJsYqwdr9cilRss5WWhYXqvAIJqdmFSZDpjWCjAiEAwScBnXn848y6q8f42mkUS4N75ITTEU3LY0pJI/z6vww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC1XWYIjB8LDTpHt2NeIssrtfoFPNMehpFLIuVbZbsgBgIhAOlZdsabMBt56p4o3JlvpI1CcI4gcNohCDLfIqF/+VpE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1498028},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"1d57b8955360cc2d80441f0c105ebc2e52e483d7","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.1_1789347030740_0.99619213110242","host":"s3://npm-registry-packages-npm-production"}},"0.20.2":{"name":"@geohar/un-bien","version":"0.20.2","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.2","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"d0f645260fd1bd6ee64aa5aca53c23b417a77521","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.2.tgz","fileCount":227,"integrity":"sha512-o7NUQfhhmlimKrPp/O4XZiOcqMmE4I4SBo/c0N85Cc1JUAfjMZPoKmEOCOR9Y64pIvJKp/nY2Fhn9CJ2w4pcvQ==","signatures":[{"sig":"MEQCIA5EmX0twpGypyVHt1Ct2IHifVG3YO6WWr6qxq5d9t/CAiBD5LkqHJQZragyHZmRF3+Q6vzxvF4Fb2GW7AXFZNycrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDYVuIdPPwtBhm+NpMgvHUleb/QpVznErLDGwgRr3SszQIgWXoNmFh28kYwTjiXW8u0eLb1vEgyJFxl+kTELVLcrJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1505115},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"4de62b1c641aa7f973fe08adaf6ca0a7bb3f14ca","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.2_1789351762030_0.45556692433331736","host":"s3://npm-registry-packages-npm-production"}},"0.20.3":{"name":"@geohar/un-bien","version":"0.20.3","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.3","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"e7082db0739d902d0bc7d1d5add0bb4acc27fa59","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.3.tgz","fileCount":227,"integrity":"sha512-kifCI8iRq4xRM5hnTEDpqztPX9GO/U1wmGTbBbA0iQtqg24k1f0htVbR91yjpZIR37HhCINFPfTruL2AMPQ4Vw==","signatures":[{"sig":"MEYCIQDemexX6kapRMZH2AiBL+VJdWEHuSzwE2FmvzxdvYFSsAIhANwNgzsjk0Bkq+H1lSJ2XSttvVyJOBYDpYOnX/TDE+Ky","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCaXY4aoVC1XoNDqhzQj4/xyfkQxK5acWIhJ0S1Z/WK7AIgDhbrls6lyd6+jH/pvno+03jHodgKZWdgSoPgMHz0mHE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1505523},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"bbee3b4c4b4b2fc3917c179021525e9e95add36b","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.3_1789501667302_0.6949074258657757","host":"s3://npm-registry-packages-npm-production"}},"0.20.4":{"name":"@geohar/un-bien","version":"0.20.4","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.4","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"aeac54899eefe2a6350680aa365e5f977db7c59f","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.4.tgz","fileCount":227,"integrity":"sha512-tRx1G7W2Sws5Q5LjcatD1QRUiKaHlBt/iLtsGdvltjs4gxSD6/Tc1iX6giJBnqn94pRzzJwNzBb0/eMFrztv1Q==","signatures":[{"sig":"MEUCIQDQ/QMbhR7bcBUPgFpRi9zUvn9PHhV1s7JZGTKFXDRpOgIgbj6wboMV4kaZnExjiS8MvbQdhZzHH0eCJIWGoG777YE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIADv1xBwX8eUiD27XxfW4pRxiiDg7+nPT/3sMahrNsTHAiB/BgCNVFLykHrq36uKZcU3ay0dwtZtPkA+qI98ih8mzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1527322},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"aca3f21f05dd9bc824631938163a4c87436bbf77","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.4_1789668757622_0.7764404570899537","host":"s3://npm-registry-packages-npm-production"}},"0.20.6":{"name":"@geohar/un-bien","version":"0.20.6","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.6","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"79367c7e6bb68144a99320139e02ad995a51f6f8","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.6.tgz","fileCount":227,"integrity":"sha512-AaUStXQaSoA6lPEamS92Jn9aSszcv7X21QisxDkG46hN9LszV8uJVK6pytyC5FVbi4bQtB5T9YfWvu9DCIjVfQ==","signatures":[{"sig":"MEYCIQCtNkj2L3Msvop3NHRNzGZoU5cG4JrQ9jTLT7QtHQR0ZgIhANB5olD1RyvH0mjA0GiP9bz/7sJv0xCq8bwaCKXwDugs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCFofvaaaa18rHdjZpJhyHq1cr9cdZc8aRBPe9JdPDZ1AIhAPul5yvl7ZDkqiE/10dRKeb/lOwFYY8teSW9fKhh6SCO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1541523},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"e1d0febb2dcd1a759a070a6f22415567282bf3af","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.6_1789763051255_0.3631007775056958","host":"s3://npm-registry-packages-npm-production"}},"0.20.7":{"name":"@geohar/un-bien","version":"0.20.7","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.7","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"d9ab709eb50bf22fe161c23540c04d1285b747b5","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.7.tgz","fileCount":227,"integrity":"sha512-Y0CItdVIOsa65Z2u/tJdRxOrzIsRN1kA1rskhBXUhKcStesdx+OzwSW4NQck3ehqrz64EBmvbhYHniNtxjTfnA==","signatures":[{"sig":"MEQCIBARC321O6z1uT30QQnnodVdN23Jc9JKtF7EbkT1o3SmAiAQjyGnPxkkrPnNMo57nW7Wnadfes9SsxxRHZTi4CI+Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDLRASf7xYshj09rEawZD6GevMzeCZnVTzXuciG1goPIgIgJAJlAtufwfbwMfOmaRTxE6FUrwBr2C+LQsoKatnDnqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1548193},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"d520b1ba76e251a6bba49fca7a978c952621d7e3","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.7_1789793768526_0.8012860574547409","host":"s3://npm-registry-packages-npm-production"}},"0.20.8":{"name":"@geohar/un-bien","version":"0.20.8","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.8","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"c206c74784f456be5e3bc27b509e0e39f46e593b","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.8.tgz","fileCount":230,"integrity":"sha512-E5THs2NJ0QYd+QC7IPrS5MSaiWmalAFozN83GKgmdxECFw5p3AT2976fF/6TflOclU4q6sbMUoYbwXwJJ3hPyA==","signatures":[{"sig":"MEUCICodROXjJgqspVURR/KhBcLfT8nYRqI8k0WMA6n2hzaEAiEArDut3w+Wqw1fWo4nYFxsMNfDHlb38HrJUWaIUqPnm44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAlXRYJjOfpdt7PS073hI5CC4VMCglQ2+L9QK40jLMAEAiB0MM7T3QgZY0zBQyWgRZHPHqB41vK0FclMEEM/fPryag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1551851},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"47af0bd994c9700c1685e79cf734342f61f5541f","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.8_1789930591883_0.7223997728577924","host":"s3://npm-registry-packages-npm-production"}},"0.20.9":{"name":"@geohar/un-bien","version":"0.20.9","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.9","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://cdn.jsdelivr.net/npm/@geohar/un-bien/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"e4c06c89008d0d49e32932cc8209af1953d42309","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.9.tgz","fileCount":231,"integrity":"sha512-g3ZbsRWR57xyKqGjj5uC6k+1NUoxkpu/RUArvaKlX3kN5M/EPh8wmxM+Pdy/HNUSd6+dRKYZsrTHrDpX9IY1jQ==","signatures":[{"sig":"MEQCICh6EYZ7RZc7WkINp9dVMB/iwbnHSxuXvQRjNzvJl/8PAiB5vUlMs3GO0/Gxz8iDAuAYlXnK3R2oGsALSOVdWCAJyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDefjjx88dxCsRGJ2VQfYRuG1xL5LyNSEAH43Yc8OL4mgIgPC+EuMoNUtNM3dyqq4q/rr7QuxVK5x8iWjBmhHSvxnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1645981},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"4ce98fc385c01a2d8181a5ceeec233288b4213ac","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.9_1789932784882_0.6503125396693199","host":"s3://npm-registry-packages-npm-production"}},"0.20.10":{"name":"@geohar/un-bien","version":"0.20.10","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.10","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"80542dbfa93774b59b29dde8a964639173f00e06","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.10.tgz","fileCount":231,"integrity":"sha512-5a3JN2OnzFNZd7EixuXU0risB+2iB6L5JM8jp6WFscSaJD98Nujb6kl9fxDw6vrX6bX3iJTP6j8ezpOTT8v7wg==","signatures":[{"sig":"MEYCIQDsjM2A+IFZ9gFBrJPGvIkVNfnuFoAN1RGplGA+omD64wIhAKZf7t5PZU0ID5MOd5w6gXvm4FgxI8dkP8JIFoh85UyW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFSm2JIOsiOu8KhV5NCgDWOMR+0U4ph+ZWa8x6IjAB7fAiBc7mg/tycLKaxAUvmi2UpiyytPz2gztDKiRhHwB2PNfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1646910},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"fa96b8fc16f3b395a99171c53555588a59f278f7","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.10_1790023472989_0.6760250571373756","host":"s3://npm-registry-packages-npm-production"}},"0.20.11":{"name":"@geohar/un-bien","version":"0.20.11","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.11","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"42f81d325f99a9e533003062b814bd4c40ea67be","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.11.tgz","fileCount":231,"integrity":"sha512-qOZyloe8s4Np/7JFTJg77/3wKf1xiZBkDauX6P0H5MnvEatChGBELI+14BGiLoWYQfsXmxKVkm8f0Tfg7GP6BQ==","signatures":[{"sig":"MEUCIQDeGxmwka1/e/JUQtFNMdFxUd2Gu85H4JUCVOCkZgT/IAIgC8EOGbZvWys8qrnoc4QtC1aWMVJ5xk75gUGDCBTg9xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID5UDW/dyCgTji18itUdwRqqBWV4gr5waB7r2G5RL81JAiAetfrUAtMCbVRK1MyEPjh8EjGpaNtT2RDfjRxWxPsZmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1648253},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"a4a6d89bc9c4e3c34a5b057954ca298de7f7d0f5","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.11_1790025813490_0.31375296747821557","host":"s3://npm-registry-packages-npm-production"}},"0.20.13":{"name":"@geohar/un-bien","version":"0.20.13","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.13","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"513e32da2ef4db60cb01776de075c69d6fecb8d9","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.13.tgz","fileCount":231,"integrity":"sha512-0BK/86bP+XPceTubaEQrsKKLGH4c4WQBHefDe6roLZnbt3vbGIAPYZ4d39f00Ucxrn/GLJPwJQ0DI7fVfVdaDw==","signatures":[{"sig":"MEQCIGaNN3lnmU8YzCd7VtLAGITTwD3sqgC4rr8wYqs7CXT7AiAdGMJ8qNjaV13mkAJjEtyp2JIi/YMQyJK5dqWMwDUYQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCs724jpyHCgtBaOUbK6NP4LCD0XYsLHP1bhrEJFm8hPgIgGxjK9Bpe2odc9uK8DTywghEuTkrTWvqMrs7FUOGqfBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1653138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"5c3dff18c4a26baff7801a3102c5bee81aa96e3a","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.0.2","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.13_1790050474916_0.714649440312914","host":"s3://npm-registry-packages-npm-production"}},"0.20.14":{"name":"@geohar/un-bien","version":"0.20.14","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.14","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"3072e767aa66b6a1d166b25e0e95ae47927b548b","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.14.tgz","fileCount":231,"integrity":"sha512-3skItMBcHzQGxsARkj4brVJryDuiHqDl45ixhnYTGMs58f5oZqwsE8+hJaJ89AbVGQYlOgwag3252u6t7UiJ3Q==","signatures":[{"sig":"MEUCIQC1O+XUhrJty5c/vCiIULPt38b82E84AOKakNznfGuI0wIgQOJmbQg+K1xGqmft42LWCPtQ5a87UFtx2HFoOZjF2aw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB9LBhmGSdc3vwUPQOQ6emTjHC5y5APitzhG5jAnTex1AiEAvtmyWqXox2nFb3h86V1/7862ZeEXmrvDsRG/tq7v7a4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1654569},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"7060f385db20904ceb80f908cdbdf2cb2efd1bc4","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.1.0","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.14_1790267793303_0.3268608816932692","host":"s3://npm-registry-packages-npm-production"}},"0.20.15":{"name":"@geohar/un-bien","version":"0.20.15","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","_id":"@geohar/un-bien@0.20.15","maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"homepage":"https://docs.georgeharker.com/un-bien","bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"bin":{"unbien-admin":"dist/index.js"},"dist":{"shasum":"17b72d283dd3341fc308ab69b5c2594b99008575","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.15.tgz","fileCount":231,"integrity":"sha512-aNNynTOy8GP5oDnpkHvBfsWNEyRcRwGYOVcnL/XWh+chZqYLwojKFWf5xNBUXbzVXP707gHumTTsYrwed6jnpA==","signatures":[{"sig":"MEQCIHlC3FZLsv2mbSDZujnETX0HPh2TEGOtfdp4mwFDFICTAiBRQN8idyUSZvhHyMYiteNo90C38nqWWv4pe0n0ozVi9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCK3jKGgnJMNw6CQrD5EiyYIYfrWxjmEvn0sq+tT45k6QIgEuh1Z32thnUJdgGlmjmPmWf0x5f+GxMNZy5C9L+pjmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1655818},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"0999ddc555e7601e25f1f797a238f537ef9043f1","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.1.0","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"tmp":"tmp/un-bien_0.20.15_1790274718352_0.33598315889376984","host":"s3://npm-registry-packages-npm-production"}},"0.20.16":{"pi":{"image":"https://raw.githubusercontent.com/georgeharker/un-bien/main/extension/assets/preview.png","extensions":["./dist"]},"_id":"@geohar/un-bien@0.20.16","bin":{"unbien-admin":"dist/index.js"},"bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"dist":{"shasum":"eec0cce6e0286d7dddd5ebb4193f00d7b7ca91ba","tarball":"https://registry.npmjs.org/@geohar/un-bien/-/un-bien-0.20.16.tgz","fileCount":231,"integrity":"sha512-YlJNfPMAPUft174JS+oZh7z/KDC3xGX7qGT6r0MQqlytfrEyQWo83TH80U5De2ZmN3wFcLPBGwH0hdtOnBfNxw==","signatures":[{"sig":"MEYCIQCfT4aE+BWUXHexDC05+N1iHf2UYzdP79eGio6Twlw9rAIhAOD3QCBbIPJtJO5H0kIFN8sg/IoXNXZOQe5Vx55cUIb5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAzcFnmvQisz6hccP6AUhPVRfXM/yen5TEXydEVd4daEAiBrdh95CH3dOL+yNnl8vw2P7MVBtmWlTW+0s3n27JfqNQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@geohar%2fun-bien@0.20.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1656423},"main":"dist/index.js","name":"@geohar/un-bien","type":"module","types":"dist/index.d.ts","author":{"name":"George Harker","email":"georgeharker@gmail.com"},"engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./launcher":{"types":"./dist/bin/launcher.d.ts","default":"./dist/bin/launcher.js"},"./package.json":"./package.json"},"gitHead":"d346029b8692992684ddbdef47e52e5ead59a15e","license":"MIT","scripts":{"dev":"tsx src/index.ts","test":"vitest run","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"version":"0.20.16","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd54c430-34af-42a1-b558-3f3cd2249f0d"}},"homepage":"https://docs.georgeharker.com/un-bien","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"_npmVersion":"12.1.0","description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","directories":{},"maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"_nodeVersion":"24.21.0","contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"dependencies":{"ws":"^8.21.0","zod":"^4.4.3","croner":"^10.0.1","typebox":"^1.1.38","@noble/ed25519":"^3.1.0","qrcode-terminal":"^0.12.0","@napi-rs/keyring":"^1.3.0","@earendil-works/pi-tui":"^0.79.10","@modelcontextprotocol/sdk":"^1.29.0","@earendil-works/pi-coding-agent":">=0.84.3"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","vite":"^8.0.16","vitest":"^4.1.6","@types/ws":"^8.18.1","typescript":"^6.0.3","@types/node":"^25.8.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/un-bien_0.20.16_1790353687550_0.96791068536436"}}},"time":{"created":"2026-08-29T18:18:00.027Z","modified":"2026-09-25T16:28:07.995Z","0.7.0":"2026-08-29T18:18:00.297Z","0.8.0":"2026-08-29T20:23:49.101Z","0.9.0":"2026-08-31T06:11:26.978Z","0.14.0":"2026-09-05T20:31:21.014Z","0.16.0":"2026-09-08T20:32:45.757Z","0.18.2":"2026-09-11T23:44:08.259Z","0.19.0":"2026-09-13T15:24:48.405Z","0.20.0":"2026-09-14T00:34:51.801Z","0.20.1":"2026-09-14T00:50:30.830Z","0.20.2":"2026-09-14T02:09:22.179Z","0.20.3":"2026-09-15T19:47:47.401Z","0.20.4":"2026-09-17T18:12:37.700Z","0.20.6":"2026-09-18T20:24:11.370Z","0.20.7":"2026-09-19T04:56:08.614Z","0.20.8":"2026-09-20T18:56:31.992Z","0.20.9":"2026-09-20T19:33:04.991Z","0.20.10":"2026-09-21T20:44:33.108Z","0.20.11":"2026-09-21T21:23:33.590Z","0.20.13":"2026-09-22T04:14:35.016Z","0.20.14":"2026-09-24T16:36:33.389Z","0.20.15":"2026-09-24T18:31:58.445Z","0.20.16":"2026-09-25T16:28:07.654Z"},"bugs":{"url":"https://github.com/georgeharker/un-bien/issues"},"author":{"name":"George Harker","email":"georgeharker@gmail.com"},"license":"MIT","homepage":"https://docs.georgeharker.com/un-bien","keywords":["pi","pi-package","pi-extension","pi-coding-agent","remote-control","mobile","coding-agent","agent-mesh","agent-network","uds","broker","qr-pairing","websocket"],"repository":{"url":"git+https://github.com/georgeharker/un-bien.git","type":"git","directory":"extension"},"description":"Mobile remote control and local agent mesh for the Pi coding agent. Pair your phone via QR over a relay, watch tool calls in real time, run multi-Pi sessions over a local Unix Domain Socket broker, and let agents talk to each other through structured requ","contributors":[{"url":"remote-pi, the origin project: https://github.com/jacobaraujo7/remote_pi","name":"Jacob Moura","email":"jacobmoura7@gmail.com"}],"maintainers":[{"name":"georgeharker","email":"george@georgeharker.com"}],"readme":"> **Derived from [remote-pi](https://github.com/jacobaraujo7/remote_pi)** by Jacob\n> Moura, used under the MIT License (preserved in [`LICENSE`](LICENSE)). This tree\n> is part of the [Un Bien](../README.md) monorepo.\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/georgeharker/un-bien/main/app/icons/un-bien-macos-1024.png\" width=\"160\" alt=\"Un Bien logo\" />\n</p>\n\n<h1 align=\"center\">Un Bien</h1>\n\n> Extend the [Pi coding agent](https://github.com/earendil-works/pi) with two\n> superpowers: **remote-control Pi from your phone** (native iOS/macOS app over a\n> relay you host), and a **local agent mesh** where several Pi sessions talk to\n> each other.\n\n`/unbien` is a single slash command that wires both at once. Run it; the first\ntime it asks a couple of questions and you are done.\n\n## Protocol & Security\n\nFor wire format, identity model, ACK protocol, cross-PC routing, mesh\nmembership, and the trust model (what the relay sees and doesn't see),\nread [`rpc-envelope`](../docs/rpc-envelope.md) at the repo root. It is the canonical\ndocument — this README only covers user-facing setup.\n\n---\n\n## Quick start\n\nInstall the extension (one-time):\n\n```bash\npi install npm:@geohar/un-bien\n```\n\nThen in any Pi terminal:\n\n```text\n/unbien\n```\n\nThe first run shows a short interactive wizard (agent name, default session,\nwhether to use the relay on this terminal). On every following run, `/unbien`\njoins the local agent session and starts the relay automatically — no extra\ntyping.\n\n> **You must configure a relay before the mobile app can connect.** Un Bien ships\n> pointing at **nobody's** infrastructure — there is no built-in default relay.\n> Self-host one (see [The relay](#the-relay)) and point the extension at it with\n> `/unbien set-relay <url>`.\n\n### Try the agent network in 30 seconds\n\nOpen **two** Pi terminals in the same directory and run `/unbien` in each.\nBoth join the same session. Now just talk to the LLM — it has the tools.\n\nIn terminal A (say it ended up named `agent-A`):\n\n```text\nWho else is connected in our agent session? List them.\n```\n\nThe LLM calls `list_peers` and reports the complete routing addresses it sees.\n\nThen, still in terminal A:\n\n```text\nSend a ping to agent-B using its listed address and ask it to reply later.\n```\n\nPi calls `agent_send({ to: \"<exact address from list_peers>\", body: {\ntype: \"ping\" } })`. For unicast, the call waits only for the broker's delivery\nACK. Terminal B receives the message as a user-facing turn and can answer later\nwith `agent_send`, setting `re` to the ping's message id; that reply arrives in\nterminal A's inbox or a later turn. It does not block terminal A waiting for\nagent-B's content reply.\n\nCopy the complete address exactly as listed. Do not build, parse, decode, or\nnormalize it.\n\n---\n\n## What it does\n\nUn Bien adds two independent layers on top of Pi. You can use either, or both:\n\n### 1) Agent network (local broker, optional cross-PC relay)\n\nSeveral Pi instances running side-by-side in different terminals can discover\neach other and exchange messages. Each instance is a peer in a named\n_session_. The LLM uses:\n\n- `list_peers` — discover current peer routing addresses\n- `agent_send` — unicast waits for the broker delivery ACK; broadcast is\n  fire-and-forget\n\nThe legacy Pi-only `agent_request` tool is deprecated because it blocks while\nwaiting for another agent's content reply. Use `agent_send`, continue the\ncurrent turn, and receive any later reply through the inbox/turn flow with\n`re` correlating it to the original message id.\n\nPeers on the same machine talk over a Unix domain socket at\n`~/.local/state/un-bien/sessions/<session-name>/broker.sock`. When sibling PCs are paired,\na leader-capable Extension or MCP participant bridges the opaque cross-PC\naddresses over the relay; local-only use stays on UDS when relay access is off.\nUseful for splitting work across roles (`backend`, `frontend`, `tests`,\n`orchestrator`, …) and letting them coordinate.\n\nThe first agent to enter a session becomes the _leader_ (hosts the broker);\nthe rest are _followers_. If the leader exits, a follower automatically takes\nover — the failover is invisible to the LLMs.\n\n### 2) Mobile app (over the relay)\n\nThe companion native iOS/macOS app lets you **attach to a running Pi session — or\nlaunch a new one** — and drive it from your phone: send prompts, read responses,\nanswer Pi's interactive prompts, and switch models. The phone and the Pi process\nfind each other through a **relay**: a small WebSocket server that ferries\nmessages between them. Pairing is one-time and per device, via QR code.\n\nCommunication uses WebSocket over TLS to the relay. Fields such as `ct` are\nwire containers, not a systemwide end-to-end confidentiality guarantee: current\nPi-forward, cross-PC, app, and control envelopes visible to the relay are not\nfully opaque or E2E encrypted. A relay operator can see routed plaintext\nprotocol content and metadata; see [`rpc-envelope`](../docs/rpc-envelope.md) for the exact\ntrust boundaries. **Host the relay yourself** to keep that operator role in your\nown hands.\n\n---\n\n## Mobile app actions\n\nBeyond the chat, the app surfaces a small set of typed actions you can run\non the paired Pi session. Tap the ⚙ button next to the message input (visible\nwhen the input is empty) to open the Quick Actions sheet:\n\n| Action              | What it does                                                                                                                                 |\n| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Compact context** | Runs `ctx.compact()` — same as `/compact` in the TUI.                                                                                        |\n| **New session**     | Runs `ctx.newSession()` — equivalent to `/new`, asks for confirmation first.                                                                 |\n| **Model**           | Opens a model picker fed by your authenticated providers (same source the TUI uses) and switches via `pi.setModel(model)`.                   |\n| **Thinking**        | Segmented control with the 6 SDK levels (`off` · `minimal` · `low` · `medium` · `high` · `xhigh`). Changes via `pi.setThinkingLevel(level)`. |\n\nEach action gets a structured `action_ok` / `action_error` reply so the app\ncan show a SnackBar on failure. Visible side-effects (chat output, model\nchange broadcasts, compaction notice) still flow through the normal chat\nchannels. The wire schema is documented in [`rpc-envelope`](../docs/rpc-envelope.md)\nunder \"App actions\".\n\nIt is **not** a generic slash-command picker. The Pi SDK does not expose\nprogrammatic invocation for most builtins (those live in the TUI's\ninteractive loop), so the app exposes only the actions that have a clean\nSDK call.\n\n### Images\n\nUn Bien **displays images produced during a session** — when a tool or the agent\nemits an image, the extension surfaces it to the app as a preview (customType\n`un-bien:received-image`), capped at 10 MB.\n\nOn the inbound side, the wire and extension also support **image ingest**: a\n`user_message` may carry an optional `images` field (`{ data: <base64>, mime }`),\nwhich the extension turns into the SDK's multimodal content (an `ImageContent`\nfollowed by the caption `TextContent`) and feeds to `sendUserMessage(content)`.\nThe mobile app does **not** yet expose an attach control, so this path is\navailable to clients but not surfaced in the app today.\n\nWhether a model accepts images is surfaced as a `vision` flag on each\n`WireModel` (derived from the SDK's `Model.input` including `\"image\"`).\n\nThe **relay is unchanged** — an image travels inside the same application\nmessage container as the text, so there's no binary channel (large files are a\nfuture track). Base64 or a field named `ct` is not an E2E confidentiality\nboundary; the current Relay visibility follows the trust model above. Text-only\nmessages are unaffected.\n\n---\n\n## Install\n\nRequirements: Node 20+, Pi (the host coding agent).\n\n```bash\npi install npm:@geohar/un-bien\n```\n\nThe extension self-registers the `/unbien` slash command and deploys an\nagent skill that teaches the LLM how to use `list_peers`, `agent_send`, and the\nevent-driven inbox/reply flow.\n\nTo verify:\n\n```text\n/unbien config\n```\n\nIt should print the effective relay URL and where it came from\n(`env` / `config` / `unset`).\n\n---\n\n## Using `/unbien`\n\nThe bare command is the everyday entry point:\n\n```text\n/unbien\n```\n\nBehavior depends on whether there's a local config for this directory:\n\n| State                                    | What happens                                                                             |\n| ---------------------------------------- | ---------------------------------------------------------------------------------------- |\n| First run (no `.pi/un-bien/config.json`) | Interactive wizard → saves config → joins agent session → starts relay (if you opted in) |\n| Returning user, auto-start enabled       | Joins agent session + starts relay automatically, then prints status                     |\n| Returning user, auto-start disabled      | Prints status only; join/relay must be run manually                                      |\n\nThe wizard asks three questions:\n\n1. **Agent name** — the presentation leaf name for this agent. Senders still\n   copy the complete opaque address returned by `list_peers`; they never build\n   an address from this name. Defaults to the directory name.\n2. **Default session** — the name of the agent-network room for this\n   directory. Multiple terminals in the same directory join the same session.\n3. **Use the relay on this terminal?** — `Yes` if you want `/unbien` to also\n   connect to the relay so the mobile app (and paired PCs) can reach this Pi.\n   `No` for local-only use (agent network without mobile access).\n\nRe-run the wizard later with `/unbien setup`.\n\n---\n\n## Pairing a mobile device\n\nOnce the relay is up (`/unbien relay status` shows `started` or `paired`):\n\n```text\n/unbien pair\n```\n\nA QR code is printed in the terminal. Scan it with the Un Bien mobile app.\nPairing is **per machine** — once a device is paired, every Pi process on\nthis machine accepts it (it lives in `~/.local/state/un-bien/peers.json`).\n\nTo list paired devices:\n\n```text\n/unbien devices\n```\n\nTo remove one:\n\n```text\n/unbien revoke <shortid>\n```\n\nThe shortid is the first 8 chars shown by `devices`.\n\n---\n\n## The relay\n\nThe relay is the network boundary. TLS protects transit, but the Relay can see\nrouted plaintext protocol content and metadata; **use a relay you trust or\nself-host**. There is no systemwide or PC-mesh E2E guarantee. For Pi-to-Pi\nforwarding, the Relay currently permits a route when any correctly signed Owner\nblob lists both canonical Pi keys. That does not prove the Owner paired with or\ncontrols either Pi.\n\n**Un Bien ships with no default relay** — `/unbien config` reports `unset` until\nyou configure one, and the extension refuses to connect until you do.\n\n### Self-host the relay\n\nRun the relay yourself and put it behind a VPN like\n[Tailscale](https://tailscale.com), [WireGuard](https://www.wireguard.com),\nor your own VPC. Because the relay's network-level protection is just TLS +\nkeypair authentication, layering a VPN on top means **only your devices** can\neven reach the WebSocket port — defense in depth.\n\nBuild and run from the `relay/` crate in this monorepo (see the\n[relay README](../relay/README.md) for environment variables and reverse-proxy\nguidance):\n\n```bash\n# From the monorepo root:\ndocker build -t un-bien-relay ./relay\ndocker run -d \\\n  --name un-bien-relay \\\n  -p 3000:3000 \\\n  -v un-bien-data:/data \\\n  --restart unless-stopped \\\n  un-bien-relay\n```\n\nBind the container to your VPN interface, terminate TLS in a reverse proxy,\nand point both your Pi and your phone at the resulting `https://…` URL.\n\n### Pointing Pi at your own relay\n\nOnce your relay is reachable, tell the extension:\n\n```text\n/unbien relay url https://relay.yourdomain.tld\n```\n\nThe URL **must** be `http://` or `https://` — `ws://` / `wss://` are\nrejected at validation. The extension converts to WebSocket internally when\nit opens the connection. Same canonical form for the mobile app and any\nself-hosting docs: paste the URL your reverse proxy exposes.\n\nThis writes the `relay` field into the global config at\n`~/.pi/extensions/un-bien.json`. Resolution order (highest precedence first):\n\n1. `UNBIEN_RELAY` environment variable (CI / one-off overrides)\n2. `relay` field in `~/.pi/extensions/un-bien.json`\n\nThere is **no built-in default** — when neither is set, the extension refuses\nto connect and prompts you to configure a relay.\n\nVerify the active URL and its source with:\n\n```text\n/unbien config\n```\n\nIf you change the URL while connected, run `/unbien relay stop` then\n`/unbien relay start` (or `/unbien relay` to toggle).\n\nThe mobile app has its own relay-URL setting in its preferences pane — keep\nboth pointing at the same relay.\n\n---\n\n## Agent network: deeper look\n\nEach session is one Unix-domain-socket broker plus N peers. The broker\nmultiplexes messages by opaque `to` address and broadcasts system events\n(`peer_joined`, `peer_left`).\n\nInside the LLM, the agent skill uses `list_peers` for discovery and\n`agent_send` for delivery:\n\n```jsonc\nlist_peers() // copy a complete address from this result\n\nagent_send({\n  to: \"/repo/api@backend\", // exact opaque address returned by list_peers\n  body: { task: \"add /healthz endpoint\" },\n  re: \"<id>\" // set to the received message id when replying\n})\n```\n\nA unicast `agent_send` waits for the broker delivery ACK and returns the public\nstatus `received`, `denied`, or `timeout`; broadcast is fire-and-forget. A\ntrusted Relay's closed transport reason is returned in `details` without\nchanging those statuses: `offline` maps to `timeout`, while `not_authorized`\nand `bad_envelope` map to `denied`. Genuine silence is a reasonless `timeout`.\nDo not blindly retry authorization or envelope failures. Trusted Relay errors\nare consumed internally to settle pending sends; forged or invalid reserved\nbodies do not gain that authority.\n\nMesh addresses are opaque routing values: echo them verbatim, including\nreceiver-local PC aliases with percent-encoded bytes (such as `%3A` or `%25`)\nor collision suffixes containing `~`. Never parse, build, decode, or normalize\nan address for routing or security. A PC alias is receiver-local presentation\nand routing only, so different PCs may list the same sibling under different\naliases. The canonical 32-byte Ed25519 Pi public key is the PC's technical\nidentity; never use an alias as proof of identity.\n\n`agent_request` remains available only as a deprecated legacy Pi tool. Prefer\n`agent_send`, then handle any later inbox/turn reply whose `re` matches the\noriginal message id.\n\nThe wire format is a 5-field envelope `{ from, to, id, re, body }` serialized\nas one JSON line per message. The leader's broker writes an `audit.jsonl`\nlog at `~/.local/state/un-bien/sessions/<name>/audit.jsonl` for postmortem inspection.\n\nUseful commands:\n\n| Command                | What it does                                          |\n| ---------------------- | ----------------------------------------------------- |\n| `/unbien`              | Join the local mesh (and start the relay, if enabled) |\n| `/unbien peers`        | List local + cross-PC mesh peers, grouped by PC       |\n| `/unbien rename <new>` | Rename this agent in the current session              |\n| `/unbien stop`         | Leave the local mesh and disconnect the relay         |\n\nName collisions inside a session get a numeric suffix automatically\n(`backend`, `backend#2`, `backend#3`). The broker assigns it and returns the\nreal name to the peer.\n\n---\n\n## Command reference\n\n### Local session (one Pi, one terminal)\n\n| Command                               | Description                                                                    |\n| ------------------------------------- | ------------------------------------------------------------------------------ |\n| `/unbien`                             | Connect (join local mesh + start relay), or run setup on first use             |\n| `/unbien setup`                       | Run the setup wizard and update local config                                   |\n| `/unbien status`                      | Show local mesh + relay status                                                 |\n| `/unbien stop`                        | Stop everything for **this** terminal (mesh + relay)                           |\n| `/unbien pair`                        | Show QR code + copy-paste pairing URI for a new mobile device                  |\n| `/unbien devices`                     | List paired mobile devices (online/offline per device)                         |\n| `/unbien revoke <shortid>`            | Revoke a paired device by its shortid                                          |\n| `/unbien set-relay <url>`             | Persist a new relay URL (http:// or https://)                                  |\n| `/unbien relay [start\\|stop\\|status]` | Relay-only control — leaves local mesh membership untouched (no verb = toggle) |\n| `/unbien relay url <url>`             | Same as `set-relay`                                                            |\n| `/unbien config`                      | Show the effective relay URL and its source (env / config / unset)             |\n\n### Service install & remote launch (see [Remote launch](#remote-launch))\n\n| Command             | Description                                                                              |\n| ------------------- | ---------------------------------------------------------------------------------------- |\n| `/unbien install`   | Install the **unbien-launcher** daemon as a system service + link the `unbien-admin` CLI |\n| `/unbien uninstall` | Remove the launcher service + CLI links (pairing and config preserved)                   |\n\nAll commands above work both as Pi slash commands (interactive) and as\nshell-level `unbien <subcommand>` when the package is installed\nglobally (`npm install -g @geohar/un-bien`).\n\n### Footer + title\n\n- `📡 local (N)` — current agent session and peer count (local mesh)\n- `🟢 relay` — relay connected, at least one device paired (globally)\n- `🟡 relay waiting for pairing` — relay connected, no device paired yet\n- `📱 <shortid>` — a mobile device is actively connected right now\n\nWindow title: `<agent-name> · On` when relay is up, `<agent-name> · Off`\notherwise. Tells your terminals apart at a glance in `cmux`/`tmux`/iTerm\ntabs.\n\n---\n\n## Remote launch\n\nThe **unbien-launcher** is a lightweight mesh peer — **not** a Pi session — that\nlets a paired app reach your machine even when no Pi is running. It reuses the\nmachine's un-bien config (identity + relay), joins the machine-level control\nroom, advertises `remote_launch`, and spawns a `pi` window via `tmux` (default)\nor `herdr` when the app asks for one.\n\nSee [`docs/daemon.md`](./docs/daemon.md) for troubleshooting.\n\n### One-time setup\n\n```bash\n# Install the package globally so the `unbien-admin` CLI is on your PATH\n# (`pi install npm:@geohar/un-bien` alone makes the Pi extension available\n# but does NOT expose the CLI binary — see\n# https://docs.npmjs.com/cli/v10/configuring-npm/package-json#bin).\nnpm install -g @geohar/un-bien\n\n# Install the launcher as a user-level system service. Linux uses\n# systemd --user; macOS uses launchd LaunchAgent. Both auto-start at\n# login and survive reboots.\nunbien-admin install\n```\n\nOr from inside Pi: `/unbien install` — same service, plus it links the\n`unbien-admin` CLI into `~/.local/bin` so no global npm install is needed.\n\nThe `install` command:\n\n- Writes `~/.config/systemd/user/unbien-launcher.service` (Linux) or\n  `~/Library/LaunchAgents/com.georgeharker.unbien.launcher.plist` (macOS); on Windows it\n  registers a Task Scheduler task (`RemotePiLauncher`) and prompts for\n  elevation once\n- Activates it via `systemctl --user enable --now` or `launchctl bootstrap`\n- The launcher starts immediately and re-starts on every login\n\nA standalone package exists for running the launcher in the foreground, no\nservice: `npm install -g @geohar/un-bien-launcher` → `unbien-launcher`. Same\ndaemon, shipped as its own binary (see the\n[launcher README](../launcher/README.md)).\n\n### Enable remote launch\n\nThe launcher only spawns sessions where remote launch is **opted in**:\n\n- per directory: `allow_remote_launch: true` in `<cwd>/.pi/un-bien/config.json`\n- or machine-wide: `defaults.allow_remote_launch: true` in the global config\n  (`~/.pi/extensions/un-bien.json`)\n\nThe spawn backend is machine-wide: `launch.backend` in the global config —\n`tmux` (default; one shared `un-bien` tmux session, a window per launched Pi)\nor `herdr`. The backend binary must be on PATH: `unbien-admin install` snapshots\nyour PATH at install time, so re-run it after installing new tools.\n\n### Launch names\n\nA `session_launch` request may carry a `name`. On the tmux backend the\nlaunched Pi gets it as `pi -n <name>` — pi's native session display name —\nwhich the extension resolves as the session-scoped agent name: the mesh\njoin, cwd lock, `room_meta`, and the app's session tile all show it instead\nof the path-derived default. It is per-process (never inherited by\nsubagents or child processes) and never persisted — a manual `pi` in the\nsame directory keeps its configured `agent_name`. `/unbien rename` still\nwins once it runs. The herdr backend uses the name as the workspace label\nonly until it can pass args through to pi.\n\n### Removing or uninstalling\n\n```bash\nunbien-admin uninstall        # remove the launcher service (pairing + config kept)\n```\n\n`uninstall` is reversible — re-running `install` later brings the launcher\nback. Pairing and identity live in the state root and are never touched.\n\n### Where to find logs\n\n| Platform | Command                                                 |\n| -------- | ------------------------------------------------------- |\n| Linux    | `journalctl --user -u unbien-launcher -f`               |\n| macOS    | `tail -f ~/.local/state/un-bien/launcher.log`           |\n| Windows  | `Get-Content ~\\.local\\state\\un-bien\\launcher.log -Wait` |\n\n### Caveats\n\n- **Pairing still happens interactively.** The launcher doesn't show a QR; it\n  only trusts owners already paired via `/unbien pair` in a Pi session on\n  this machine.\n- **Tool execution is not gated.** A launched Pi inherits the same Pi config\n  an interactive run uses — Bash, Edit, Write etc. all execute without\n  prompting. Configure Pi's tool permissions to taste before enabling\n  `allow_remote_launch`.\n- **Same identity, same relay.** The launcher reads the machine's global\n  config — `/unbien config` shows exactly what it will use.\n\n---\n\n## Configuration & settings\n\n### Files\n\n| Path                                                   | Scope             | What's in it                                                                   |\n| ------------------------------------------------------ | ----------------- | ------------------------------------------------------------------------------ |\n| `~/.pi/extensions/un-bien.json`                        | Per-user (global) | `relay` URL, `defaults`, `identity`, `debug` — the global settings (see below) |\n| `<cwd>/.pi/un-bien/config.json`                        | Per-directory     | `agent_name`, `auto_start_relay`, `allow_remote_launch`                        |\n| `~/.local/state/un-bien/identity.json`                 | Per-machine       | Paired identity keypair (file identity backend; `0600`)                        |\n| `~/.local/state/un-bien/peers.json`                    | Per-machine       | Paired mobile devices                                                          |\n| `~/.local/state/un-bien/sessions/<name>/`              | Per-session       | Broker socket + `audit.jsonl`                                                  |\n| `~/.local/state/un-bien/skills/agent-network/SKILL.md` | Per-user          | Agent skill the LLM reads                                                      |\n\n### Global settings — `~/.pi/extensions/un-bien.json`\n\nThis is a Pi **extension config** (it lives beside the coding agent's own\nsettings, under `PI_CODING_AGENT_DIR/extensions/`, not in the state tree). All\nfields are optional:\n\n```jsonc\n{\n  // Relay URL in canonical http(s):// form. No default — unset means the\n  // extension refuses to connect. Set via `/unbien set-relay <url>`.\n  \"relay\": \"https://relay.yourdomain.tld\",\n\n  // Machine-wide fallback for every per-cwd config that doesn't set the field.\n  // Pin auto-start once instead of dropping a file into every repo.\n  \"defaults\": { \"auto_start_relay\": true },\n\n  // Remote-launch backend a `session_launch` request uses on THIS machine:\n  // \"tmux\" (default; one shared tmux session, a window per launched Pi) or\n  // \"herdr\". Machine-wide choice — whether remote launch is enabled at all\n  // stays the per-cwd `allow_remote_launch` flag.\n  \"launch\": { \"backend\": \"tmux\" },\n\n  // Machine-identity storage. `storage` selects the PRIMARY backend for this\n  // Pi's long-term Ed25519 seed: \"keychain\" (OS-secured, default) or \"file\"\n  // (a 0600 seed file — the SSH-private-key model: cat-able, portable,\n  // works headless). `path` overrides the file-backend location\n  // (default ~/.local/state/un-bien/identity.json). The unselected backend is still\n  // READ to recover an existing identity, but never written.\n  \"identity\": { \"storage\": \"keychain\", \"path\": \"~/.local/state/un-bien/identity.json\" },\n\n  // File-based diagnostic logs. Off by default. Read from config (not env)\n  // because the daemon fork usually runs detached without a shell's env.\n  \"debug\": { \"envelope\": false, \"panels\": false },\n}\n```\n\n### Per-directory settings — `<cwd>/.pi/un-bien/config.json`\n\nWritten by the `/unbien` setup wizard:\n\n| Field                 | Default        | Meaning                                                                                    |\n| --------------------- | -------------- | ------------------------------------------------------------------------------------------ |\n| `agent_name`          | directory name | Presentation leaf name for this agent (senders still use the opaque `list_peers` address)  |\n| `auto_start_relay`    | `true`         | On a fresh terminal, `/unbien` auto-joins the mesh and starts the relay                    |\n| `allow_remote_launch` | `false`        | Honor `session_launch` requests from a paired owner (spawn a new Pi session). Opt-in only. |\n\n### Environment variables\n\n| Variable               | Purpose                                                                                                                    |\n| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| `UNBIEN_RELAY`         | Relay URL override (highest precedence, ahead of the config file). CI / one-off use.                                       |\n| `UNBIEN_STATE_DIR`     | Absolute override of the **state** dir itself. The knob for relocating state. Highest precedence of the state knobs.       |\n| `UNBIEN_DIR`           | Legacy absolute override of the **state** dir itself (no suffix appended). Lower precedence than `UNBIEN_STATE_DIR`.       |\n| `UNBIEN_HOME`          | Legacy stand-in `$HOME`; state lives at `<UNBIEN_HOME>/.pi/un-bien`. Lower precedence than `UNBIEN_DIR`.                   |\n| `PI_CODING_AGENT_DIR`  | The Pi host's settings root (default `~/.pi`); the global config lives at `<PI_CODING_AGENT_DIR>/extensions/un-bien.json`. |\n| `UNBIEN_DIRECT_CONFIG` | Inline per-cwd config (JSON) instead of a `.pi/un-bien/config.json` file — CI / one-off use.                               |\n\nThe state root resolves as `UNBIEN_STATE_DIR` > `UNBIEN_DIR` > `UNBIEN_HOME` >\n`${XDG_STATE_HOME:-~/.local/state}/un-bien` — the XDG-style default. `UNBIEN_DIR`/\n`UNBIEN_HOME` relocate un-bien **state** (sessions, cwd locks, paired identity) and stay honored for older deployments. On first use\nof the new default, a one-time best-effort migration moves any legacy\n`~/.pi/un-bien` state (peers.json included) into the new root.\n`PI_CODING_AGENT_DIR` relocates only the global **config**, so it can sit\nbeside the coding agent's own settings.\n\n**Deprecated**: the relay no longer defaults its SQLite DB to a CWD-relative\n`data/mesh.db` — see the relay README for its `UNBIEN_MESH_DB_PATH` /\nstate-root resolution.\n\nOverride the relay for a single run without persisting:\n\n```bash\nUNBIEN_RELAY=https://staging.example.tld pi\n```\n\n---\n\n## Troubleshooting\n\n**Footer says `🟡 relay waiting for pairing` even though I paired a device.**\nThe icon reflects whether _any_ device has been paired on this machine, not\nwhether one is connected right now. If you really have a paired device in\n`/unbien devices`, restart Pi — the cache may be stale (fixed in current\nrelease; report a bug if it recurs).\n\n**Mobile app times out connecting.** Verify the same relay URL is configured\non both sides. If you self-host behind a VPN, your phone must also be on the\nVPN (Tailscale on iOS/Android works fine).\n\n**`/unbien config` says the relay is `unset`.** Un Bien has no default relay.\nSelf-host one and set it with `/unbien set-relay <url>` (or `UNBIEN_RELAY`).\n\n**`agent_request` keeps timing out.** It is deprecated because it blocks the\nturn while waiting for another agent's content reply. Migrate to `agent_send`;\na unicast waits only for the delivery ACK, and the receiver can reply later\nwith `agent_send` including `re: \"<original-id>\"` for correlation.\n\n**Multiple terminals in the same directory.** Supported. They share the same\nagent-network session (UDS broker) and the relay handles each Pi process\nindependently. If the relay refuses with `RoomAlreadyOpenError`, stop the\nother terminal first.\n\n---\n\n## Links\n\n- Repository: <https://github.com/georgeharker/un-bien>\n- Documentation: <https://docs.georgeharker.com/un-bien>\n- Pi coding agent: <https://github.com/earendil-works/pi>\n- Relay (self-hosting guide): [`../relay/README.md`](../relay/README.md)\n- Upstream project (remote-pi, MIT): <https://github.com/jacobaraujo7/remote_pi>\n\n---\n\n## License\n\nMIT — derived from [remote-pi](https://github.com/jacobaraujo7/remote_pi) by\nJacob Moura. See [`LICENSE`](LICENSE).\n","readmeFilename":"README.md"}