overcode 0.5.6__tar.gz → 0.5.8__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 (259) hide show
  1. {overcode-0.5.6 → overcode-0.5.8}/MANIFEST.in +1 -0
  2. {overcode-0.5.6/src/overcode.egg-info → overcode-0.5.8}/PKG-INFO +3 -1
  3. {overcode-0.5.6 → overcode-0.5.8}/README.md +2 -0
  4. overcode-0.5.8/docs/README.md +23 -0
  5. overcode-0.5.8/docs/advanced-features.md +640 -0
  6. overcode-0.5.8/docs/architecture.md +461 -0
  7. overcode-0.5.8/docs/backends.md +1795 -0
  8. overcode-0.5.8/docs/claude-session-files.md +125 -0
  9. overcode-0.5.8/docs/cli-reference.md +759 -0
  10. overcode-0.5.8/docs/configuration.md +731 -0
  11. overcode-0.5.8/docs/design/483-484/00_overview.md +56 -0
  12. overcode-0.5.8/docs/design/483-484/01_usage_log.md +183 -0
  13. overcode-0.5.8/docs/design/483-484/02_learning_journey.md +205 -0
  14. overcode-0.5.8/docs/design/483-484/03_overagent.md +181 -0
  15. overcode-0.5.8/docs/design/483-484/04_phasing_and_questions.md +74 -0
  16. overcode-0.5.8/docs/design/README.md +79 -0
  17. overcode-0.5.8/docs/design/acp-agent-integration-analysis.md +475 -0
  18. overcode-0.5.8/docs/design/agent-agnostic-backends-opencode.md +427 -0
  19. overcode-0.5.8/docs/design/agent-backend-hermes.md +207 -0
  20. overcode-0.5.8/docs/design/agent-backends-codex-grok.md +1288 -0
  21. overcode-0.5.8/docs/design/background-shell-classification.md +103 -0
  22. overcode-0.5.8/docs/design/bakeoffs/README.md +28 -0
  23. overcode-0.5.8/docs/design/bakeoffs/SYNTHESIS.md +483 -0
  24. overcode-0.5.8/docs/design/bakeoffs/candidates.md +271 -0
  25. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-bernstein.md +331 -0
  26. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-bobbit.md +407 -0
  27. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-ccmanager.md +348 -0
  28. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-claude-squad.md +300 -0
  29. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-cmux.md +316 -0
  30. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-composio.md +289 -0
  31. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-dmux.md +185 -0
  32. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-gastown.md +421 -0
  33. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-kagan.md +385 -0
  34. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-orca.md +291 -0
  35. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-superset.md +318 -0
  36. overcode-0.5.8/docs/design/bakeoffs/overcode-vs-vibe-kanban.md +408 -0
  37. overcode-0.5.8/docs/design/bakeoffs/zellij-vs-tmux.md +333 -0
  38. overcode-0.5.8/docs/design/e2e-devcontainer-testing.md +308 -0
  39. overcode-0.5.8/docs/design/model-alias-resolution.md +214 -0
  40. overcode-0.5.8/docs/design/opencode-stats-reader-performance.md +280 -0
  41. overcode-0.5.8/docs/design/scaling-audit-2026-09-22.md +891 -0
  42. overcode-0.5.8/docs/getting-started.md +191 -0
  43. overcode-0.5.8/docs/release-notes-0.3.0.md +60 -0
  44. overcode-0.5.8/docs/release-notes-0.4.2.md +39 -0
  45. overcode-0.5.8/docs/release-notes-0.5.1.md +48 -0
  46. overcode-0.5.8/docs/release-notes-0.5.2.md +7 -0
  47. overcode-0.5.8/docs/release-notes-0.5.3.md +85 -0
  48. overcode-0.5.8/docs/release-notes-0.5.4.md +40 -0
  49. overcode-0.5.8/docs/release-notes-0.5.5.md +8 -0
  50. overcode-0.5.8/docs/release-notes-0.5.6.md +6 -0
  51. overcode-0.5.8/docs/release-notes-0.5.7.md +5 -0
  52. overcode-0.5.8/docs/release-notes-0.5.8.md +8 -0
  53. overcode-0.5.8/docs/skill-profiles.md +117 -0
  54. overcode-0.5.8/docs/tui-guide.md +329 -0
  55. overcode-0.5.8/docs/tui-refactoring-plan.md +353 -0
  56. overcode-0.5.8/docs/ux-performance-analysis-2026-03-09.md +207 -0
  57. overcode-0.5.8/docs/wrappers.md +179 -0
  58. {overcode-0.5.6 → overcode-0.5.8}/pyproject.toml +3 -1
  59. overcode-0.5.8/setup.py +32 -0
  60. overcode-0.5.8/src/overcode/activity_log.py +526 -0
  61. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/__init__.py +6 -0
  62. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/base.py +7 -1
  63. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/claude_code.py +13 -1
  64. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/codex_stats.py +13 -0
  65. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/grok_stats.py +12 -6
  66. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/hermes_stats.py +21 -0
  67. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode.py +21 -4
  68. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode2_stats.py +54 -16
  69. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode_stats.py +153 -12
  70. overcode-0.5.8/src/overcode/backends/overagent.py +53 -0
  71. overcode-0.5.8/src/overcode/backends/shell.py +286 -0
  72. overcode-0.5.8/src/overcode/bundled_skills.py +155 -0
  73. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/__init__.py +5 -0
  74. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/_shared.py +31 -1
  75. overcode-0.5.8/src/overcode/cli/activity.py +164 -0
  76. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/agent.py +63 -6
  77. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/config.py +0 -1
  78. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/doctor.py +11 -0
  79. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/jobs.py +3 -0
  80. overcode-0.5.8/src/overcode/cli/keys.py +178 -0
  81. overcode-0.5.8/src/overcode/cli/lifecycle.py +168 -0
  82. overcode-0.5.8/src/overcode/cli/skill_profiles.py +299 -0
  83. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/split.py +24 -1
  84. overcode-0.5.8/src/overcode/cli/view.py +243 -0
  85. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/command_palette.py +56 -4
  86. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/config.py +1 -0
  87. overcode-0.5.8/src/overcode/data/keymaps/default.yaml +10 -0
  88. overcode-0.5.8/src/overcode/data/keymaps/vscode.yaml +83 -0
  89. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/doctor.py +6 -2
  90. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/hermes_plugin/__init__.py +4 -2
  91. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/history_reader.py +33 -0
  92. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/hook_handler.py +381 -30
  93. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/hook_status_detector.py +142 -1
  94. overcode-0.5.8/src/overcode/journey.py +654 -0
  95. overcode-0.5.8/src/overcode/keymap.py +672 -0
  96. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/launcher.py +109 -3
  97. overcode-0.5.8/src/overcode/lifecycle.py +494 -0
  98. overcode-0.5.8/src/overcode/mentor.py +213 -0
  99. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/monitor_daemon.py +50 -14
  100. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/monitor_daemon_state.py +2 -0
  101. overcode-0.5.8/src/overcode/overagent.py +305 -0
  102. overcode-0.5.8/src/overcode/prompt_lab.py +182 -0
  103. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/session_manager.py +224 -5
  104. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/settings.py +5 -1
  105. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/sister_poller.py +2 -0
  106. overcode-0.5.8/src/overcode/skill_library.py +593 -0
  107. overcode-0.5.8/src/overcode/spawn.py +72 -0
  108. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/ssh_provisioner.py +11 -5
  109. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/stats_reader.py +70 -0
  110. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/status_constants.py +29 -2
  111. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/status_detector_factory.py +31 -4
  112. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/status_patterns.py +24 -3
  113. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/summarizer_client.py +19 -49
  114. overcode-0.5.8/src/overcode/summarizer_prompts.py +189 -0
  115. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/summary_columns.py +262 -8
  116. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/supervisor_daemon.py +2 -0
  117. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/supervisor_daemon_core.py +7 -1
  118. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tmux_manager.py +20 -0
  119. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tmux_utils.py +6 -1
  120. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/transcript_index.py +17 -2
  121. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui.py +309 -46
  122. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui.tcss +23 -168
  123. overcode-0.5.8/src/overcode/tui_actions/activity.py +232 -0
  124. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/daemon.py +58 -0
  125. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/input.py +10 -4
  126. overcode-0.5.8/src/overcode/tui_actions/mentor.py +150 -0
  127. overcode-0.5.8/src/overcode/tui_actions/overagent.py +152 -0
  128. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/session.py +74 -0
  129. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/view.py +34 -3
  130. overcode-0.5.8/src/overcode/tui_actions/view_control.py +303 -0
  131. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_helpers.py +4 -4
  132. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_logic.py +46 -0
  133. overcode-0.5.8/src/overcode/tui_theme.py +260 -0
  134. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/__init__.py +6 -0
  135. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/agent_select_modal.py +19 -17
  136. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/command_bar.py +32 -6
  137. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/command_palette.py +56 -74
  138. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/daemon_status_bar.py +11 -2
  139. overcode-0.5.8/src/overcode/tui_widgets/dialog_style.py +194 -0
  140. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/fullscreen_preview.py +4 -0
  141. overcode-0.5.8/src/overcode/tui_widgets/help_overlay.py +450 -0
  142. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/instruction_history_modal.py +26 -28
  143. overcode-0.5.8/src/overcode/tui_widgets/journey_panel.py +218 -0
  144. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/modal_base.py +51 -6
  145. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/new_agent_defaults_modal.py +45 -26
  146. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/new_agent_modal.py +70 -53
  147. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/passthru_config_modal.py +27 -35
  148. overcode-0.5.8/src/overcode/tui_widgets/preview_pane.py +259 -0
  149. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/rename_agent_modal.py +29 -35
  150. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/session_summary.py +69 -3
  151. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/sister_selection_modal.py +37 -42
  152. overcode-0.5.8/src/overcode/tui_widgets/skills_modal.py +318 -0
  153. overcode-0.5.8/src/overcode/tui_widgets/summary_config_modal.py +451 -0
  154. overcode-0.5.8/src/overcode/tui_widgets/summary_prompt_lab.py +393 -0
  155. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/tmux_config_modal.py +19 -22
  156. overcode-0.5.8/src/overcode/usage_analytics.py +437 -0
  157. overcode-0.5.8/src/overcode/view_control.py +205 -0
  158. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_api.py +2 -0
  159. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_control_api.py +48 -0
  160. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_server.py +6 -0
  161. {overcode-0.5.6 → overcode-0.5.8/src/overcode.egg-info}/PKG-INFO +3 -1
  162. {overcode-0.5.6 → overcode-0.5.8}/src/overcode.egg-info/SOURCES.txt +85 -0
  163. overcode-0.5.6/src/overcode/bundled_skills.py +0 -287
  164. overcode-0.5.6/src/overcode/tui_widgets/help_overlay.py +0 -241
  165. overcode-0.5.6/src/overcode/tui_widgets/preview_pane.py +0 -156
  166. overcode-0.5.6/src/overcode/tui_widgets/summary_config_modal.py +0 -357
  167. {overcode-0.5.6 → overcode-0.5.8}/LICENSE +0 -0
  168. {overcode-0.5.6 → overcode-0.5.8}/setup.cfg +0 -0
  169. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/__init__.py +0 -0
  170. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/agent_scanner.py +0 -0
  171. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/codex.py +0 -0
  172. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/grok.py +0 -0
  173. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/hermes.py +0 -0
  174. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode2.py +0 -0
  175. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode2_patterns.py +0 -0
  176. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/backends/opencode2_plugin_install.py +0 -0
  177. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/claude_config.py +0 -0
  178. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/claude_pid.py +0 -0
  179. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/__main__.py +0 -0
  180. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/budget.py +0 -0
  181. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/daemon.py +0 -0
  182. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/focal.py +0 -0
  183. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/hooks.py +0 -0
  184. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/models.py +0 -0
  185. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/monitoring.py +0 -0
  186. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/parallelism.py +0 -0
  187. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/perms.py +0 -0
  188. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/sister.py +0 -0
  189. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/skills.py +0 -0
  190. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/tags.py +0 -0
  191. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/cli/wrappers.py +0 -0
  192. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/daemon_claude_skill.md +0 -0
  193. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/daemon_logging.py +0 -0
  194. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/daemon_utils.py +0 -0
  195. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/data/model_metadata.json +0 -0
  196. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/data_export.py +0 -0
  197. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/dependency_check.py +0 -0
  198. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/duration.py +0 -0
  199. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/entrypoint.py +0 -0
  200. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/exceptions.py +0 -0
  201. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/follow_mode.py +0 -0
  202. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/hermes_plugin/plugin.yaml +0 -0
  203. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/implementations.py +0 -0
  204. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/interfaces.py +0 -0
  205. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/job_launcher.py +0 -0
  206. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/job_manager.py +0 -0
  207. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/logging_config.py +0 -0
  208. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/mocks.py +0 -0
  209. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/model_metadata.py +0 -0
  210. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/monitor_daemon_core.py +0 -0
  211. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/notifier.py +0 -0
  212. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/opencode_plugin/overcode-telemetry-v2/index.js +0 -0
  213. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/opencode_plugin/overcode-telemetry-v2/overcode-telemetry-core.mjs +0 -0
  214. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/opencode_plugin/overcode-telemetry-v2/tui.js +0 -0
  215. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/opencode_plugin/overcode-telemetry.js +0 -0
  216. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/pane_capture_gate.py +0 -0
  217. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/pid_utils.py +0 -0
  218. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/presence_logger.py +0 -0
  219. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/pricing.py +0 -0
  220. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/process_resources.py +0 -0
  221. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/protocols.py +0 -0
  222. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/sandbox_detect.py +0 -0
  223. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/sister_controller.py +0 -0
  224. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/standing_instructions.py +0 -0
  225. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/stat_gate.py +0 -0
  226. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/status_detector.py +0 -0
  227. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/status_history.py +0 -0
  228. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/summarizer_component.py +0 -0
  229. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/summary_groups.py +0 -0
  230. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/supervisor_layout.sh +0 -0
  231. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/testing/__init__.py +0 -0
  232. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/testing/renderer.py +0 -0
  233. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/testing/tmux_driver.py +0 -0
  234. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/testing/tui_eye.py +0 -0
  235. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/testing/tui_eye_skill.md +0 -0
  236. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/time_context.py +0 -0
  237. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/__init__.py +0 -0
  238. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_actions/navigation.py +0 -0
  239. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_render.py +0 -0
  240. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/column_header.py +0 -0
  241. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/daemon_panel.py +0 -0
  242. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/job_summary.py +0 -0
  243. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/jump_modal.py +0 -0
  244. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/status_timeline.py +0 -0
  245. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/tui_widgets/tui_log_panel.py +0 -0
  246. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/usage_monitor.py +0 -0
  247. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web/__init__.py +0 -0
  248. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web/templates/analytics.html +0 -0
  249. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web/templates/dashboard.html +0 -0
  250. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_chartjs.py +0 -0
  251. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_server_runner.py +0 -0
  252. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/web_templates.py +0 -0
  253. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/worker_guard.py +0 -0
  254. {overcode-0.5.6 → overcode-0.5.8}/src/overcode/wrapper.py +0 -0
  255. {overcode-0.5.6 → overcode-0.5.8}/src/overcode.egg-info/dependency_links.txt +0 -0
  256. {overcode-0.5.6 → overcode-0.5.8}/src/overcode.egg-info/entry_points.txt +0 -0
  257. {overcode-0.5.6 → overcode-0.5.8}/src/overcode.egg-info/requires.txt +0 -0
  258. {overcode-0.5.6 → overcode-0.5.8}/src/overcode.egg-info/top_level.txt +0 -0
  259. {overcode-0.5.6 → overcode-0.5.8}/tests/test_e2e_multi_agent_jokes.py +0 -0
@@ -1,3 +1,4 @@
1
1
  include LICENSE
2
2
  include README.md
3
3
  recursive-include src/overcode *.md *.sh *.js *.mjs *.json *.yaml
4
+ recursive-include docs *.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: overcode
3
- Version: 0.5.6
3
+ Version: 0.5.8
4
4
  Summary: A supervisor for managing multiple Claude Code instances in tmux
5
5
  Author: Mike Bond
6
6
  Project-URL: Homepage, https://github.com/mkb23/overcode
@@ -111,6 +111,7 @@ The TUI displays all agents with live status updates, showing:
111
111
  - **Agent hierarchy** - parent/child delegation with follow mode and reporting
112
112
  - **Cost budgets** - per-agent spending limits with automatic enforcement
113
113
  - **Sleep mode** - pause agents and exclude them from stats
114
+ - **Shutdown and revive**: `overcode shutdown` stops agents, jobs, daemons and tmux sessions and keeps the agent records. After a reboot, `overcode revive --all` brings the agents back with their conversations.
114
115
 
115
116
  ### Supervisor Daemon
116
117
  An optional Claude-powered orchestrator that:
@@ -168,6 +169,7 @@ Aggregate agents from multiple machines into one dashboard:
168
169
  | `q` | Quit (or detach in tmux split) |
169
170
 
170
171
  See the [TUI Guide](docs/tui-guide.md) for all keyboard shortcuts.
172
+ Every key can be remapped, and a `vscode` preset avoids the keys VSCode's terminal swallows: `overcode keys --use vscode` (see [Configuration → Keybindings](docs/configuration.md#keybindings)).
171
173
 
172
174
  ## Documentation
173
175
 
@@ -69,6 +69,7 @@ The TUI displays all agents with live status updates, showing:
69
69
  - **Agent hierarchy** - parent/child delegation with follow mode and reporting
70
70
  - **Cost budgets** - per-agent spending limits with automatic enforcement
71
71
  - **Sleep mode** - pause agents and exclude them from stats
72
+ - **Shutdown and revive**: `overcode shutdown` stops agents, jobs, daemons and tmux sessions and keeps the agent records. After a reboot, `overcode revive --all` brings the agents back with their conversations.
72
73
 
73
74
  ### Supervisor Daemon
74
75
  An optional Claude-powered orchestrator that:
@@ -126,6 +127,7 @@ Aggregate agents from multiple machines into one dashboard:
126
127
  | `q` | Quit (or detach in tmux split) |
127
128
 
128
129
  See the [TUI Guide](docs/tui-guide.md) for all keyboard shortcuts.
130
+ Every key can be remapped, and a `vscode` preset avoids the keys VSCode's terminal swallows: `overcode keys --use vscode` (see [Configuration → Keybindings](docs/configuration.md#keybindings)).
129
131
 
130
132
  ## Documentation
131
133
 
@@ -0,0 +1,23 @@
1
+ # Overcode Documentation
2
+
3
+ Welcome to the overcode documentation. Overcode is a TUI supervisor for managing multiple coding agents (Claude Code, opencode, Codex, Grok) in tmux.
4
+
5
+ ## Guides
6
+
7
+ | Guide | Description |
8
+ |-------|-------------|
9
+ | [Getting Started](getting-started.md) | Installation, prerequisites, and launching your first agent |
10
+ | [TUI Guide](tui-guide.md) | Keyboard shortcuts, display modes, and navigation |
11
+ | [CLI Reference](cli-reference.md) | Complete reference for all commands and options |
12
+ | [Configuration](configuration.md) | Config file, environment variables, and presets |
13
+ | [Advanced Features](advanced-features.md) | Sleep mode, remote monitoring, and more |
14
+ | [Skill Profiles](skill-profiles.md) | Named sets of skills switched on per agent, instead of always on |
15
+ | [Agent Backends](backends.md) | Running opencode/Codex/Grok agents; support matrix and flag mapping |
16
+ | [Claude Session Files](claude-session-files.md) | How token counting and cost estimation works internally |
17
+
18
+ ## Quick Links
19
+
20
+ - **New to overcode?** Start with [Getting Started](getting-started.md)
21
+ - **Looking for a keyboard shortcut?** See the [TUI Guide](tui-guide.md)
22
+ - **Need a command reference?** Check [CLI Reference](cli-reference.md)
23
+ - **Want to customize?** Read [Configuration](configuration.md)
@@ -0,0 +1,640 @@
1
+ # Advanced Features
2
+
3
+ This guide covers overcode's advanced capabilities for power users.
4
+
5
+ ## Sleep Mode
6
+
7
+ Sleep mode lets you pause agents and exclude them from statistics.
8
+
9
+ ### How It Works
10
+
11
+ 1. Press `z` on an agent to toggle sleep mode
12
+ 2. Sleeping agents show a grey/sleepy indicator (💤)
13
+ 3. They're excluded from:
14
+ - Green time calculations
15
+ - Cost summaries
16
+ - Supervisor oversight
17
+ 4. Press `Z` to hide sleeping agents from the list entirely
18
+
19
+ ### Use Cases
20
+
21
+ - **Focus time**: Sleep agents you're not actively monitoring
22
+ - **Pause without killing**: Keep agent state but stop activity
23
+ - **Clean metrics**: Exclude agents from efficiency calculations
24
+
25
+ ### Constraints
26
+
27
+ - **Cannot sleep running agents**: If Claude is actively working, you must wait for it to pause before sleeping. This prevents accidentally ignoring an agent mid-task.
28
+
29
+ ## Agent Priority & Sorting
30
+
31
+ Organize agents by importance with priority values.
32
+
33
+ ### Setting Priority
34
+
35
+ 1. Press `V` on an agent to edit its value
36
+ 2. Default is 1000; higher = more important
37
+ 3. Press `S` to cycle sort modes until you reach "value" sorting
38
+
39
+ ### Sort Modes
40
+
41
+ | Mode | Description |
42
+ |------|-------------|
43
+ | Alphabetical | Sort by agent name |
44
+ | Status | Red (stalled) first, then yellow, orange, green |
45
+ | Value | Highest priority values first |
46
+ | Tree | Parent/child hierarchy with tree connectors |
47
+
48
+ ### CLI Access
49
+
50
+ ```bash
51
+ overcode set-value my-agent 2000 # High priority
52
+ overcode set-value cleanup-bot 100 # Low priority
53
+ ```
54
+
55
+ ## Heartbeat
56
+
57
+ Heartbeat sends a periodic instruction to an agent, keeping it working even when it stalls at a prompt or finishes a task.
58
+
59
+ ### Setting Up
60
+
61
+ 1. Select an agent and press `H`
62
+ 2. Enter a frequency (e.g., `5m`, `1h`, `300`)
63
+ 3. Enter the instruction to send at each heartbeat (e.g., "continue working on the task")
64
+
65
+ The agent will receive the instruction at the configured interval whenever it's not actively running.
66
+
67
+ ### How It Works
68
+
69
+ - The monitor daemon checks heartbeat timers every loop (~10s)
70
+ - If the agent is idle and the heartbeat interval has elapsed, the instruction is sent to the agent's tmux window
71
+ - The agent starts working as if a user typed the instruction
72
+ - Heartbeat timing resets after each send
73
+
74
+ ### Pausing
75
+
76
+ Press `H` and enter `off` to disable heartbeat. The configuration is preserved — re-enable with `H` and a new frequency.
77
+
78
+ ### Interaction with Cost Budgets
79
+
80
+ When an agent exceeds its cost budget, heartbeats are **silently skipped**. The heartbeat configuration stays intact — nothing is disabled or modified. Once the budget is raised or cleared, heartbeats resume automatically on the next daemon loop.
81
+
82
+ This prevents runaway spending: an agent can't burn through budget indefinitely via heartbeat-driven work.
83
+
84
+ ### Interaction with Sleep Mode
85
+
86
+ Sleeping agents also skip heartbeats. Wake the agent with `z` to resume.
87
+
88
+ ## Cost Budgets
89
+
90
+ Set a spending limit on individual agents to manage usage.
91
+
92
+ ### Setting a Budget
93
+
94
+ **At launch** (preferred):
95
+ ```bash
96
+ overcode launch -n my-agent --budget 5.00 -p "..."
97
+ ```
98
+ If launched as a child agent, the budget is automatically deducted from the parent's budget. If the parent has an unlimited budget (0), the child gets the budget without any parent deduction.
99
+
100
+ **TUI**: Select an agent and press `B`, enter a dollar amount (e.g., `5.00`). Enter `0` to clear.
101
+
102
+ **CLI** (post-launch):
103
+ ```bash
104
+ overcode budget set my-agent 5.00 # $5 budget
105
+ overcode budget set my-agent 0 # Clear budget
106
+ ```
107
+
108
+ ### Display
109
+
110
+ When `show_cost` is enabled (`$` key), agents with budgets show `$cost/$budget` instead of just `$cost`:
111
+ - **Orange** — under 80% of budget
112
+ - **Yellow** — 80-99% of budget
113
+ - **Red** — budget exceeded
114
+
115
+ The `overcode show <agent>` command also displays the budget on the Cost line.
116
+
117
+ ### What Happens When Budget Is Exceeded
118
+
119
+ Budget enforcement is **soft** — the agent is not killed or put to sleep. Instead:
120
+
121
+ 1. **Heartbeats are skipped** — the agent won't receive periodic instructions, so it naturally stops when it finishes its current work or hits a permission prompt
122
+ 2. **Supervision is skipped** — the supervisor daemon won't launch a daemon Claude to approve prompts or steer the agent
123
+
124
+ The agent can still finish whatever it's currently doing. It just won't receive any more automated nudges.
125
+
126
+ ### Resuming After Budget
127
+
128
+ To continue past a budget, either raise it or clear it:
129
+
130
+ ```bash
131
+ overcode set-budget my-agent 10.00 # Raise to $10
132
+ overcode set-budget my-agent 0 # Remove limit entirely
133
+ ```
134
+
135
+ Heartbeats and supervision resume automatically on the next daemon loop (~10s).
136
+
137
+ ### No Global Default
138
+
139
+ Budgets are per-agent only. There is no global default budget in config.
140
+
141
+ ## Agent Hierarchy
142
+
143
+ Agents can spawn child agents, creating a parent/child tree. This enables delegation patterns where a parent agent launches children to handle subtasks.
144
+
145
+ ### Launching Child Agents
146
+
147
+ **CLI:**
148
+ ```bash
149
+ # Explicit parent
150
+ overcode launch -n subtask --parent my-agent -d ~/project -p "Fix the auth bug"
151
+
152
+ # With follow mode (blocks until child finishes)
153
+ overcode launch -n subtask --parent my-agent --follow -p "Fix the auth bug"
154
+ ```
155
+
156
+ **Auto-detection:** When an agent runs `overcode launch` from within its own session, the parent is auto-detected from the `OVERCODE_SESSION_NAME` environment variable.
157
+
158
+ **Depth limit:** Hierarchies are limited to 5 levels deep.
159
+
160
+ ### Follow Mode
161
+
162
+ Follow mode streams a child agent's output to stdout and blocks until the child reports completion via `overcode report`.
163
+
164
+ ```bash
165
+ # Launch and follow — prompt must include overcode report at the end
166
+ overcode launch -n child --follow -p "Do the task. When done: overcode report --status success"
167
+
168
+ # Follow an already-running agent
169
+ overcode follow child-agent
170
+ ```
171
+
172
+ When the child reports success, it's marked "done" — it stays alive in tmux but is hidden from default views.
173
+
174
+ ### Reporting Completion
175
+
176
+ Child agents must explicitly signal completion by running `overcode report`:
177
+
178
+ ```bash
179
+ overcode report --status success --reason "All tests pass"
180
+ overcode report --status failure --reason "Build failed"
181
+ ```
182
+
183
+ Without a report, the child enters `waiting_oversight` status (👁️) when it stops. The parent's follow mode blocks until a report arrives or the oversight policy triggers.
184
+
185
+ **Always include `overcode report` at the end of your `--prompt`.** This is the most common mistake when setting up delegation.
186
+
187
+ ### Oversight Policies
188
+
189
+ Control what happens when a child stops without reporting:
190
+
191
+ ```bash
192
+ # Default: wait indefinitely for a report
193
+ overcode launch -n child --follow -p "..."
194
+
195
+ # Fail immediately if child stops without reporting
196
+ overcode launch -n child --follow --on-stuck fail -p "..."
197
+
198
+ # Wait up to 5 minutes, then fail
199
+ overcode launch -n child --follow --oversight-timeout 5m -p "..."
200
+ ```
201
+
202
+ The TUI shows a countdown timer (⏳) for agents with a timeout policy.
203
+
204
+ ### Budget Transfer
205
+
206
+ Transfer budget from a parent to a child agent:
207
+
208
+ ```bash
209
+ overcode budget transfer parent-agent child-agent 2.50
210
+ overcode budget show # See all budgets
211
+ overcode budget show my-agent # See one agent's budget
212
+ ```
213
+
214
+ The source must be an ancestor of the target.
215
+
216
+ ### Cascade Kill
217
+
218
+ Killing a parent kills all its descendants (deepest-first):
219
+
220
+ ```bash
221
+ overcode kill parent-agent # Kills parent + all children
222
+ overcode kill parent-agent --no-cascade # Kills only parent, orphans children
223
+ ```
224
+
225
+ ### TUI Tree View
226
+
227
+ Press `S` to cycle to "Tree" sort mode. Agents display in a hierarchy with tree connectors:
228
+
229
+ ```
230
+ parent-agent 🟢 2.5h ...
231
+ ├─child-1 🟢 1.2h ...
232
+ │ └─grandchild 🟠 0.5h ...
233
+ └─child-2 ✓ 0.8h ...
234
+ ```
235
+
236
+ - **`X`** — Collapse/expand children of the focused agent
237
+ - **`D`** — Show/hide "done" child agents (hidden by default)
238
+
239
+ The child count column (👶) shows how many direct children each agent has.
240
+
241
+ ### Done Agents
242
+
243
+ When a child reports success or failure via `overcode report`, it enters the "done" state:
244
+ - Hidden from default list and TUI views
245
+ - Press `D` in TUI or use `--show-done` in CLI to reveal them
246
+ - Auto-archived by the monitor daemon after 1 hour
247
+ - Manually archive with `overcode cleanup --done`
248
+
249
+ ### Waiting for Oversight
250
+
251
+ If a child stops without calling `overcode report`, it enters `waiting_oversight` (👁️):
252
+ - Visible in the TUI with a yellow indicator
253
+ - Parent's follow mode remains blocked, waiting for a report
254
+ - With `--oversight-timeout`, a countdown timer appears in the TUI
255
+ - Resolve by attaching to the child's tmux window and running `overcode report` manually, or let the timeout expire
256
+
257
+ ### Filtered List
258
+
259
+ View a subtree from the CLI:
260
+
261
+ ```bash
262
+ overcode list parent-agent # Shows parent + all descendants
263
+ overcode list --show-done # Include done agents
264
+ ```
265
+
266
+ ## Jump to Attention
267
+
268
+ Press `b` to quickly navigate to agents needing attention.
269
+
270
+ ### Priority Order
271
+
272
+ 1. **Bell** (🔔) - Unvisited stalled agents (highest priority)
273
+ 2. **Red** - Waiting for user input (already visited)
274
+ 3. **Yellow** - No standing instructions
275
+ 4. **Orange** - Waiting for supervisor
276
+
277
+ Press `b` repeatedly to cycle through all attention-needing agents.
278
+
279
+ ### Bell Indicator
280
+
281
+ The bell (🔔) appears when an agent stalls and you haven't visited it yet. Focus the agent to mark it as "visited" and clear the bell. This helps you track which stalled agents you've already seen.
282
+
283
+ ## Sync to Main
284
+
285
+ Quickly reset an agent to the main branch.
286
+
287
+ ### How to Use
288
+
289
+ 1. Select the agent
290
+ 2. Press `c` twice (double-press for confirmation)
291
+ 3. The agent runs:
292
+ - `git checkout main && git pull`
293
+ - `/clear` to reset conversation context
294
+
295
+ ### Use Cases
296
+
297
+ - Agent went down a wrong path
298
+ - Starting fresh on a new task
299
+ - Pulling in changes from other agents
300
+
301
+ ## Remote Monitoring
302
+
303
+ Monitor agents from anywhere with the web dashboard.
304
+
305
+ ### Web Dashboard
306
+
307
+ Start the dashboard server:
308
+
309
+ ```bash
310
+ overcode web # Start on localhost:8080
311
+ overcode web --host 0.0.0.0 # LAN access (needs api_key)
312
+ overcode web --port 3000 # Custom port
313
+ overcode web --stop # Stop the server
314
+ ```
315
+
316
+ The server runs in the background — the command exits immediately. Run `overcode web` again to see the URL if already running.
317
+
318
+ Access `http://<your-ip>:8080` from your phone, tablet, or another machine.
319
+
320
+ Features:
321
+ - Summary statistics and daily activity charts
322
+ - Session browser with sorting
323
+ - Timeline visualization with agent status and user presence
324
+ - Efficiency metrics and cost analysis
325
+ - Live agent monitoring at `/dashboard`
326
+ - Sister-compatible `/api/status` endpoint
327
+ - Auto-refreshes, optimized for mobile screens
328
+
329
+ ### TUI Toggle
330
+
331
+ Press `w` in the TUI to start/stop the web server. The URL appears in the daemon panel.
332
+
333
+ ## AI Summarizer
334
+
335
+ Get AI-generated summaries of agent activity.
336
+
337
+ ### Setup
338
+
339
+ 1. Set your API key:
340
+ ```bash
341
+ export OPENAI_API_KEY="sk-..."
342
+ ```
343
+
344
+ 2. Enable in TUI by pressing `a`
345
+
346
+ 3. Press `l` to cycle to AI summary mode (💬 or 📖)
347
+
348
+ ### Summary Modes
349
+
350
+ | Mode | Description |
351
+ |------|-------------|
352
+ | AI Short (💬) | Brief summary of current activity |
353
+ | AI Long (📖) | Detailed summary with broader context and goals |
354
+
355
+ ### Custom Provider
356
+
357
+ Use any OpenAI-compatible API:
358
+
359
+ ```yaml
360
+ # In ~/.overcode/config.yaml
361
+ summarizer:
362
+ api_url: https://your-provider.com/v1/chat/completions
363
+ model: your-model-name
364
+ api_key_var: YOUR_API_KEY_VAR
365
+ ```
366
+
367
+ ### Prompts
368
+
369
+ The two summaries each have a prompt: **short** (what the agent is doing right now) and **context** (the task it is working on). Once saved, they live in `~/.overcode/prompts/summary-short.md` and `summary-context.md`; until then the built-in defaults are used. Edits are picked up on the next summary, with no restart.
370
+
371
+ Prompts can use `{pane_content}`, `{lines}`, `{previous_summary}` and `{status}`; any other braces are left as typed.
372
+
373
+ To tune them, open **AI summary prompts…** from the command palette (`/`). The top half edits the prompt; the bottom half shows what it produces for up to six live agents (the focused one first), re-run about every 2 seconds once you stop typing, next to each agent's current live summary. A call is only made when the draft or that agent's terminal changed, and lab calls count toward the summarizer's cost cap.
374
+
375
+ | Key | Action |
376
+ |-----|--------|
377
+ | `Ctrl+S` | Save (saving the built-in text removes the file) |
378
+ | `Ctrl+T` | Switch between the short and context prompts |
379
+ | `Ctrl+R` | Revert to the saved prompt |
380
+ | `Ctrl+L` | Load the built-in default |
381
+ | `Esc` | Close (twice if there are unsaved edits) |
382
+
383
+ ### Cost
384
+
385
+ The summarizer only runs when enabled and the TUI is open. It makes requests every few seconds, so costs are minimal with GPT-4o-mini but can add up with larger models.
386
+
387
+ ## Human Annotations
388
+
389
+ Add notes to agents for yourself or collaborators.
390
+
391
+ ### Adding Annotations
392
+
393
+ 1. Select an agent
394
+ 2. Press `I` to edit annotation
395
+ 3. Type your note
396
+ 4. Press `Enter` to save
397
+
398
+ ### Viewing
399
+
400
+ Press `l` to cycle to annotation mode (✏️) to see annotations in the summary line.
401
+
402
+ ### Use Cases
403
+
404
+ - "Waiting on API credentials"
405
+ - "Don't touch until John reviews"
406
+ - "Blocked by issue #123"
407
+ - "Ready for testing"
408
+
409
+ ## Data Export
410
+
411
+ Export session data for analysis in Jupyter or other tools.
412
+
413
+ ### Parquet Export
414
+
415
+ ```bash
416
+ overcode export analysis.parquet
417
+ ```
418
+
419
+ Options:
420
+ - `--archived` / `-a`: Include archived sessions (default: true)
421
+ - `--timeline` / `-t`: Include status timeline (default: true)
422
+ - `--presence` / `-p`: Include presence data (default: true)
423
+
424
+ ### Included Data
425
+
426
+ - Session metadata (name, directory, repo)
427
+ - Token usage and costs
428
+ - Time metrics (green, idle, sleep)
429
+ - Status history timeline
430
+ - User presence (if available)
431
+
432
+ ### Jupyter Analysis
433
+
434
+ ```python
435
+ import pandas as pd
436
+
437
+ df = pd.read_parquet('analysis.parquet')
438
+
439
+ # Cost by agent
440
+ df.groupby('name')['cost'].sum().sort_values(ascending=False)
441
+
442
+ # Green time efficiency
443
+ df['efficiency'] = df['green_time'] / (df['green_time'] + df['idle_time'])
444
+ ```
445
+
446
+ Parquet export and the TUI timeline both read only the last 24h/3h of
447
+ `agent_status_history.csv` — the source CSV itself is rotated to compressed
448
+ `.gz` archives and retained long-term rather than growing unbounded. See
449
+ [History Retention](configuration.md#history-retention) in the configuration
450
+ docs for the rotation/retention knobs.
451
+
452
+ ## Presence Tracking
453
+
454
+ Overcode tracks when you're at your computer to correlate with agent activity.
455
+
456
+ ### How It Works
457
+
458
+ Presence tracking works on all platforms. Sleep detection (gap inference), TUI heartbeat state, and CSV logging are cross-platform. On macOS, Quartz APIs provide richer idle-seconds and screen-lock detection; on other platforms idle is reported as 0 and locked as false.
459
+
460
+ ### Data Location
461
+
462
+ ```
463
+ ~/.overcode/presence_log.csv
464
+ ```
465
+
466
+ ### Analytics
467
+
468
+ The web dashboard (`overcode web`) overlays presence data on timelines, showing when agents were working while you were away vs. actively monitoring.
469
+
470
+ ## Cloud Relay
471
+
472
+ Push status to a remote endpoint for custom integrations.
473
+
474
+ ### Configuration
475
+
476
+ ```yaml
477
+ relay:
478
+ enabled: true
479
+ url: https://your-worker.workers.dev/update
480
+ api_key: your-secret-key
481
+ interval: 30 # seconds
482
+ ```
483
+
484
+ ### Payload
485
+
486
+ The relay sends JSON with:
487
+ - All agent statuses
488
+ - Token usage
489
+ - Costs
490
+ - Current activity
491
+
492
+ ### Use Cases
493
+
494
+ - Custom dashboards
495
+ - Slack notifications
496
+ - Integration with project management tools
497
+
498
+ ## Sister Integration
499
+
500
+ Aggregate agents from multiple machines into a single TUI. When running overcode on 2-3 machines simultaneously, sister integration gives you read-only visibility into all agents from one place.
501
+
502
+ ### Prerequisites
503
+
504
+ Each machine must be running `overcode web`:
505
+
506
+ ```bash
507
+ # On each remote machine
508
+ overcode web
509
+ ```
510
+
511
+ ### Setup Option A: SSH Tunnels (Recommended)
512
+
513
+ SSH tunnels keep all traffic encrypted with no API key needed.
514
+
515
+ On the **monitoring machine**, add tunnels in `~/.ssh/config`:
516
+
517
+ ```
518
+ Host macbook-pro
519
+ HostName 192.168.1.10
520
+ LocalForward 15337 localhost:8080
521
+
522
+ Host desktop
523
+ HostName 192.168.1.20
524
+ LocalForward 25337 localhost:8080
525
+ ```
526
+
527
+ Open the tunnels (or use `autossh` for persistence):
528
+
529
+ ```bash
530
+ ssh -N macbook-pro &
531
+ ssh -N desktop &
532
+ ```
533
+
534
+ Configure sisters in `~/.overcode/config.yaml`:
535
+
536
+ ```yaml
537
+ hostname: "mac-studio"
538
+
539
+ sisters:
540
+ - name: "macbook-pro"
541
+ url: "http://localhost:15337"
542
+ - name: "desktop"
543
+ url: "http://localhost:25337"
544
+ ```
545
+
546
+ ### Setup Option B: Direct LAN with API Key
547
+
548
+ Expose the web server directly on the LAN. Requires an API key for security.
549
+
550
+ On each **remote machine**, add to `~/.overcode/config.yaml`:
551
+
552
+ ```yaml
553
+ web:
554
+ api_key: "your-shared-secret"
555
+ ```
556
+
557
+ Start the server bound to all interfaces:
558
+
559
+ ```bash
560
+ overcode web --host 0.0.0.0
561
+ ```
562
+
563
+ On the **monitoring machine**, configure sisters:
564
+
565
+ ```yaml
566
+ hostname: "mac-studio"
567
+
568
+ sisters:
569
+ - name: "macbook-pro"
570
+ url: "http://192.168.1.10:8080"
571
+ api_key: "your-shared-secret"
572
+ - name: "desktop"
573
+ url: "http://192.168.1.20:8080"
574
+ api_key: "your-shared-secret"
575
+ ```
576
+
577
+ ### What It Looks Like
578
+
579
+ When sisters are configured, a **Host** column appears in the TUI:
580
+
581
+ ```
582
+ Host Name Status Cost Green Activity
583
+ mac-studio agent1 running $1.23 12m Writing tests...
584
+ mac-studio agent2 waiting $0.45 8m (waiting for user)
585
+ macbook-pro agent3 running $2.34 25m Refactoring auth...
586
+ desktop agent5 running $0.67 5m Adding endpoint...
587
+ ```
588
+
589
+ - Local agents appear first, remote agents grouped by host
590
+ - Local hostname is dimmed, remote hostnames are bold magenta
591
+ - The footer shows: `Sisters: macbook-pro(2/3) desktop(1/1)`
592
+ - Remote agents are read-only (interactive actions are blocked)
593
+
594
+ ### Troubleshooting
595
+
596
+ - **Sister shows `--`**: Check that `overcode web` is running on the remote machine and the tunnel/URL is reachable
597
+ - **401 Unauthorized**: API key mismatch between server and client config
598
+ - **No Host column**: Sisters config is empty or missing — the column is auto-hidden
599
+
600
+ ## Multiple Daemon Warning
601
+
602
+ If the TUI detects multiple monitor daemon processes, it shows a warning every 5 seconds.
603
+
604
+ ### Resolution
605
+
606
+ Press `\` to restart the monitor daemon. This kills existing daemons and starts a fresh one.
607
+
608
+ ### Prevention
609
+
610
+ This typically happens if:
611
+ - Multiple TUIs are started simultaneously
612
+ - Previous daemon didn't shut down cleanly
613
+
614
+ ## Diagnostic Mode
615
+
616
+ For debugging TUI issues:
617
+
618
+ ```bash
619
+ overcode monitor --diagnostics
620
+ ```
621
+
622
+ This disables auto-refresh timers, letting you manually refresh with `r` and observe state changes.
623
+
624
+ ## Terminal Compatibility
625
+
626
+ ### Color Issues
627
+
628
+ If colors render incorrectly, press `M` for monochrome mode. This strips ANSI codes from the preview pane.
629
+
630
+ ### Mouse Issues
631
+
632
+ If mouse events interfere with your terminal:
633
+ 1. Press `y` to enter copy mode
634
+ 2. Mouse capture is disabled
635
+ 3. Select text normally
636
+ 4. Press `y` again to re-enable
637
+
638
+ ### Large Repos
639
+
640
+ For repos with many files, Claude's output can be verbose. Use `v` to cycle through detail line counts (5/10/20/50) to manage preview pane size.