agentwire-dev 1.30.1__tar.gz → 1.31.0__tar.gz

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 (362) hide show
  1. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/PKG-INFO +31 -25
  2. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/README.md +30 -24
  3. agentwire_dev-1.31.0/SECURITY.md +63 -0
  4. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/__init__.py +1 -1
  5. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/__main__.py +926 -533
  6. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/config.py +127 -25
  7. agentwire_dev-1.31.0/agentwire/council/__init__.py +17 -0
  8. agentwire_dev-1.31.0/agentwire/council/cli.py +462 -0
  9. agentwire_dev-1.31.0/agentwire/council/inbox.py +192 -0
  10. agentwire_dev-1.31.0/agentwire/council/state.py +144 -0
  11. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/agentwire-permission.sh +19 -0
  12. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/idle-handler.sh +11 -2
  13. agentwire_dev-1.31.0/agentwire/hooks/queue-processor.sh +78 -0
  14. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/listen.py +16 -45
  15. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/mcp_server.py +323 -20
  16. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/dispatcher.py +1 -46
  17. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/onboarding.py +79 -36
  18. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/overnight.py +7 -2
  19. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/__init__.py +78 -0
  20. agentwire_dev-1.31.0/agentwire/roles/council-brain.md +13 -0
  21. agentwire_dev-1.31.0/agentwire/roles/council-conscience.md +13 -0
  22. agentwire_dev-1.31.0/agentwire/roles/council-critic.md +12 -0
  23. agentwire_dev-1.31.0/agentwire/roles/council-devils-advocate.md +12 -0
  24. agentwire_dev-1.31.0/agentwire/roles/council-gut.md +11 -0
  25. agentwire_dev-1.31.0/agentwire/roles/council-historian.md +12 -0
  26. agentwire_dev-1.31.0/agentwire/roles/council-member.md +47 -0
  27. agentwire_dev-1.31.0/agentwire/roles/council-orchestrator.md +34 -0
  28. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/init.md +24 -49
  29. agentwire_dev-1.31.0/agentwire/roles/soul.md +36 -0
  30. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/voice.md +4 -2
  31. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/scheduler.py +31 -3
  32. agentwire_dev-1.31.0/agentwire/scratchpad.py +105 -0
  33. agentwire_dev-1.31.0/agentwire/security.py +220 -0
  34. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/server.py +465 -55
  35. agentwire_dev-1.31.0/agentwire/services.py +285 -0
  36. agentwire_dev-1.31.0/agentwire/session_ready.py +145 -0
  37. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/css/desktop.css +392 -2
  38. agentwire_dev-1.31.0/agentwire/static/js/api.js +48 -0
  39. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/artifact-window.js +38 -2
  40. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/collage.js +2 -1
  41. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/command-palette.js +123 -31
  42. agentwire_dev-1.31.0/agentwire/static/js/dead-key-suppressor.js +58 -0
  43. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/desktop-manager.js +73 -5
  44. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/desktop.js +133 -43
  45. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/icon-manager.js +3 -1
  46. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/notifications-panel.js +3 -2
  47. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/safety-shared.js +6 -4
  48. agentwire_dev-1.31.0/agentwire/static/js/scratchpad.js +313 -0
  49. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/session-window.js +130 -27
  50. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/artifacts-section.js +4 -2
  51. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/config-section.js +2 -1
  52. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/machines-section.js +4 -2
  53. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/missions-section.js +3 -2
  54. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/projects-section.js +10 -15
  55. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/scheduler-section.js +7 -6
  56. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/sessions-section.js +5 -4
  57. agentwire_dev-1.31.0/agentwire/static/js/token-modal.js +92 -0
  58. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/utils/auto-refresh.js +3 -1
  59. agentwire_dev-1.31.0/agentwire/static/js/voice/browser-stt.js +65 -0
  60. agentwire_dev-1.31.0/agentwire/static/js/voice/browser-tts.js +96 -0
  61. agentwire_dev-1.31.0/agentwire/static/js/voice/jargon.js +55 -0
  62. agentwire_dev-1.31.0/agentwire/static/js/voice/prompt.js +8 -0
  63. agentwire_dev-1.31.0/agentwire/stt/__init__.py +36 -0
  64. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/stt/base.py +16 -0
  65. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/stt/server_backend.py +40 -10
  66. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/stt/stt_server.py +16 -0
  67. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/desktop.html +23 -0
  68. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/tmux.conf +14 -0
  69. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/base.py +7 -3
  70. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/qwen_custom.py +2 -2
  71. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/qwen_design.py +6 -6
  72. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts_server.py +59 -1
  73. agentwire_dev-1.31.0/agentwire/utils/speech.py +23 -0
  74. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voiceclone.py +58 -182
  75. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/INDEX.md +8 -5
  76. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/architecture.md +1 -1
  77. agentwire_dev-1.31.0/docs/wiki/council.md +113 -0
  78. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/glossary.md +4 -0
  79. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/internals/troubleshooting.md +12 -19
  80. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/quickstart.md +45 -9
  81. agentwire_dev-1.31.0/docs/wiki/services.md +74 -0
  82. agentwire_dev-1.31.0/docs/wiki/voice/shim-contract.md +224 -0
  83. {agentwire_dev-1.30.1/docs/wiki/tts → agentwire_dev-1.31.0/docs/wiki/voice}/stt-self-hosted.md +10 -13
  84. {agentwire_dev-1.30.1/docs/wiki/tts → agentwire_dev-1.31.0/docs/wiki/voice}/tts-self-hosted.md +8 -5
  85. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/conftest.py +1 -1
  86. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/integration/test_missions_lifecycle.py +14 -2
  87. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/integration/test_server_websockets.py +94 -0
  88. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_cli_commands.py +85 -0
  89. agentwire_dev-1.31.0/tests/unit/test_config.py +205 -0
  90. agentwire_dev-1.31.0/tests/unit/test_council_cli.py +297 -0
  91. agentwire_dev-1.31.0/tests/unit/test_council_inbox.py +156 -0
  92. agentwire_dev-1.31.0/tests/unit/test_council_state.py +87 -0
  93. agentwire_dev-1.31.0/tests/unit/test_hooks_install.py +212 -0
  94. agentwire_dev-1.31.0/tests/unit/test_idle_handler.py +84 -0
  95. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_mcp_server.py +56 -4
  96. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_mcp_tools_args.py +2 -1
  97. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_cli.py +11 -0
  98. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_portal_api.py +312 -5
  99. agentwire_dev-1.31.0/tests/unit/test_roles.py +262 -0
  100. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_scheduler.py +83 -0
  101. agentwire_dev-1.31.0/tests/unit/test_scratchpad.py +117 -0
  102. agentwire_dev-1.31.0/tests/unit/test_security.py +150 -0
  103. agentwire_dev-1.31.0/tests/unit/test_server_async.py +279 -0
  104. agentwire_dev-1.31.0/tests/unit/test_services.py +295 -0
  105. agentwire_dev-1.31.0/tests/unit/test_session_ready.py +167 -0
  106. agentwire_dev-1.31.0/tests/unit/test_speech_tags.py +41 -0
  107. agentwire_dev-1.31.0/tests/unit/test_stt_backend.py +34 -0
  108. agentwire_dev-1.31.0/tests/unit/test_tmux_template.py +67 -0
  109. agentwire_dev-1.30.1/SECURITY.md +0 -59
  110. agentwire_dev-1.30.1/agentwire/static/js/new-project-modal.js +0 -177
  111. agentwire_dev-1.30.1/agentwire/static/js/windows/chat-window.js +0 -612
  112. agentwire_dev-1.30.1/agentwire/stt/__init__.py +0 -69
  113. agentwire_dev-1.30.1/agentwire/stt/whisperkit.py +0 -90
  114. agentwire_dev-1.30.1/agentwire/tts/runpod_handler.py +0 -350
  115. agentwire_dev-1.30.1/docs/wiki/tts/runpod-tts.md +0 -98
  116. agentwire_dev-1.30.1/tests/unit/test_config.py +0 -124
  117. agentwire_dev-1.30.1/tests/unit/test_roles.py +0 -141
  118. agentwire_dev-1.30.1/tests/unit/test_server_async.py +0 -95
  119. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.github/FUNDING.yml +0 -0
  120. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  121. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  122. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.github/ISSUE_TEMPLATE/question.md +0 -0
  123. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  124. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/.gitignore +0 -0
  125. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/CHANGELOG.md +0 -0
  126. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/CLA.md +0 -0
  127. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/CODE_OF_CONDUCT.md +0 -0
  128. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/CONTRIBUTING.md +0 -0
  129. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/Dockerfile.local +0 -0
  130. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/Dockerfile.runpod +0 -0
  131. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/LICENSE +0 -0
  132. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/RELEASING.md +0 -0
  133. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/SPONSORS.md +0 -0
  134. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/agents/__init__.py +0 -0
  135. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/agents/base.py +0 -0
  136. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/agents/tmux.py +0 -0
  137. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/cached_status.py +0 -0
  138. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/channels/__init__.py +0 -0
  139. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/channels/base.py +0 -0
  140. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/channels/email.py +0 -0
  141. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/channels/quo.py +0 -0
  142. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/cli_safety.py +0 -0
  143. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/completion.py +0 -0
  144. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/fetch.py +0 -0
  145. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/__init__.py +0 -0
  146. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/git_state.py +0 -0
  147. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/instructions.py +0 -0
  148. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/parser.py +0 -0
  149. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/renderer.py +0 -0
  150. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/handoff/schema.py +0 -0
  151. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/history.py +0 -0
  152. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/__init__.py +0 -0
  153. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/__init__.py +0 -0
  154. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/audit_logger.py +0 -0
  155. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/bash-tool-damage-control.py +0 -0
  156. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/edit-tool-damage-control.py +0 -0
  157. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/agentwire.yaml +0 -0
  158. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/aws.yaml +0 -0
  159. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/cloud-hosting.yaml +0 -0
  160. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/containers.yaml +0 -0
  161. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/core.yaml +0 -0
  162. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/databases.yaml +0 -0
  163. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/firebase.yaml +0 -0
  164. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/gcp.yaml +0 -0
  165. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/git.yaml +0 -0
  166. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/gws.yaml +0 -0
  167. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/infrastructure.yaml +0 -0
  168. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/rules/remote.yaml +0 -0
  169. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/hooks/damage-control/write-tool-damage-control.py +0 -0
  170. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/locking.py +0 -0
  171. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/__init__.py +0 -0
  172. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/cli.py +0 -0
  173. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/config.py +0 -0
  174. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/eligibility.py +0 -0
  175. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/feedback_router.py +0 -0
  176. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/gc.py +0 -0
  177. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/github.py +0 -0
  178. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/naming.py +0 -0
  179. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/missions/state.py +0 -0
  180. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/network.py +0 -0
  181. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/pane_manager.py +0 -0
  182. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/project_config.py +0 -0
  183. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/projects.py +0 -0
  184. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/prompts/__init__.py +0 -0
  185. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/prompts/init.md +0 -0
  186. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/agentwire.md +0 -0
  187. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/chatbot.md +0 -0
  188. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/notifications.md +0 -0
  189. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/orchestrator.md +0 -0
  190. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/task-runner.md +0 -0
  191. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/roles/worker.md +0 -0
  192. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/safety/__init__.py +0 -0
  193. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/safety/_core.py +0 -0
  194. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/search.py +0 -0
  195. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-Echo--black.png +0 -0
  196. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-Echo--transparent.png +0 -0
  197. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-Echo.png +0 -0
  198. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-email-banner.png +0 -0
  199. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--agentwire-text.png +0 -0
  200. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--echo-claw-fg.png +0 -0
  201. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--echo.png +0 -0
  202. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--full--transparent-top.png +0 -0
  203. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--full-black.png +0 -0
  204. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--telephone-fg.png +0 -0
  205. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--telephone.png +0 -0
  206. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--transparent-top.png +0 -0
  207. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--transparent.png +0 -0
  208. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers--tree.png +0 -0
  209. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/agentwire-splash-logo-layers.png +0 -0
  210. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/favicon.png +0 -0
  211. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/android.jpeg +0 -0
  212. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/automaton.jpeg +0 -0
  213. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/bot.jpeg +0 -0
  214. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/cyborg.jpeg +0 -0
  215. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/droid.jpeg +0 -0
  216. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/drone.jpeg +0 -0
  217. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/guardian.jpeg +0 -0
  218. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/mech.jpeg +0 -0
  219. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/probe.jpeg +0 -0
  220. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/robot.jpeg +0 -0
  221. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/sentinel.jpeg +0 -0
  222. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/machines/unit.jpeg +0 -0
  223. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/blob.jpeg +0 -0
  224. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/cloud.jpeg +0 -0
  225. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/crystal.jpeg +0 -0
  226. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/cyclops.jpeg +0 -0
  227. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/flame.jpeg +0 -0
  228. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/fuzzy.jpeg +0 -0
  229. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/horned.jpeg +0 -0
  230. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/moon.jpeg +0 -0
  231. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/slime.jpeg +0 -0
  232. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/star.jpeg +0 -0
  233. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/tentacle.jpeg +0 -0
  234. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/projects/winged.jpeg +0 -0
  235. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/bear.jpeg +0 -0
  236. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/cat.jpeg +0 -0
  237. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/crown.jpeg +0 -0
  238. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/custom/agentwire-portal.png +0 -0
  239. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/custom/agentwire-tts.png +0 -0
  240. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/custom/agentwire.png +0 -0
  241. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/deer.jpeg +0 -0
  242. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/drone.jpeg +0 -0
  243. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/eagle.jpeg +0 -0
  244. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/fox.jpeg +0 -0
  245. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/hawk.jpeg +0 -0
  246. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/horse.jpeg +0 -0
  247. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/lion.jpeg +0 -0
  248. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/rabbit.jpeg +0 -0
  249. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/robot.jpeg +0 -0
  250. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/tiger.jpeg +0 -0
  251. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/icons/sessions/wolf.jpeg +0 -0
  252. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/.gitkeep +0 -0
  253. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/components/icon-picker.js +0 -0
  254. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/components/list-card.js +0 -0
  255. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/components/type-tag.js +0 -0
  256. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/safety-window.js +0 -0
  257. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/session-id.js +0 -0
  258. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/safety-section.js +0 -0
  259. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar/services-section.js +0 -0
  260. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/sidebar.js +0 -0
  261. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/terminal-font-prefs.js +0 -0
  262. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/tile-manager.js +0 -0
  263. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/utils/ansi.js +0 -0
  264. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/static/js/winbox.bundle.min.js +0 -0
  265. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tasks.py +0 -0
  266. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/__init__.py +0 -0
  267. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/base.html +0 -0
  268. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/email_notification.html +0 -0
  269. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/handoff/show-the-story.html.j2 +0 -0
  270. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templates/handoff/theme.css.j2 +0 -0
  271. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/templating.py +0 -0
  272. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/aws.yaml +0 -0
  273. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/docker.yaml +0 -0
  274. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/gcp.yaml +0 -0
  275. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/gh.yaml +0 -0
  276. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/git.yaml +0 -0
  277. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/gws.yaml +0 -0
  278. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/kubectl.yaml +0 -0
  279. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/npm.yaml +0 -0
  280. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/terraform.yaml +0 -0
  281. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tooldefs/uv.yaml +0 -0
  282. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/__init__.py +0 -0
  283. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/__init__.py +0 -0
  284. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/chatterbox.py +0 -0
  285. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/kokoro.py +0 -0
  286. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/qwen_base.py +0 -0
  287. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/engines/zonos.py +0 -0
  288. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tts/registry.py +0 -0
  289. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/tunnels.py +0 -0
  290. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/utils/__init__.py +0 -0
  291. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/utils/chunker.py +0 -0
  292. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/utils/file_io.py +0 -0
  293. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/utils/paths.py +0 -0
  294. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/utils/subprocess.py +0 -0
  295. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/validation.py +0 -0
  296. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voices/darren.wav +0 -0
  297. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voices/default.wav +0 -0
  298. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voices/jessica.wav +0 -0
  299. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voices/lisa.wav +0 -0
  300. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/voices/may.wav +0 -0
  301. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/agentwire/worktree.py +0 -0
  302. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/decisions/obsidian-second-brain.md +0 -0
  303. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/logo.png +0 -0
  304. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/communication/channels.md +0 -0
  305. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/communication/hammerspoon.md +0 -0
  306. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/communication/handoff.md +0 -0
  307. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/concepts.md +0 -0
  308. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/deployment/remote-access.md +0 -0
  309. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/deployment/remote-machines.md +0 -0
  310. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/integrations/gws-google-workspace-cli.md +0 -0
  311. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/internals/damage-control.md +0 -0
  312. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/internals/portal.md +0 -0
  313. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/internals/shell-escaping.md +0 -0
  314. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/internals/window-collage.md +0 -0
  315. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/missions.md +0 -0
  316. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/scheduling/scheduled-workloads.md +0 -0
  317. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/sessions/claude-code-auto-mode.md +0 -0
  318. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/docs/wiki/sessions/pi.md +0 -0
  319. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/pyproject.toml +0 -0
  320. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/requirements-tts.txt +0 -0
  321. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/templates/launchd/dev.agentwire.mission-dispatcher.plist +0 -0
  322. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/templates/launchd/dev.agentwire.mission-feedback-router.plist +0 -0
  323. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/templates/launchd/dev.agentwire.mission-janitor.plist +0 -0
  324. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/e2e/test_portal_ui.py +0 -0
  325. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/fixtures/sample_agentwire.yml +0 -0
  326. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/fixtures/sample_config.yaml +0 -0
  327. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/fixtures/sample_scheduler.yaml +0 -0
  328. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/integration/test_missions_concurrency.py +0 -0
  329. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/integration/test_scheduler_board.py +0 -0
  330. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_build_agent_command.py +0 -0
  331. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_channels.py +0 -0
  332. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_cli_output.py +0 -0
  333. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_cli_safety.py +0 -0
  334. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_damage_control_hooks.py +0 -0
  335. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_damage_control_sync.py +0 -0
  336. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_file_io.py +0 -0
  337. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_handoff_git_state.py +0 -0
  338. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_handoff_instructions.py +0 -0
  339. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_handoff_parser.py +0 -0
  340. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_handoff_renderer.py +0 -0
  341. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_history.py +0 -0
  342. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_locking.py +0 -0
  343. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_config.py +0 -0
  344. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_dispatcher.py +0 -0
  345. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_eligibility.py +0 -0
  346. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_feedback_router.py +0 -0
  347. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_gc.py +0 -0
  348. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_github.py +0 -0
  349. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_naming.py +0 -0
  350. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_missions_state.py +0 -0
  351. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_overnight_resume_flags.py +0 -0
  352. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_project_config.py +0 -0
  353. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_safety_disabled_rules.py +0 -0
  354. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_safety_escape_hatch.py +0 -0
  355. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_safety_kill_switch.py +0 -0
  356. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_safety_mission_worker.py +0 -0
  357. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_scheduler_parsing.py +0 -0
  358. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_search.py +0 -0
  359. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_server_pure.py +0 -0
  360. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_tasks.py +0 -0
  361. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_templating.py +0 -0
  362. {agentwire_dev-1.30.1 → agentwire_dev-1.31.0}/tests/unit/test_worktree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentwire-dev
3
- Version: 1.30.1
3
+ Version: 1.31.0
4
4
  Summary: Multi-session voice web interface for AI coding agents
5
5
  Project-URL: Homepage, https://agentwire.dev
6
6
  Project-URL: Repository, https://github.com/dotdevdotdev/agentwire-dev
@@ -729,7 +729,7 @@ Description-Content-Type: text/markdown
729
729
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/v/agentwire-dev?color=green" alt="PyPI"></a>
730
730
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
731
731
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
732
- <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/discord/1234567890?color=5865F2&label=discord" alt="Discord"></a>
732
+ <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
733
733
  </p>
734
734
 
735
735
  ---
@@ -748,10 +748,6 @@ Old way: Get up. Walk to computer. Type.
748
748
 
749
749
  Push-to-talk voice control for [Claude Code](https://github.com/anthropics/claude-code) or any AI coding assistant running in tmux.
750
750
 
751
- <p align="center">
752
- <img src="https://agentwire.dev/images/demo.gif" alt="Demo" width="600">
753
- </p>
754
-
755
751
  ```
756
752
  Phone → AgentWire Portal → tmux session → Claude Code
757
753
  🎤 (WebSocket) 📺 🤖
@@ -777,11 +773,15 @@ agentwire generate-certs
777
773
 
778
774
  # Run
779
775
  agentwire portal start
780
- # Open https://localhost:8765
776
+ # Open http://127.0.0.1:8765 in Chrome — voice works immediately
781
777
  ```
782
778
 
783
779
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
784
780
 
781
+ **Honest setup time:** under a minute to a working voice portal (instant mode: Chrome speech in, browser voice out — robotic but real). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
782
+
783
+ > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
784
+
785
785
  <details>
786
786
  <summary><strong>Platform-specific instructions</strong></summary>
787
787
 
@@ -802,6 +802,8 @@ pip install agentwire-dev
802
802
 
803
803
  </details>
804
804
 
805
+ > **tmux config matters.** Default tmux has no mouse scroll, a tiny scrollback, and broken copy UX — see [Recommended tmux config](docs/wiki/quickstart.md#recommended-tmux-config), or let `agentwire init` install it for you.
806
+
805
807
  ---
806
808
 
807
809
  ## Features
@@ -828,13 +830,13 @@ agentwire new -s myproject -p ~/projects/myproject
828
830
  ```
829
831
 
830
832
  **2. Open the portal:**
831
- Visit `https://localhost:8765` on your phone/tablet/laptop
833
+ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access configured)
832
834
 
833
835
  **3. Talk:**
834
- Hold the mic button, speak your request, release. The transcription goes to Claude Code.
836
+ Hold the mic button, speak your request, release. In instant mode the transcript appears for a quick glance — Enter sends it to Claude Code.
835
837
 
836
838
  **4. Listen:**
837
- Agent responses are spoken back via TTS (optional, requires GPU for self-hosted or RunPod).
839
+ Agent responses are spoken back browser voice out of the box, or a real TTS model behind a custom shim.
838
840
 
839
841
  ---
840
842
 
@@ -883,29 +885,33 @@ All decisions logged for audit trails.
883
885
 
884
886
  ## Voice Configuration
885
887
 
886
- **TTS (Text-to-Speech):** Requires GPU. Options:
888
+ Two tiers, both sides:
889
+
890
+ **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, browser speechSynthesis out, OS voice when no browser is connected. No GPU, no models, no certs.
891
+
892
+ **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). The bundled servers are reference shims:
887
893
 
888
894
  ```yaml
889
895
  # ~/.agentwire/config.yaml
890
896
  tts:
891
- backend: "runpod" # Recommended: RunPod serverless
892
- runpod_endpoint_id: "your-endpoint"
893
- runpod_api_key: "your-key"
897
+ backend: "custom"
898
+ url: "http://localhost:8100" # agentwire tts start (kokoro CPU / chatterbox GPU / qwen / zonos)
899
+ options:
900
+ backend: kokoro
901
+ stt:
902
+ backend: "custom"
903
+ url: "http://localhost:8101" # agentwire stt start (moonshine ONNX, CPU)
894
904
  ```
895
905
 
896
- Or self-host with `agentwire tts start` on a GPU machine.
897
-
898
- **STT (Speech-to-Text):** Runs locally via `agentwire stt start`. Uses Moonshine ONNX by default (fast CPU inference, no GPU required), with automatic fallback to faster-whisper. Configure backend in `config.yaml`.
906
+ Shims can declare capabilities (emotion tags, style instructions) via `GET /capabilities` — agentwire injects the shim's `tool_prompt` into the agent's `say` tooldef so agents actually use them.
899
907
 
900
908
  <details>
901
- <summary><strong>Disable voice (text-only mode)</strong></summary>
902
-
903
- ```yaml
904
- tts:
905
- backend: "none"
906
- ```
909
+ <summary><strong>Prefer text-only?</strong></summary>
907
910
 
908
- You can still use the portal for session management without voice.
911
+ Instant mode already needs nothing just don't press the mic. Agent speech
912
+ plays through the browser; mute the tab (or close it — with no browser
913
+ connected the OS voice handles notifications, which you can silence at the
914
+ system level).
909
915
 
910
916
  </details>
911
917
 
@@ -983,7 +989,7 @@ Quick links:
983
989
  - [Troubleshooting](docs/wiki/internals/troubleshooting.md)
984
990
  - [Portal API](docs/wiki/internals/portal.md)
985
991
  - [Remote Machines](docs/wiki/deployment/remote-machines.md)
986
- - [RunPod TTS](docs/wiki/tts/runpod-tts.md) · [Self-Hosted TTS](docs/wiki/tts/tts-self-hosted.md)
992
+ - [Voice Shim Contract](docs/wiki/voice/shim-contract.md) · [Self-Hosted TTS](docs/wiki/voice/tts-self-hosted.md)
987
993
  - [Safety Hooks](docs/wiki/internals/damage-control.md)
988
994
 
989
995
  ---
@@ -10,7 +10,7 @@
10
10
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/v/agentwire-dev?color=green" alt="PyPI"></a>
11
11
  <a href="https://pypi.org/project/agentwire-dev/"><img src="https://img.shields.io/pypi/pyversions/agentwire-dev" alt="Python"></a>
12
12
  <a href="https://github.com/dotdevdotdev/agentwire-dev/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dotdevdotdev/agentwire-dev" alt="License"></a>
13
- <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/discord/1234567890?color=5865F2&label=discord" alt="Discord"></a>
13
+ <a href="https://discord.gg/bspFZNTdUr"><img src="https://img.shields.io/badge/discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
14
14
  </p>
15
15
 
16
16
  ---
@@ -29,10 +29,6 @@ Old way: Get up. Walk to computer. Type.
29
29
 
30
30
  Push-to-talk voice control for [Claude Code](https://github.com/anthropics/claude-code) or any AI coding assistant running in tmux.
31
31
 
32
- <p align="center">
33
- <img src="https://agentwire.dev/images/demo.gif" alt="Demo" width="600">
34
- </p>
35
-
36
32
  ```
37
33
  Phone → AgentWire Portal → tmux session → Claude Code
38
34
  🎤 (WebSocket) 📺 🤖
@@ -58,11 +54,15 @@ agentwire generate-certs
58
54
 
59
55
  # Run
60
56
  agentwire portal start
61
- # Open https://localhost:8765
57
+ # Open http://127.0.0.1:8765 in Chrome — voice works immediately
62
58
  ```
63
59
 
64
60
  **Requirements:** Python 3.10+, tmux, ffmpeg, Claude Code
65
61
 
62
+ **Honest setup time:** under a minute to a working voice portal (instant mode: Chrome speech in, browser voice out — robotic but real). ~15 minutes for the full experience: cloned voices via a self-hosted TTS shim, Whisper-grade transcription, phone-from-anywhere (certs + token).
63
+
64
+ > **Network & trust model.** The portal binds `127.0.0.1` by default — local only. To use it from your phone, set `server.host: 0.0.0.0` in `~/.agentwire/config.yaml`. Non-loopback binds require an auth token (auto-generated on first start; print it with `agentwire portal token`) — your phone prompts for it once, then remembers it. Origin checks reject cross-site browser requests on every bind. Still: keep it on a trusted LAN. Never port-forward it or run it on a public-facing VPS — for internet access use Cloudflare Tunnel + Zero Trust. Details in [SECURITY.md](SECURITY.md).
65
+
66
66
  <details>
67
67
  <summary><strong>Platform-specific instructions</strong></summary>
68
68
 
@@ -83,6 +83,8 @@ pip install agentwire-dev
83
83
 
84
84
  </details>
85
85
 
86
+ > **tmux config matters.** Default tmux has no mouse scroll, a tiny scrollback, and broken copy UX — see [Recommended tmux config](docs/wiki/quickstart.md#recommended-tmux-config), or let `agentwire init` install it for you.
87
+
86
88
  ---
87
89
 
88
90
  ## Features
@@ -109,13 +111,13 @@ agentwire new -s myproject -p ~/projects/myproject
109
111
  ```
110
112
 
111
113
  **2. Open the portal:**
112
- Visit `https://localhost:8765` on your phone/tablet/laptop
114
+ Visit `http://127.0.0.1:8765` in Chrome (or your phone/tablet with LAN access configured)
113
115
 
114
116
  **3. Talk:**
115
- Hold the mic button, speak your request, release. The transcription goes to Claude Code.
117
+ Hold the mic button, speak your request, release. In instant mode the transcript appears for a quick glance — Enter sends it to Claude Code.
116
118
 
117
119
  **4. Listen:**
118
- Agent responses are spoken back via TTS (optional, requires GPU for self-hosted or RunPod).
120
+ Agent responses are spoken back browser voice out of the box, or a real TTS model behind a custom shim.
119
121
 
120
122
  ---
121
123
 
@@ -164,29 +166,33 @@ All decisions logged for audit trails.
164
166
 
165
167
  ## Voice Configuration
166
168
 
167
- **TTS (Text-to-Speech):** Requires GPU. Options:
169
+ Two tiers, both sides:
170
+
171
+ **`default` (zero setup, what a fresh install gets):** Chrome speech recognition in, browser speechSynthesis out, OS voice when no browser is connected. No GPU, no models, no certs.
172
+
173
+ **`custom` (bring your own model):** any HTTP shim implementing the [voice shim contract](docs/wiki/voice/shim-contract.md) — ~30 lines wraps anything (Deepgram, whisper.cpp, an expressive emotion-tag model). The bundled servers are reference shims:
168
174
 
169
175
  ```yaml
170
176
  # ~/.agentwire/config.yaml
171
177
  tts:
172
- backend: "runpod" # Recommended: RunPod serverless
173
- runpod_endpoint_id: "your-endpoint"
174
- runpod_api_key: "your-key"
178
+ backend: "custom"
179
+ url: "http://localhost:8100" # agentwire tts start (kokoro CPU / chatterbox GPU / qwen / zonos)
180
+ options:
181
+ backend: kokoro
182
+ stt:
183
+ backend: "custom"
184
+ url: "http://localhost:8101" # agentwire stt start (moonshine ONNX, CPU)
175
185
  ```
176
186
 
177
- Or self-host with `agentwire tts start` on a GPU machine.
178
-
179
- **STT (Speech-to-Text):** Runs locally via `agentwire stt start`. Uses Moonshine ONNX by default (fast CPU inference, no GPU required), with automatic fallback to faster-whisper. Configure backend in `config.yaml`.
187
+ Shims can declare capabilities (emotion tags, style instructions) via `GET /capabilities` — agentwire injects the shim's `tool_prompt` into the agent's `say` tooldef so agents actually use them.
180
188
 
181
189
  <details>
182
- <summary><strong>Disable voice (text-only mode)</strong></summary>
183
-
184
- ```yaml
185
- tts:
186
- backend: "none"
187
- ```
190
+ <summary><strong>Prefer text-only?</strong></summary>
188
191
 
189
- You can still use the portal for session management without voice.
192
+ Instant mode already needs nothing just don't press the mic. Agent speech
193
+ plays through the browser; mute the tab (or close it — with no browser
194
+ connected the OS voice handles notifications, which you can silence at the
195
+ system level).
190
196
 
191
197
  </details>
192
198
 
@@ -264,7 +270,7 @@ Quick links:
264
270
  - [Troubleshooting](docs/wiki/internals/troubleshooting.md)
265
271
  - [Portal API](docs/wiki/internals/portal.md)
266
272
  - [Remote Machines](docs/wiki/deployment/remote-machines.md)
267
- - [RunPod TTS](docs/wiki/tts/runpod-tts.md) · [Self-Hosted TTS](docs/wiki/tts/tts-self-hosted.md)
273
+ - [Voice Shim Contract](docs/wiki/voice/shim-contract.md) · [Self-Hosted TTS](docs/wiki/voice/tts-self-hosted.md)
268
274
  - [Safety Hooks](docs/wiki/internals/damage-control.md)
269
275
 
270
276
  ---
@@ -0,0 +1,63 @@
1
+ # Security Policy
2
+
3
+ ## Reporting a Vulnerability
4
+
5
+ If you discover a security vulnerability in AgentWire, please report it privately.
6
+
7
+ **Do NOT open a public GitHub issue for security vulnerabilities.**
8
+
9
+ ### How to Report
10
+
11
+ Email: security@agentwire.dev
12
+
13
+ Include:
14
+ - Description of the vulnerability
15
+ - Steps to reproduce
16
+ - Potential impact
17
+ - Any suggested fixes (optional)
18
+
19
+ ### What to Expect
20
+
21
+ - **Acknowledgment:** Within 48 hours
22
+ - **Initial Assessment:** Within 1 week
23
+ - **Resolution Timeline:** Depends on severity, typically 30-90 days
24
+
25
+ ### Scope
26
+
27
+ This security policy applies to:
28
+ - The AgentWire CLI (`agentwire` command)
29
+ - The AgentWire portal (web interface)
30
+ - Official AgentWire packages on PyPI
31
+
32
+ ### Out of Scope
33
+
34
+ - Third-party dependencies (report to their maintainers)
35
+ - Self-hosted TTS/STT servers
36
+ - User misconfiguration
37
+
38
+ ## Security Features
39
+
40
+ AgentWire includes built-in security features:
41
+
42
+ - **Damage Control Hooks:** Block 300+ dangerous command patterns
43
+ - **Path Protection:** Prevent access to sensitive files (.env, SSH keys, credentials)
44
+ - **Audit Logging:** All blocked operations are logged
45
+
46
+ See `docs/wiki/internals/damage-control.md` for details.
47
+
48
+ ## Trust Model
49
+
50
+ The portal enforces two security layers in-process:
51
+
52
+ 1. **Origin validation (always on).** Every state-changing request (POST/PUT/DELETE/PATCH) and WebSocket upgrade with an `Origin` header must match the portal's own origin, a localhost equivalent, or an entry in `server.allowed_origins` (exact `scheme://host[:port]` strings — needed when fronting with Cloudflare Tunnel, where the browser's origin is the tunnel domain). Mismatches get a 403 and a log line. Requests without an Origin header (curl, CLI, scripts) pass — CSRF is a browser vector. This protects loopback-only users from malicious pages firing cross-site requests at `localhost:8765`.
53
+
54
+ 2. **Bearer-token auth (required for non-loopback binds).** The portal binds `127.0.0.1:8765` by default — local only. Binding anything else (`0.0.0.0`, a LAN IP) auto-generates a token at `~/.agentwire/portal.token` (mode 0600) and requires it on every request outside the public bootstrap surface (`GET /`, `/health`, `/static/*`): `Authorization: Bearer <token>` on HTTP, `agentwire.bearer.<token>` WebSocket subprotocol. The portal **refuses to start** on a non-loopback bind with auth explicitly disabled. Print the token with `agentwire portal token`; rotate with `--rotate`. Browsers prompt once per device and store it in localStorage.
55
+
56
+ Token configuration (`server.auth_token` in `~/.agentwire/config.yaml`): unset = use the token file (auto-generated); any string = explicit override; `""` = auth disabled, allowed only on loopback binds. Tokens are compared constant-time and redacted from the config served to the portal's config editor.
57
+
58
+ What this means in practice:
59
+
60
+ - **LAN exposure (`server.host: 0.0.0.0`) is protected by the token.** Someone on your network who can reach the port gets 401s until they present it. Treat the token like a password; rotate it if a device is lost.
61
+ - **Do not expose the portal directly to the public internet.** Token auth raises the bar on a trusted LAN; it is not a substitute for identity, MFA, audit, and revocation. For anything internet-facing, front it with **Cloudflare Tunnel + Zero Trust** (see `docs/wiki/deployment/remote-access.md`) and add your tunnel domain to `server.allowed_origins`.
62
+ - **Project deletion via `/api/projects/delete`** validates the path is absolute, contains no `..`, contains no shell metacharacters, and is not in a protected list. Local execution uses argv form (no shell); SSH execution uses `shlex.quote` per argument. These mitigations reduce blast radius if the perimeter fails.
63
+ - **Self-hosted TTS/STT servers are a separate trust domain** — they have no auth of their own and are out of scope here.
@@ -1,3 +1,3 @@
1
1
  """AgentWire - Multi-session voice web interface for AI coding agents."""
2
2
 
3
- __version__ = "1.30.1"
3
+ __version__ = "1.31.0"