agent-relay 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/README.md +130 -158
  2. package/bin/relay-pty +0 -0
  3. package/bin/relay-pty-darwin-arm64 +0 -0
  4. package/bin/relay-pty-darwin-x64 +0 -0
  5. package/bin/relay-pty-linux-x64 +0 -0
  6. package/deploy/workspace/entrypoint.sh +9 -0
  7. package/dist/bridge/spawner.d.ts +4 -4
  8. package/dist/bridge/spawner.js +58 -92
  9. package/dist/cli/index.d.ts +8 -6
  10. package/dist/cli/index.js +282 -47
  11. package/dist/cloud/api/daemons.js +13 -32
  12. package/dist/cloud/api/onboarding.js +2 -4
  13. package/dist/cloud/api/providers.js +6 -0
  14. package/dist/cloud/config.d.ts +1 -0
  15. package/dist/cloud/config.js +2 -0
  16. package/dist/cloud/db/bulk-ingest.d.ts +2 -1
  17. package/dist/cloud/db/drizzle.d.ts +21 -26
  18. package/dist/cloud/db/drizzle.js +87 -100
  19. package/dist/cloud/db/index.d.ts +6 -5
  20. package/dist/cloud/db/index.js +9 -8
  21. package/dist/cloud/db/schema.d.ts +1049 -1076
  22. package/dist/cloud/db/schema.js +59 -71
  23. package/dist/cloud/server.js +854 -18
  24. package/dist/cloud/services/persistence.d.ts +15 -15
  25. package/dist/cloud/services/persistence.js +14 -14
  26. package/dist/daemon/agent-manager.d.ts +6 -5
  27. package/dist/daemon/agent-manager.js +12 -8
  28. package/dist/daemon/channel-membership-store.d.ts +48 -0
  29. package/dist/daemon/channel-membership-store.js +149 -0
  30. package/dist/daemon/cloud-sync.d.ts +2 -0
  31. package/dist/daemon/cloud-sync.js +4 -0
  32. package/dist/daemon/connection.js +17 -9
  33. package/dist/daemon/router.d.ts +37 -0
  34. package/dist/daemon/router.js +318 -79
  35. package/dist/daemon/server.d.ts +15 -0
  36. package/dist/daemon/server.js +141 -3
  37. package/dist/dashboard/out/404.html +1 -0
  38. package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_buildManifest.js +1 -0
  39. package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_ssgManifest.js +1 -0
  40. package/dist/dashboard/out/_next/static/chunks/116-eacf84a131b80db9.js +1 -0
  41. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +2 -0
  42. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  43. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +9 -0
  44. package/dist/dashboard/out/_next/static/chunks/64-87ab9cd6bcf2f737.js +1 -0
  45. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +1 -0
  46. package/dist/dashboard/out/_next/static/chunks/766-aa7c8c9900ff5f53.js +1 -0
  47. package/dist/dashboard/out/_next/static/chunks/83-4f08122d4e7e79a6.js +1 -0
  48. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +1 -0
  49. package/dist/dashboard/out/_next/static/chunks/891-a024fbe4b619cf6f.js +1 -0
  50. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +1 -0
  51. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-f746f29e01fffc43.js +1 -0
  52. package/dist/dashboard/out/_next/static/chunks/app/app/page-ffad986adfcc8b31.js +1 -0
  53. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-cfeb437f08a12ed9.js +1 -0
  54. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-03ac6f35a6654ea6.js +1 -0
  55. package/dist/dashboard/out/_next/static/chunks/app/history/page-240f91e8b06ba8ac.js +1 -0
  56. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
  57. package/dist/dashboard/out/_next/static/chunks/app/login/page-6ec54eee75877971.js +1 -0
  58. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-82938ab8fcf44694.js +1 -0
  59. package/dist/dashboard/out/_next/static/chunks/app/page-671037943b2f2e43.js +1 -0
  60. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-0efa024c28ba4597.js +1 -0
  61. package/dist/dashboard/out/_next/static/chunks/app/providers/page-57cbd738c6a73859.js +1 -0
  62. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-5ab0854472b402b0.js +1 -0
  63. package/dist/dashboard/out/_next/static/chunks/app/signup/page-18a4665665f6be11.js +1 -0
  64. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  65. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +1 -0
  66. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
  67. package/dist/dashboard/out/_next/static/chunks/main-5a40a5ae29646e1b.js +1 -0
  68. package/dist/dashboard/out/_next/static/chunks/main-app-6e8e8d3ef4e0192a.js +1 -0
  69. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
  70. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
  71. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  72. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  73. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +1 -0
  74. package/dist/dashboard/out/_next/static/css/8f9ed310f454e5a5.css +1 -0
  75. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  76. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  77. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  78. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  79. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  80. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
  81. package/dist/dashboard/out/alt-logos/logo.svg +38 -0
  82. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  83. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  84. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  85. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  86. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  87. package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
  88. package/dist/dashboard/out/app/onboarding.html +1 -0
  89. package/dist/dashboard/out/app/onboarding.txt +7 -0
  90. package/dist/dashboard/out/app.html +1 -0
  91. package/dist/dashboard/out/app.txt +7 -0
  92. package/dist/dashboard/out/apple-icon.png +0 -0
  93. package/dist/dashboard/out/cloud/link.html +1 -0
  94. package/dist/dashboard/out/cloud/link.txt +7 -0
  95. package/dist/dashboard/out/connect-repos.html +1 -0
  96. package/dist/dashboard/out/connect-repos.txt +7 -0
  97. package/dist/dashboard/out/history.html +1 -0
  98. package/dist/dashboard/out/history.txt +7 -0
  99. package/dist/dashboard/out/index.html +1 -0
  100. package/dist/dashboard/out/index.txt +7 -0
  101. package/dist/dashboard/out/login.html +5 -0
  102. package/dist/dashboard/out/login.txt +7 -0
  103. package/dist/dashboard/out/metrics.html +1 -0
  104. package/dist/dashboard/out/metrics.txt +7 -0
  105. package/dist/dashboard/out/pricing.html +13 -0
  106. package/dist/dashboard/out/pricing.txt +7 -0
  107. package/dist/dashboard/out/providers/setup/claude.html +1 -0
  108. package/dist/dashboard/out/providers/setup/claude.txt +8 -0
  109. package/dist/dashboard/out/providers/setup/codex.html +1 -0
  110. package/dist/dashboard/out/providers/setup/codex.txt +8 -0
  111. package/dist/dashboard/out/providers.html +1 -0
  112. package/dist/dashboard/out/providers.txt +7 -0
  113. package/dist/dashboard/out/signup.html +6 -0
  114. package/dist/dashboard/out/signup.txt +7 -0
  115. package/dist/dashboard-server/metrics.d.ts +105 -0
  116. package/dist/dashboard-server/metrics.js +193 -0
  117. package/dist/dashboard-server/needs-attention.d.ts +24 -0
  118. package/dist/dashboard-server/needs-attention.js +78 -0
  119. package/dist/dashboard-server/server.d.ts +15 -0
  120. package/dist/dashboard-server/server.js +4753 -0
  121. package/dist/dashboard-server/start.d.ts +6 -0
  122. package/dist/dashboard-server/start.js +13 -0
  123. package/dist/dashboard-server/user-bridge.d.ts +132 -0
  124. package/dist/dashboard-server/user-bridge.js +317 -0
  125. package/dist/protocol/channels.d.ts +14 -8
  126. package/dist/protocol/channels.js +1 -1
  127. package/dist/protocol/index.d.ts +1 -0
  128. package/dist/protocol/index.js +1 -0
  129. package/dist/protocol/relay-pty-schemas.d.ts +209 -0
  130. package/dist/protocol/relay-pty-schemas.js +60 -0
  131. package/dist/wrapper/auth-detection.js +8 -1
  132. package/dist/wrapper/base-wrapper.d.ts +11 -1
  133. package/dist/wrapper/base-wrapper.js +67 -6
  134. package/dist/wrapper/client.d.ts +49 -1
  135. package/dist/wrapper/client.js +167 -0
  136. package/dist/wrapper/parser.d.ts +0 -4
  137. package/dist/wrapper/parser.js +38 -10
  138. package/dist/wrapper/pty-wrapper.d.ts +12 -1
  139. package/dist/wrapper/pty-wrapper.js +104 -5
  140. package/dist/wrapper/relay-pty-orchestrator.d.ts +270 -0
  141. package/dist/wrapper/relay-pty-orchestrator.js +970 -0
  142. package/dist/wrapper/shared.d.ts +1 -1
  143. package/dist/wrapper/shared.js +14 -4
  144. package/dist/wrapper/tmux-wrapper.d.ts +13 -1
  145. package/dist/wrapper/tmux-wrapper.js +143 -29
  146. package/package.json +9 -4
  147. package/scripts/postinstall.js +101 -11
  148. package/.trajectories/active/traj_3yx9dy148mge.json +0 -42
  149. package/.trajectories/agent-relay-322-324.md +0 -17
  150. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.json +0 -49
  151. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.md +0 -31
  152. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.json +0 -125
  153. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.md +0 -62
  154. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +0 -65
  155. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +0 -37
  156. package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.json +0 -49
  157. package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.md +0 -31
  158. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +0 -65
  159. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +0 -37
  160. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +0 -49
  161. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +0 -31
  162. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +0 -113
  163. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +0 -57
  164. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +0 -53
  165. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +0 -32
  166. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.json +0 -49
  167. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.md +0 -31
  168. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +0 -26
  169. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +0 -6
  170. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +0 -47
  171. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +0 -32
  172. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +0 -53
  173. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +0 -32
  174. package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.json +0 -49
  175. package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.md +0 -31
  176. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.json +0 -77
  177. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.md +0 -42
  178. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +0 -59
  179. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +0 -33
  180. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +0 -53
  181. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +0 -32
  182. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +0 -48
  183. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +0 -24
  184. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.json +0 -77
  185. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.md +0 -42
  186. package/.trajectories/completed/2026-01/traj_6unwwmgyj5sq.json +0 -109
  187. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.json +0 -77
  188. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.md +0 -42
  189. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +0 -209
  190. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +0 -97
  191. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.json +0 -66
  192. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.md +0 -36
  193. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +0 -48
  194. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +0 -24
  195. package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.json +0 -49
  196. package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.md +0 -31
  197. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +0 -49
  198. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +0 -23
  199. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.json +0 -40
  200. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.md +0 -22
  201. package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.json +0 -66
  202. package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.md +0 -36
  203. package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.json +0 -49
  204. package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.md +0 -31
  205. package/.trajectories/completed/2026-01/traj_cpn70dw066nt.json +0 -65
  206. package/.trajectories/completed/2026-01/traj_cpn70dw066nt.md +0 -37
  207. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +0 -53
  208. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +0 -32
  209. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +0 -49
  210. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +0 -31
  211. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +0 -26
  212. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +0 -6
  213. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.json +0 -121
  214. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.md +0 -29
  215. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +0 -59
  216. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +0 -37
  217. package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.json +0 -36
  218. package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.md +0 -21
  219. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.json +0 -53
  220. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.md +0 -32
  221. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.json +0 -101
  222. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.md +0 -52
  223. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +0 -77
  224. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +0 -42
  225. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +0 -53
  226. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +0 -32
  227. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +0 -25
  228. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +0 -15
  229. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +0 -101
  230. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +0 -44
  231. package/.trajectories/completed/2026-01/traj_he75f24d1xfm.json +0 -101
  232. package/.trajectories/completed/2026-01/traj_he75f24d1xfm.md +0 -52
  233. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.json +0 -49
  234. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.md +0 -31
  235. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.json +0 -65
  236. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.md +0 -37
  237. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +0 -22
  238. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +0 -5
  239. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +0 -53
  240. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +0 -32
  241. package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.json +0 -61
  242. package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.md +0 -36
  243. package/.trajectories/completed/2026-01/traj_lq450ly148uw.json +0 -49
  244. package/.trajectories/completed/2026-01/traj_lq450ly148uw.md +0 -31
  245. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +0 -25
  246. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +0 -15
  247. package/.trajectories/completed/2026-01/traj_multi_server_arch.md +0 -101
  248. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +0 -53
  249. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +0 -32
  250. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +0 -53
  251. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +0 -32
  252. package/.trajectories/completed/2026-01/traj_oszg9flv74pk.json +0 -73
  253. package/.trajectories/completed/2026-01/traj_oszg9flv74pk.md +0 -41
  254. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +0 -48
  255. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +0 -24
  256. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +0 -53
  257. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +0 -32
  258. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.json +0 -27
  259. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.md +0 -14
  260. package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.json +0 -77
  261. package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.md +0 -42
  262. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +0 -77
  263. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +0 -42
  264. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +0 -53
  265. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +0 -32
  266. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +0 -83
  267. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +0 -47
  268. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +0 -59
  269. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +0 -37
  270. package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.json +0 -109
  271. package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.md +0 -56
  272. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +0 -48
  273. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +0 -16
  274. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +0 -59
  275. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +0 -37
  276. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +0 -53
  277. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +0 -32
  278. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +0 -84
  279. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +0 -109
  280. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +0 -53
  281. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +0 -32
  282. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.json +0 -53
  283. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.md +0 -32
  284. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.json +0 -186
  285. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.md +0 -86
  286. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.json +0 -77
  287. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.md +0 -42
  288. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +0 -71
  289. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +0 -42
  290. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.json +0 -89
  291. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.md +0 -47
  292. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +0 -53
  293. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +0 -32
  294. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +0 -20
  295. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +0 -6
  296. package/.trajectories/completed/2026-01/traj_x721m1j9rzup.json +0 -113
  297. package/.trajectories/completed/2026-01/traj_x721m1j9rzup.md +0 -57
  298. package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.json +0 -61
  299. package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.md +0 -36
  300. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +0 -175
  301. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +0 -82
  302. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.json +0 -65
  303. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.md +0 -37
  304. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.json +0 -49
  305. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.md +0 -31
  306. package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.json +0 -49
  307. package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.md +0 -31
  308. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +0 -47
  309. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +0 -32
  310. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +0 -59
  311. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +0 -37
  312. package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.json +0 -49
  313. package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.md +0 -31
  314. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +0 -53
  315. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +0 -32
  316. package/.trajectories/consolidate-settings-panel.md +0 -24
  317. package/.trajectories/gh-cli-user-token.md +0 -26
  318. package/.trajectories/index.json +0 -607
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # agent-relay
2
2
 
3
- Real-time messaging between AI agents.
3
+ Real-time messaging between AI agents. Sub-5ms latency, any CLI, any language.
4
4
 
5
5
  ## Install
6
6
 
@@ -8,58 +8,76 @@ Real-time messaging between AI agents.
8
8
  npm install -g agent-relay
9
9
  ```
10
10
 
11
- **Requirements:** Node.js 20+, tmux
11
+ **Requirements:** Node.js 20+
12
12
 
13
- **Linux/Server:** Install build tools first (required for node-pty):
13
+ **Linux:** Install build tools first:
14
14
  ```bash
15
15
  sudo apt-get update && sudo apt-get install -y build-essential
16
16
  ```
17
17
 
18
+ ### Platform Support
19
+
20
+ | Platform | Status | Notes |
21
+ |----------|--------|-------|
22
+ | macOS Apple Silicon | **Full support** | Native relay-pty binary |
23
+ | macOS Intel | **Full support** | Native relay-pty binary |
24
+ | Linux x64 | **Full support** | Native relay-pty binary |
25
+ | Linux arm64 | Fallback | Uses tmux (install separately) |
26
+ | Windows | Fallback | Uses tmux via WSL |
27
+
18
28
  ## Quick Start
19
29
 
20
30
  ```bash
21
- # Terminal 1: Start daemon
22
- agent-relay up
31
+ # Start daemon + coordinator agent
32
+ agent-relay claude
23
33
 
24
- # Terminal 2: Start an agent
25
- agent-relay -n Alice claude
26
-
27
- # Terminal 3: Start another agent
28
- agent-relay -n Bob codex
34
+ # Or with other CLI tools
35
+ agent-relay codex
29
36
  ```
30
37
 
31
- Agents communicate by outputting `->relay:` patterns. Always use the fenced format:
38
+ Agents communicate via file-based messaging:
39
+
40
+ ```bash
41
+ # Write message to outbox
42
+ cat > /tmp/relay-outbox/$AGENT_RELAY_NAME/msg << 'EOF'
43
+ TO: Bob
44
+
45
+ Hey, can you help with this task?
46
+ EOF
32
47
 
48
+ # Trigger send
49
+ echo "->relay-file:msg"
33
50
  ```
34
- ->relay:Bob <<<
35
- Hey, can you review my changes?>>>
36
51
 
37
- ->relay:* <<<
38
- Broadcasting to everyone>>>
52
+ Or broadcast to all:
53
+ ```bash
54
+ cat > /tmp/relay-outbox/$AGENT_RELAY_NAME/broadcast << 'EOF'
55
+ TO: *
56
+
57
+ Message to all agents
58
+ EOF
59
+ echo "->relay-file:broadcast"
39
60
  ```
40
61
 
41
- ## CLI
62
+ ## CLI Reference
42
63
 
43
64
  | Command | Description |
44
65
  |---------|-------------|
45
- | `agent-relay <cmd>` | Wrap agent with messaging |
46
- | `agent-relay -n Name <cmd>` | Wrap with specific name |
66
+ | `agent-relay claude` | Start daemon + coordinator with Claude |
67
+ | `agent-relay codex` | Start daemon + coordinator with Codex |
47
68
  | `agent-relay up` | Start daemon + dashboard |
48
69
  | `agent-relay down` | Stop daemon |
49
- | `agent-relay status` | Check if running |
70
+ | `agent-relay status` | Check daemon status |
71
+ | `agent-relay create-agent -n Name <cmd>` | Create named agent |
50
72
  | `agent-relay read <id>` | Read truncated message |
51
73
  | `agent-relay bridge <projects...>` | Bridge multiple projects |
52
74
 
53
- ## How It Works
54
-
55
- 1. `agent-relay up` starts a daemon that routes messages via Unix socket
56
- 2. `agent-relay <cmd>` wraps your agent in tmux, parsing output for `->relay:` patterns
57
- 3. Messages are injected into recipient terminals in real-time
75
+ ## Architecture
58
76
 
59
77
  ```
60
78
  ┌─────────────┐ ┌─────────────┐
61
79
  │ Agent Alice │ │ Agent Bob │
62
- (tmux) │ │ (tmux)
80
+ (relay-pty) │ │ (relay-pty)
63
81
  └──────┬──────┘ └──────┬──────┘
64
82
  │ │
65
83
  └─────────┬─────────┘
@@ -68,196 +86,150 @@ Broadcasting to everyone>>>
68
86
 
69
87
  ┌────────┴────────┐
70
88
  │ relay daemon │
89
+ │ (<5ms P2P) │
90
+ └────────┬────────┘
91
+
92
+ ┌────────┴────────┐
93
+ │ Dashboard │
94
+ │ (Protocol UI) │
71
95
  └─────────────────┘
72
96
  ```
73
97
 
74
- ## Agent Communication
98
+ **relay-pty** is a Rust binary that wraps your CLI tool, providing:
99
+ - Direct PTY writes for reliable message injection
100
+ - ~550ms injection latency (vs ~1700ms with tmux)
101
+ - File-based message parsing for robustness
75
102
 
76
- ### Send Message
103
+ The **Dashboard** is a reference implementation of the relay protocol, providing real-time visibility into agent communication, message history, and coordinator controls.
77
104
 
78
- ```
79
- ->relay:AgentName <<<
80
- Your message here>>>
81
- ```
105
+ ## Dashboard
82
106
 
83
- ### Broadcast
107
+ The dashboard starts automatically with any command (`agent-relay claude`, `agent-relay up`, etc.) at http://localhost:3888
84
108
 
85
- ```
86
- ->relay:* <<<
87
- Message to all agents>>>
88
- ```
109
+ Features:
110
+ - Real-time agent presence and status
111
+ - Message history and threading
112
+ - Coordinator panel for multi-agent orchestration
113
+ - Log streaming from all agents
89
114
 
90
- ### Receive
115
+ ## Cloud
91
116
 
92
- Messages appear as:
117
+ For maximum scale and team collaboration, use [**agent-relay cloud**](https://agent-relay.com):
93
118
 
94
- ```
95
- Relay message from Alice [abc123]: Your message here
96
- ```
119
+ ```bash
120
+ # Link your machine to cloud
121
+ agent-relay cloud link
97
122
 
98
- ### Truncated Messages
123
+ # Check cloud status
124
+ agent-relay cloud status
99
125
 
100
- Long messages are truncated. Use the ID to read full content:
126
+ # List agents across all linked machines
127
+ agent-relay cloud agents
101
128
 
102
- ```bash
103
- agent-relay read abc123
129
+ # Send message to agent on any machine
130
+ agent-relay cloud send AgentName "Your message"
104
131
  ```
105
132
 
106
- ## Agent Roles
133
+ Cloud features:
134
+ - **Persistent workspaces** - Agents survive disconnects
135
+ - **Team collaboration** - Share dashboards, view all agents
136
+ - **Cross-machine messaging** - Send to agents on any linked machine
137
+ - **Centralized monitoring** - See all daemons and agents in one place
107
138
 
108
- Agent names automatically match role definitions (case-insensitive):
139
+ The cloud dashboard is the same protocol implementation, scaled for teams.
109
140
 
110
- ```bash
111
- # If .claude/agents/lead.md exists:
112
- agent-relay -n Lead claude # matches lead.md
113
- agent-relay -n LEAD claude # matches lead.md
114
- agent-relay -n lead claude # matches lead.md
115
-
116
- # Supported locations:
117
- # - .claude/agents/<name>.md
118
- # - .openagents/<name>.md
119
- ```
141
+ ## Agent Roles
120
142
 
121
- Create role agents for your team:
143
+ Create role-based agents by adding markdown files:
122
144
 
123
145
  ```
124
146
  .claude/agents/
125
147
  ├── lead.md # Coordinator
126
148
  ├── implementer.md # Developer
127
- ├── designer.md # UI/UX
128
- └── reviewer.md # Code review
149
+ ├── reviewer.md # Code review
150
+ └── designer.md # UI/UX
129
151
  ```
130
152
 
131
- ## Multi-Project Orchestration
132
-
133
- Bridge multiple projects with a single orchestrator:
134
-
153
+ Names automatically match roles (case-insensitive):
135
154
  ```bash
136
- # Bridge projects (Architect mode)
137
- agent-relay bridge ~/auth ~/frontend ~/api
155
+ agent-relay create-agent -n Lead claude # Uses lead.md
138
156
  ```
139
157
 
140
- ### Workflow
141
-
142
- 1. **Start daemons** in each project: `agent-relay up`
143
- 2. **Start agents** in each project: `agent-relay -n Alice claude`
144
- 3. **Bridge** from anywhere: `agent-relay bridge ~/project1 ~/project2`
158
+ ## Multi-Project Bridge
145
159
 
146
- ### Cross-Project Messaging
160
+ Orchestrate agents across multiple repositories:
147
161
 
148
- ```
149
- ->relay:projectId:agent <<<
150
- Message to specific agent>>>
162
+ ```bash
163
+ # Start daemons in each project
164
+ cd ~/auth && agent-relay up
165
+ cd ~/frontend && agent-relay up
151
166
 
152
- ->relay:*:lead <<<
153
- Broadcast to all project leads>>>
167
+ # Bridge from anywhere
168
+ agent-relay bridge ~/auth ~/frontend ~/api
154
169
  ```
155
170
 
156
- ### Spawn Agents
171
+ Cross-project messaging uses `project:agent` format in the TO header:
172
+ ```bash
173
+ cat > /tmp/relay-outbox/$AGENT_RELAY_NAME/msg << 'EOF'
174
+ TO: auth:Lead
157
175
 
158
- ```
159
- ->relay:spawn Dev1 claude "Implement login endpoint"
160
- ->relay:release Dev1
176
+ Please review the token refresh logic
177
+ EOF
178
+ echo "->relay-file:msg"
161
179
  ```
162
180
 
163
- See [docs/DESIGN_BRIDGE_STAFFING.md](docs/DESIGN_BRIDGE_STAFFING.md) for full details.
181
+ ## Teaching Agents
164
182
 
165
- ## Enabling AI Agents
166
-
167
- To teach your AI agents how to use agent-relay, you should:
168
-
169
- ### Install the Skill
183
+ Install the messaging skill for your agents via [prpm](https://prpm.dev):
170
184
 
171
185
  ```bash
172
- prpm install using-agent-relay
173
- ```
186
+ # Install snippet for AGENTS.md
187
+ npx prpm install @agent-relay/agent-relay-snippet
174
188
 
175
- This installs the `using-agent-relay` skill which provides agents with messaging patterns, coordination workflows, and troubleshooting guidance.
176
-
177
- ### Update the AGENTS.md/CLAUDE.md file
178
-
179
- Use prpm to install the AGENTS.md snippet or CLAUDE.md snippet
189
+ # Install snippet for CLAUDE.md
190
+ npx prpm install @agent-relay/agent-relay-snippet --location CLAUDE.md
180
191
  ```
181
- prpm install @agent-relay/agent-relay-snippet
182
- ```
183
-
184
- Or if using CLAUDE.md
185
- ```
186
- prpm install @agent-relay/agent-relay-snippet --location CLAUDE.md
187
- ```
188
-
189
- ## Dashboard
190
192
 
191
- `agent-relay up` starts a web dashboard at http://localhost:3888
193
+ View the rest of our packages on on [prpm organization page](https://prpm.dev/orgs?name=Agent%20Relay)
192
194
 
193
- ![Agent Relay Dashboard](docs/dashboard.png)
195
+ Or manually add the relay patterns to your agent instructions.
194
196
 
195
197
  ## Development
196
198
 
197
199
  ```bash
198
- git clone https://github.com/khaliqgant/agent-relay.git
199
- cd agent-relay
200
+ git clone https://github.com/AgentWorkforce/relay.git
201
+ cd relay
200
202
  npm install && npm run build
203
+ npm run dev # Start daemon + dashboard in dev mode
201
204
  ```
202
205
 
203
- ## Why agent-relay?
206
+ ## Philosophy
204
207
 
205
- ### The Composable Approach
208
+ **Do one thing well**: Real-time agent messaging with <5ms latency.
206
209
 
207
- Most multi-agent tools try to be complete solutions - handling communication, memory, UI, workflows, and orchestration. agent-relay takes a different approach: **do one thing exceptionally well** (real-time messaging) and integrate with best-of-breed tools for everything else.
210
+ agent-relay is a messaging layer, not a framework. It integrates with:
211
+ - Any CLI tool (Claude, Codex, Gemini, custom agents)
212
+ - Any orchestration system (your own, Beads, external)
213
+ - Any memory system (Mimir, vector DBs, files)
208
214
 
209
215
  ```
210
- ┌─────────────────────────────────────────────────────────────┐
211
- Your Agent System
212
- ├─────────────────────────────────────────────────────────────┤
213
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
214
- │ Mimir │ Maestro Beads
215
- │ │ (Memory) │ │ (UI) │ │ (Workflows) │ │
216
- └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
217
- └────────────────┼────────────────┘
218
- │ ┌─────────▼─────────┐ │
219
- agent-relay ◄── Messaging layer
220
- │ │ <5ms P2P │ │
221
- │ └─────────┬─────────┘ │
222
- │ ┌────────────────┼────────────────┐ │
223
- │ ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ │
224
- │ │ Claude │ │ Codex │ │ Gemini │ │
225
- │ └─────────┘ └─────────┘ └─────────┘ │
226
- └─────────────────────────────────────────────────────────────┘
216
+ ┌──────────────────────────────────────────┐
217
+ Your Agent System
218
+ ├──────────────────────────────────────────┤
219
+ Memory Orchestration │ UI/Dashboard │
220
+ (any)(any) (any)
221
+ ├──────────────────────────────────────────┤
222
+ agent-relay
223
+ Real-time messaging
224
+ ├──────────────────────────────────────────┤
225
+ Claude Codex Gemini Custom │
226
+ └──────────────────────────────────────────┘
227
227
  ```
228
228
 
229
- ### Unix Philosophy
230
-
231
- - **Do one thing well**: Real-time agent messaging with <5ms latency
232
- - **Work with others**: Simple `->relay:` pattern, standard I/O
233
- - **Text streams**: Messages are just text, easy to parse/transform
234
- - **Composability**: Pipe into other tools, wrap any CLI
235
-
236
- ### When to Use agent-relay
237
-
238
- | Use Case | agent-relay? |
239
- |----------|--------------|
240
- | Quick prototyping with multiple agents | **Yes** - 1 min setup |
241
- | Real-time agent collaboration | **Yes** - fastest option |
242
- | CLI-native workflows | **Yes** - no Electron/desktop needed |
243
- | Need persistent knowledge graph | Combine with Mimir |
244
- | Need rich desktop UI | Combine with Maestro |
245
- | Enterprise compliance | Combine with governance layer |
229
+ ## License
246
230
 
247
- See [docs/COMPETITIVE_ANALYSIS.md](docs/COMPETITIVE_ANALYSIS.md) for detailed comparisons with 16 other multi-agent tools.
231
+ MIT
248
232
 
249
233
  ---
250
234
 
251
- ## Inspiration
252
-
253
- This project was inspired by some excellent work in the multi-agent coordination space:
254
-
255
- - **[mcp_agent_mail](https://github.com/Dicklesworthstone/mcp_agent_mail)** - A brilliant MCP-based approach to agent messaging with file-based inboxes and structured message handling. Great patterns for durable, asynchronous agent communication.
256
-
257
- - **[swarm-tools / swarm-mail](https://github.com/joelhooks/swarm-tools)** - An exceptional event-sourced coordination system with durable cursors, locks, deferred responses, and ask/respond patterns. The gold standard for robust multi-agent workflows with full audit trails.
258
-
259
- Both projects informed our thinking around durability, message threading, and coordination primitives. Check them out!
260
-
261
- ## License
262
-
263
- MIT
235
+ **Links:** [Documentation](https://github.com/AgentWorkforce/relay/tree/main/docs) | [Issues](https://github.com/AgentWorkforce/relay/issues) | [Cloud](https://agent-relay.com)
package/bin/relay-pty ADDED
Binary file
Binary file
Binary file
Binary file
@@ -92,6 +92,15 @@ export NO_UPDATE_NOTIFIER=1
92
92
  export NPM_CONFIG_UPDATE_NOTIFIER=false
93
93
  log "Auto-updates disabled for AI CLIs (container environment)"
94
94
 
95
+ # ============================================================================
96
+ # Git credential helper configuration
97
+ # Clean up conflicting credential helpers that gh CLI or other tools may set
98
+ # git-credential-relay requires no host-specific overrides to work properly
99
+ # ============================================================================
100
+ git config --global --unset-all 'credential.https://github.com.helper' 2>/dev/null || true
101
+ git config --global --unset-all 'credential.https://gist.github.com.helper' 2>/dev/null || true
102
+ log "Git credential helper configured (removed conflicting gh auth overrides)"
103
+
95
104
  # ============================================================================
96
105
  # Per-user credential storage setup
97
106
  # Create user-specific HOME on persistent volume (/data)
@@ -3,7 +3,7 @@
3
3
  * Handles spawning and releasing worker agents via node-pty.
4
4
  * Workers run headlessly with output capture for logs.
5
5
  */
6
- import { type SummaryEvent, type SessionEndEvent } from '../wrapper/pty-wrapper.js';
6
+ import type { SummaryEvent, SessionEndEvent } from '../wrapper/pty-wrapper.js';
7
7
  import { AgentPolicyService, type CloudPolicyFetcher } from '../policy/agent-policy.js';
8
8
  import type { SpawnRequest, SpawnResult, WorkerInfo, SpawnWithShadowRequest, SpawnWithShadowResult } from './types.js';
9
9
  /**
@@ -68,7 +68,7 @@ export declare class AgentSpawner {
68
68
  */
69
69
  setOnAgentDeath(callback: OnAgentDeathCallback): void;
70
70
  /**
71
- * Set cloud persistence handler for forwarding PtyWrapper events.
71
+ * Set cloud persistence handler for forwarding RelayPtyOrchestrator events.
72
72
  * When set, 'summary' and 'session-end' events from spawned agents
73
73
  * are forwarded to the handler for cloud persistence (PostgreSQL/Redis).
74
74
  *
@@ -76,12 +76,12 @@ export declare class AgentSpawner {
76
76
  */
77
77
  setCloudPersistence(handler: CloudPersistenceHandler): void;
78
78
  /**
79
- * Bind cloud persistence event handlers to a PtyWrapper.
79
+ * Bind cloud persistence event handlers to a RelayPtyOrchestrator.
80
80
  * Returns the listener references for cleanup.
81
81
  */
82
82
  private bindCloudPersistenceEvents;
83
83
  /**
84
- * Unbind all tracked listeners from a PtyWrapper.
84
+ * Unbind all tracked listeners from a RelayPtyOrchestrator.
85
85
  */
86
86
  private unbindListeners;
87
87
  /**