overcode 0.5.8__tar.gz → 0.6.2__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 (385) hide show
  1. {overcode-0.5.8/src/overcode.egg-info → overcode-0.6.2}/PKG-INFO +10 -13
  2. {overcode-0.5.8 → overcode-0.6.2}/README.md +8 -11
  3. {overcode-0.5.8 → overcode-0.6.2}/docs/README.md +1 -0
  4. {overcode-0.5.8 → overcode-0.6.2}/docs/advanced-features.md +65 -71
  5. {overcode-0.5.8 → overcode-0.6.2}/docs/architecture.md +12 -9
  6. {overcode-0.5.8 → overcode-0.6.2}/docs/backends.md +111 -37
  7. overcode-0.6.2/docs/children.md +276 -0
  8. {overcode-0.5.8 → overcode-0.6.2}/docs/claude-session-files.md +47 -5
  9. {overcode-0.5.8 → overcode-0.6.2}/docs/cli-reference.md +256 -49
  10. overcode-0.6.2/docs/configuration.md +1490 -0
  11. {overcode-0.5.8 → overcode-0.6.2}/docs/design/README.md +7 -0
  12. {overcode-0.5.8 → overcode-0.6.2}/docs/design/agent-backends-codex-grok.md +4 -2
  13. overcode-0.6.2/docs/design/agent-observability-0.6.1.md +1034 -0
  14. overcode-0.6.2/docs/design/auto-naming.md +499 -0
  15. {overcode-0.5.8 → overcode-0.6.2}/docs/design/background-shell-classification.md +1 -1
  16. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/zellij-vs-tmux.md +1 -1
  17. overcode-0.6.2/docs/design/billing-code-ids.md +165 -0
  18. overcode-0.6.2/docs/design/cost-model-0.6.1.md +499 -0
  19. overcode-0.6.2/docs/design/engine-0.6.md +305 -0
  20. overcode-0.6.2/docs/design/opencode-parity.md +239 -0
  21. {overcode-0.5.8 → overcode-0.6.2}/docs/design/opencode-stats-reader-performance.md +64 -5
  22. overcode-0.6.2/docs/design/quality-review-2026-10.md +378 -0
  23. {overcode-0.5.8 → overcode-0.6.2}/docs/getting-started.md +9 -19
  24. overcode-0.6.2/docs/release-notes-0.6.0.md +8 -0
  25. overcode-0.6.2/docs/release-notes-0.6.1.md +49 -0
  26. overcode-0.6.2/docs/release-notes-0.6.2.md +27 -0
  27. overcode-0.6.2/docs/releasing.md +54 -0
  28. overcode-0.6.2/docs/tui-guide.md +894 -0
  29. {overcode-0.5.8 → overcode-0.6.2}/pyproject.toml +10 -4
  30. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/activity_log.py +6 -4
  31. overcode-0.6.2/src/overcode/agent_bundle.py +422 -0
  32. overcode-0.6.2/src/overcode/agent_files.py +78 -0
  33. overcode-0.6.2/src/overcode/agent_identity.py +50 -0
  34. overcode-0.6.2/src/overcode/agent_io.py +399 -0
  35. overcode-0.6.2/src/overcode/agent_worktree.py +125 -0
  36. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/__init__.py +2 -0
  37. overcode-0.6.2/src/overcode/backends/_stats_common.py +234 -0
  38. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/base.py +147 -65
  39. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/claude_code.py +48 -33
  40. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/codex.py +71 -87
  41. overcode-0.6.2/src/overcode/backends/codex_stats.py +635 -0
  42. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/grok.py +55 -89
  43. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/grok_stats.py +168 -70
  44. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/hermes.py +97 -99
  45. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/hermes_stats.py +92 -136
  46. overcode-0.6.2/src/overcode/backends/jsonl_tail.py +263 -0
  47. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode.py +90 -75
  48. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode2.py +9 -19
  49. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode2_patterns.py +16 -49
  50. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode2_stats.py +37 -214
  51. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode_stats.py +366 -267
  52. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/shell.py +19 -32
  53. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/bundled_skills.py +26 -8
  54. overcode-0.6.2/src/overcode/burn.py +159 -0
  55. overcode-0.6.2/src/overcode/child_lifecycle.py +155 -0
  56. overcode-0.6.2/src/overcode/child_presets.py +270 -0
  57. overcode-0.6.2/src/overcode/claude_bg.py +998 -0
  58. overcode-0.6.2/src/overcode/claude_bg_ledger.py +425 -0
  59. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/claude_config.py +0 -50
  60. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/__init__.py +6 -0
  61. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/_shared.py +12 -3
  62. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/agent.py +558 -159
  63. overcode-0.6.2/src/overcode/cli/budget.py +715 -0
  64. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/config.py +87 -35
  65. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/daemon.py +5 -3
  66. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/doctor.py +80 -8
  67. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/hooks.py +1 -6
  68. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/jobs.py +9 -5
  69. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/keys.py +1 -1
  70. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/lifecycle.py +14 -4
  71. overcode-0.6.2/src/overcode/cli/models.py +273 -0
  72. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/monitoring.py +186 -100
  73. overcode-0.6.2/src/overcode/cli/naming.py +432 -0
  74. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/parallelism.py +1 -1
  75. overcode-0.6.2/src/overcode/cli/quota.py +128 -0
  76. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/sister.py +23 -17
  77. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/split.py +70 -26
  78. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/tags.py +1 -1
  79. overcode-0.6.2/src/overcode/cli/trip.py +132 -0
  80. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/wrappers.py +2 -3
  81. overcode-0.6.2/src/overcode/clock.py +234 -0
  82. overcode-0.6.2/src/overcode/codes.py +495 -0
  83. overcode-0.6.2/src/overcode/columns/__init__.py +1 -0
  84. overcode-0.6.2/src/overcode/columns/column.py +133 -0
  85. overcode-0.6.2/src/overcode/columns/context.py +379 -0
  86. overcode-0.6.2/src/overcode/columns/emoji.py +87 -0
  87. overcode-0.6.2/src/overcode/columns/hover.py +271 -0
  88. overcode-0.6.2/src/overcode/columns/layout.py +153 -0
  89. overcode-0.6.2/src/overcode/columns/registry.py +807 -0
  90. overcode-0.6.2/src/overcode/columns/render_context.py +134 -0
  91. overcode-0.6.2/src/overcode/columns/render_git.py +80 -0
  92. overcode-0.6.2/src/overcode/columns/render_identity.py +231 -0
  93. overcode-0.6.2/src/overcode/columns/render_performance.py +174 -0
  94. overcode-0.6.2/src/overcode/columns/render_supervision.py +313 -0
  95. overcode-0.6.2/src/overcode/columns/render_time.py +44 -0
  96. overcode-0.6.2/src/overcode/columns/render_usage.py +300 -0
  97. overcode-0.6.2/src/overcode/columns/render_virtual.py +325 -0
  98. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/command_palette.py +96 -13
  99. overcode-0.6.2/src/overcode/config.py +1477 -0
  100. overcode-0.6.2/src/overcode/conversation_spend.py +619 -0
  101. overcode-0.6.2/src/overcode/conversation_warning.py +108 -0
  102. overcode-0.6.2/src/overcode/cost_check.py +163 -0
  103. overcode-0.6.2/src/overcode/daemon_cadence.py +60 -0
  104. overcode-0.6.2/src/overcode/daemon_housekeeping.py +457 -0
  105. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/daemon_logging.py +37 -1
  106. overcode-0.6.2/src/overcode/daemon_presence.py +182 -0
  107. overcode-0.6.2/src/overcode/daemon_process_probe.py +132 -0
  108. overcode-0.6.2/src/overcode/daemon_stats_sync.py +491 -0
  109. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/daemon_utils.py +0 -1
  110. overcode-0.6.2/src/overcode/data/claude_prices.json +274 -0
  111. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/data_export.py +0 -1
  112. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/dependency_check.py +2 -26
  113. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/doctor.py +379 -12
  114. overcode-0.6.2/src/overcode/energy.py +239 -0
  115. overcode-0.6.2/src/overcode/engine_protocol.py +275 -0
  116. overcode-0.6.2/src/overcode/engine_recorders.py +209 -0
  117. overcode-0.6.2/src/overcode/engine_socket.py +524 -0
  118. overcode-0.6.2/src/overcode/engine_wake.py +264 -0
  119. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/entrypoint.py +26 -12
  120. overcode-0.6.2/src/overcode/episodes.py +417 -0
  121. overcode-0.6.2/src/overcode/exceptions.py +125 -0
  122. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/follow_mode.py +40 -52
  123. overcode-0.6.2/src/overcode/git_context.py +336 -0
  124. overcode-0.6.2/src/overcode/git_stats.py +103 -0
  125. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/history_reader.py +653 -213
  126. overcode-0.6.2/src/overcode/hook_dialects.py +226 -0
  127. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/hook_handler.py +657 -310
  128. overcode-0.6.2/src/overcode/hook_status_detector.py +1390 -0
  129. overcode-0.6.2/src/overcode/idle_stages.py +115 -0
  130. overcode-0.6.2/src/overcode/implementations.py +548 -0
  131. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/job_launcher.py +5 -8
  132. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/job_manager.py +15 -130
  133. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/journey.py +58 -24
  134. overcode-0.6.2/src/overcode/json_store.py +331 -0
  135. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/keymap.py +15 -4
  136. overcode-0.6.2/src/overcode/launch_settings.py +175 -0
  137. overcode-0.6.2/src/overcode/launcher.py +1338 -0
  138. overcode-0.6.2/src/overcode/layout_migration.py +299 -0
  139. overcode-0.6.2/src/overcode/ledger.py +910 -0
  140. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/lifecycle.py +321 -34
  141. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/mentor.py +2 -2
  142. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/model_metadata.py +2 -2
  143. overcode-0.6.2/src/overcode/monitor_daemon.py +2443 -0
  144. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/monitor_daemon_core.py +69 -87
  145. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/monitor_daemon_state.py +200 -25
  146. overcode-0.6.2/src/overcode/month_files.py +144 -0
  147. overcode-0.6.2/src/overcode/name_source.py +105 -0
  148. overcode-0.6.2/src/overcode/namer.py +1274 -0
  149. overcode-0.6.2/src/overcode/naming_lab.py +399 -0
  150. overcode-0.6.2/src/overcode/naming_policy.py +446 -0
  151. overcode-0.6.2/src/overcode/opencode_plugin/overcode-telemetry-v2/index.js +47 -0
  152. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/opencode_plugin/overcode-telemetry-v2/overcode-telemetry-core.mjs +156 -7
  153. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/opencode_plugin/overcode-telemetry.js +89 -187
  154. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/overagent.py +5 -5
  155. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/pane_capture_gate.py +0 -4
  156. overcode-0.6.2/src/overcode/paths.py +365 -0
  157. overcode-0.6.2/src/overcode/pid_utils.py +305 -0
  158. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/presence_logger.py +29 -32
  159. overcode-0.6.2/src/overcode/price_table.py +555 -0
  160. overcode-0.6.2/src/overcode/pricing.py +365 -0
  161. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/process_resources.py +54 -1
  162. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/protocols.py +50 -76
  163. overcode-0.6.2/src/overcode/quota_calibration.py +461 -0
  164. overcode-0.6.2/src/overcode/quota_engine.py +1061 -0
  165. overcode-0.6.2/src/overcode/quota_model.py +272 -0
  166. overcode-0.6.2/src/overcode/rename.py +345 -0
  167. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/sandbox_detect.py +0 -12
  168. overcode-0.6.2/src/overcode/session_archive.py +580 -0
  169. overcode-0.6.2/src/overcode/session_identity.py +258 -0
  170. overcode-0.6.2/src/overcode/session_manager.py +1490 -0
  171. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/settings.py +305 -375
  172. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/sister_controller.py +1 -1
  173. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/sister_poller.py +65 -2
  174. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/skill_library.py +4 -4
  175. overcode-0.6.2/src/overcode/spend_recompute.py +337 -0
  176. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/ssh_provisioner.py +6 -6
  177. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/standing_instructions.py +14 -79
  178. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/stat_gate.py +3 -3
  179. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/stats_reader.py +59 -53
  180. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/status_constants.py +173 -60
  181. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/status_detector.py +67 -14
  182. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/status_detector_factory.py +83 -17
  183. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/status_history.py +31 -210
  184. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/status_patterns.py +136 -67
  185. overcode-0.6.2/src/overcode/status_theme.py +348 -0
  186. overcode-0.6.2/src/overcode/statusline_tap.py +209 -0
  187. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/summarizer_client.py +25 -5
  188. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/summarizer_component.py +3 -14
  189. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/summarizer_prompts.py +129 -4
  190. overcode-0.6.2/src/overcode/summary_columns.py +124 -0
  191. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/summary_groups.py +0 -20
  192. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/supervisor_daemon.py +218 -122
  193. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/supervisor_daemon_core.py +8 -40
  194. overcode-0.6.2/src/overcode/swarm.py +1034 -0
  195. overcode-0.6.2/src/overcode/swarm_files.py +232 -0
  196. overcode-0.6.2/src/overcode/swarm_history.py +445 -0
  197. overcode-0.6.2/src/overcode/swarm_publisher.py +116 -0
  198. overcode-0.6.2/src/overcode/swarm_view.py +406 -0
  199. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/testing/renderer.py +0 -41
  200. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/testing/tmux_driver.py +1 -1
  201. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/testing/tui_eye.py +17 -2
  202. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/testing/tui_eye_skill.md +11 -8
  203. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/time_context.py +42 -44
  204. overcode-0.6.2/src/overcode/tmux_manager.py +249 -0
  205. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tmux_utils.py +146 -53
  206. overcode-0.6.2/src/overcode/transcript_index.py +1030 -0
  207. overcode-0.6.2/src/overcode/trip.py +175 -0
  208. overcode-0.6.2/src/overcode/tui.py +2771 -0
  209. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui.tcss +51 -18
  210. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/__init__.py +2 -0
  211. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/activity.py +3 -3
  212. overcode-0.6.2/src/overcode/tui_actions/claude_bg.py +113 -0
  213. overcode-0.6.2/src/overcode/tui_actions/command_bar.py +392 -0
  214. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/daemon.py +46 -10
  215. overcode-0.6.2/src/overcode/tui_actions/diagnostics.py +107 -0
  216. overcode-0.6.2/src/overcode/tui_actions/dialogs.py +1052 -0
  217. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/input.py +2 -2
  218. overcode-0.6.2/src/overcode/tui_actions/jobs.py +256 -0
  219. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/mentor.py +0 -1
  220. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/navigation.py +7 -3
  221. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/overagent.py +9 -16
  222. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/session.py +328 -9
  223. overcode-0.6.2/src/overcode/tui_actions/sisters.py +351 -0
  224. overcode-0.6.2/src/overcode/tui_actions/swarm.py +619 -0
  225. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/view.py +97 -173
  226. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_actions/view_control.py +5 -5
  227. overcode-0.6.2/src/overcode/tui_engine.py +293 -0
  228. overcode-0.6.2/src/overcode/tui_engine_link.py +359 -0
  229. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_helpers.py +66 -251
  230. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_logic.py +11 -514
  231. overcode-0.6.2/src/overcode/tui_render.py +78 -0
  232. overcode-0.6.2/src/overcode/tui_split.py +557 -0
  233. overcode-0.6.2/src/overcode/tui_timers.py +149 -0
  234. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/__init__.py +13 -3
  235. overcode-0.6.2/src/overcode/tui_widgets/agent_visibility_modal.py +141 -0
  236. overcode-0.6.2/src/overcode/tui_widgets/auto_naming_modal.py +259 -0
  237. overcode-0.6.2/src/overcode/tui_widgets/billing_code_modal.py +207 -0
  238. overcode-0.6.2/src/overcode/tui_widgets/billing_codes_modal.py +892 -0
  239. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/column_header.py +24 -2
  240. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/command_bar.py +27 -3
  241. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/daemon_panel.py +89 -46
  242. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/daemon_status_bar.py +179 -135
  243. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/help_overlay.py +66 -35
  244. overcode-0.6.2/src/overcode/tui_widgets/naming_lab.py +869 -0
  245. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/new_agent_defaults_modal.py +84 -10
  246. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/new_agent_modal.py +114 -3
  247. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/rename_agent_modal.py +72 -16
  248. overcode-0.6.2/src/overcode/tui_widgets/session_summary.py +838 -0
  249. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/sister_selection_modal.py +1 -1
  250. overcode-0.6.2/src/overcode/tui_widgets/status_colours_modal.py +180 -0
  251. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/status_timeline.py +184 -23
  252. overcode-0.6.2/src/overcode/tui_widgets/swarm_rows.py +209 -0
  253. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/tui_log_panel.py +7 -28
  254. overcode-0.6.2/src/overcode/upgrade_consent.py +124 -0
  255. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/usage_monitor.py +50 -8
  256. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/view_control.py +4 -2
  257. overcode-0.6.2/src/overcode/web_api.py +416 -0
  258. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/web_control_api.py +30 -61
  259. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/web_server.py +91 -200
  260. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/web_server_runner.py +31 -11
  261. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/worker_guard.py +0 -7
  262. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/wrapper.py +6 -5
  263. {overcode-0.5.8 → overcode-0.6.2/src/overcode.egg-info}/PKG-INFO +10 -13
  264. {overcode-0.5.8 → overcode-0.6.2}/src/overcode.egg-info/SOURCES.txt +108 -11
  265. {overcode-0.5.8 → overcode-0.6.2}/src/overcode.egg-info/entry_points.txt +1 -1
  266. {overcode-0.5.8 → overcode-0.6.2}/src/overcode.egg-info/requires.txt +1 -1
  267. {overcode-0.5.8 → overcode-0.6.2}/tests/test_e2e_multi_agent_jokes.py +20 -28
  268. overcode-0.5.8/docs/configuration.md +0 -731
  269. overcode-0.5.8/docs/tui-guide.md +0 -329
  270. overcode-0.5.8/src/overcode/backends/codex_stats.py +0 -521
  271. overcode-0.5.8/src/overcode/cli/budget.py +0 -198
  272. overcode-0.5.8/src/overcode/cli/models.py +0 -124
  273. overcode-0.5.8/src/overcode/config.py +0 -746
  274. overcode-0.5.8/src/overcode/duration.py +0 -28
  275. overcode-0.5.8/src/overcode/exceptions.py +0 -236
  276. overcode-0.5.8/src/overcode/hook_status_detector.py +0 -1020
  277. overcode-0.5.8/src/overcode/implementations.py +0 -427
  278. overcode-0.5.8/src/overcode/interfaces.py +0 -49
  279. overcode-0.5.8/src/overcode/launcher.py +0 -1599
  280. overcode-0.5.8/src/overcode/logging_config.py +0 -190
  281. overcode-0.5.8/src/overcode/mocks.py +0 -209
  282. overcode-0.5.8/src/overcode/monitor_daemon.py +0 -2065
  283. overcode-0.5.8/src/overcode/opencode_plugin/overcode-telemetry-v2/index.js +0 -21
  284. overcode-0.5.8/src/overcode/pid_utils.py +0 -310
  285. overcode-0.5.8/src/overcode/pricing.py +0 -189
  286. overcode-0.5.8/src/overcode/session_manager.py +0 -2093
  287. overcode-0.5.8/src/overcode/summary_columns.py +0 -2243
  288. overcode-0.5.8/src/overcode/supervisor_layout.sh +0 -55
  289. overcode-0.5.8/src/overcode/tmux_manager.py +0 -407
  290. overcode-0.5.8/src/overcode/transcript_index.py +0 -572
  291. overcode-0.5.8/src/overcode/tui.py +0 -5218
  292. overcode-0.5.8/src/overcode/tui_render.py +0 -453
  293. overcode-0.5.8/src/overcode/tui_widgets/fullscreen_preview.py +0 -137
  294. overcode-0.5.8/src/overcode/tui_widgets/session_summary.py +0 -560
  295. overcode-0.5.8/src/overcode/web/__init__.py +0 -0
  296. overcode-0.5.8/src/overcode/web/templates/analytics.html +0 -1089
  297. overcode-0.5.8/src/overcode/web/templates/dashboard.html +0 -553
  298. overcode-0.5.8/src/overcode/web_api.py +0 -956
  299. overcode-0.5.8/src/overcode/web_chartjs.py +0 -32
  300. overcode-0.5.8/src/overcode/web_templates.py +0 -23
  301. {overcode-0.5.8 → overcode-0.6.2}/LICENSE +0 -0
  302. {overcode-0.5.8 → overcode-0.6.2}/MANIFEST.in +0 -0
  303. {overcode-0.5.8 → overcode-0.6.2}/docs/design/483-484/00_overview.md +0 -0
  304. {overcode-0.5.8 → overcode-0.6.2}/docs/design/483-484/01_usage_log.md +0 -0
  305. {overcode-0.5.8 → overcode-0.6.2}/docs/design/483-484/02_learning_journey.md +0 -0
  306. {overcode-0.5.8 → overcode-0.6.2}/docs/design/483-484/03_overagent.md +0 -0
  307. {overcode-0.5.8 → overcode-0.6.2}/docs/design/483-484/04_phasing_and_questions.md +0 -0
  308. {overcode-0.5.8 → overcode-0.6.2}/docs/design/acp-agent-integration-analysis.md +0 -0
  309. {overcode-0.5.8 → overcode-0.6.2}/docs/design/agent-agnostic-backends-opencode.md +0 -0
  310. {overcode-0.5.8 → overcode-0.6.2}/docs/design/agent-backend-hermes.md +0 -0
  311. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/README.md +0 -0
  312. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/SYNTHESIS.md +0 -0
  313. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/candidates.md +0 -0
  314. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-bernstein.md +0 -0
  315. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-bobbit.md +0 -0
  316. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-ccmanager.md +0 -0
  317. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-claude-squad.md +0 -0
  318. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-cmux.md +0 -0
  319. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-composio.md +0 -0
  320. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-dmux.md +0 -0
  321. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-gastown.md +0 -0
  322. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-kagan.md +0 -0
  323. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-orca.md +0 -0
  324. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-superset.md +0 -0
  325. {overcode-0.5.8 → overcode-0.6.2}/docs/design/bakeoffs/overcode-vs-vibe-kanban.md +0 -0
  326. {overcode-0.5.8 → overcode-0.6.2}/docs/design/e2e-devcontainer-testing.md +0 -0
  327. {overcode-0.5.8 → overcode-0.6.2}/docs/design/model-alias-resolution.md +0 -0
  328. {overcode-0.5.8 → overcode-0.6.2}/docs/design/scaling-audit-2026-09-22.md +0 -0
  329. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.3.0.md +0 -0
  330. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.4.2.md +0 -0
  331. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.1.md +0 -0
  332. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.2.md +0 -0
  333. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.3.md +0 -0
  334. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.4.md +0 -0
  335. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.5.md +0 -0
  336. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.6.md +0 -0
  337. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.7.md +0 -0
  338. {overcode-0.5.8 → overcode-0.6.2}/docs/release-notes-0.5.8.md +0 -0
  339. {overcode-0.5.8 → overcode-0.6.2}/docs/skill-profiles.md +0 -0
  340. {overcode-0.5.8 → overcode-0.6.2}/docs/tui-refactoring-plan.md +0 -0
  341. {overcode-0.5.8 → overcode-0.6.2}/docs/ux-performance-analysis-2026-03-09.md +0 -0
  342. {overcode-0.5.8 → overcode-0.6.2}/docs/wrappers.md +0 -0
  343. {overcode-0.5.8 → overcode-0.6.2}/setup.cfg +0 -0
  344. {overcode-0.5.8 → overcode-0.6.2}/setup.py +0 -0
  345. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/__init__.py +0 -0
  346. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/agent_scanner.py +0 -0
  347. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/opencode2_plugin_install.py +0 -0
  348. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/backends/overagent.py +0 -0
  349. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/claude_pid.py +0 -0
  350. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/__main__.py +0 -0
  351. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/activity.py +0 -0
  352. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/focal.py +0 -0
  353. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/perms.py +0 -0
  354. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/skill_profiles.py +0 -0
  355. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/skills.py +0 -0
  356. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/cli/view.py +0 -0
  357. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/daemon_claude_skill.md +0 -0
  358. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/data/keymaps/default.yaml +0 -0
  359. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/data/keymaps/vscode.yaml +0 -0
  360. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/data/model_metadata.json +0 -0
  361. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/hermes_plugin/__init__.py +0 -0
  362. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/hermes_plugin/plugin.yaml +0 -0
  363. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/notifier.py +0 -0
  364. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/opencode_plugin/overcode-telemetry-v2/tui.js +0 -0
  365. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/prompt_lab.py +0 -0
  366. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/spawn.py +0 -0
  367. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/testing/__init__.py +0 -0
  368. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_theme.py +0 -0
  369. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/agent_select_modal.py +0 -0
  370. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/command_palette.py +0 -0
  371. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/dialog_style.py +0 -0
  372. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/instruction_history_modal.py +0 -0
  373. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/job_summary.py +0 -0
  374. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/journey_panel.py +0 -0
  375. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/jump_modal.py +0 -0
  376. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/modal_base.py +0 -0
  377. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/passthru_config_modal.py +0 -0
  378. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/preview_pane.py +0 -0
  379. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/skills_modal.py +0 -0
  380. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/summary_config_modal.py +0 -0
  381. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/summary_prompt_lab.py +0 -0
  382. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/tui_widgets/tmux_config_modal.py +0 -0
  383. {overcode-0.5.8 → overcode-0.6.2}/src/overcode/usage_analytics.py +0 -0
  384. {overcode-0.5.8 → overcode-0.6.2}/src/overcode.egg-info/dependency_links.txt +0 -0
  385. {overcode-0.5.8 → overcode-0.6.2}/src/overcode.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: overcode
3
- Version: 0.5.8
3
+ Version: 0.6.2
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
@@ -23,7 +23,7 @@ Requires-Dist: textual>=0.40.0
23
23
  Requires-Dist: rich>=13.0.0
24
24
  Requires-Dist: typer>=0.9.0
25
25
  Requires-Dist: pyyaml>=6.0
26
- Requires-Dist: libtmux>=0.37.0
26
+ Requires-Dist: libtmux<0.63,>=0.37.0
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: pytest>=7.0.0; extra == "dev"
29
29
  Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
@@ -67,19 +67,17 @@ Running multiple coding agents is powerful, but managing them gets chaotic fast.
67
67
  Try it instantly with [uvx](https://docs.astral.sh/uv/):
68
68
 
69
69
  ```bash
70
- uvx overcode monitor
70
+ uvx overcode
71
71
  ```
72
72
 
73
- This opens the standalone dashboard. Press `n` to create your first agent.
74
-
75
- For the full tmux-native experience (recommended):
73
+ Or install it:
76
74
 
77
75
  ```bash
78
76
  pip install overcode
79
- overcode tmux
77
+ overcode # same as `overcode tmux`
80
78
  ```
81
79
 
82
- This creates a split layout: the overcode dashboard on top, the focused agent's live terminal on the bottom. Navigate agents with `j/k` — the bottom pane follows automatically. Press `Tab` to toggle focus between panes.
80
+ This opens the tmux split layout (attaching to it if you are in a plain terminal): the overcode dashboard on top, the focused agent's live terminal on the bottom. Press `n` to create your first agent. Navigate agents with `j/k` — the bottom pane follows automatically. Press `Tab` to toggle focus between panes.
83
81
 
84
82
  **Requirements:** Python 3.12+, tmux, and an agent CLI — [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [opencode](https://opencode.ai) (v1, or the opencode2 2.0 preview), [Codex CLI](https://github.com/openai/codex), [Grok Build](https://x.ai), or [Hermes Agent](https://github.com/NousResearch/hermes-agent)
85
83
 
@@ -88,7 +86,7 @@ See the [Getting Started Guide](docs/getting-started.md) for a complete walkthro
88
86
  ## Features
89
87
 
90
88
  ### Tmux Split Layout (`overcode tmux`)
91
- The recommended way to use overcode. Creates a two-pane layout in tmux:
89
+ The overcode dashboard. `overcode`, `overcode tmux` and `overcode monitor` all open it. A two-pane layout in tmux:
92
90
  - **Top pane**: Compact agent dashboard with live status
93
91
  - **Bottom pane**: The focused agent's native terminal — no emulation, real tmux
94
92
  - `j/k` navigates agents, bottom pane follows
@@ -108,7 +106,7 @@ The TUI displays all agents with live status updates, showing:
108
106
  - **Launch agents** with custom prompts and permission settings
109
107
  - **Send instructions** directly from the dashboard
110
108
  - **Standing orders** - persistent instructions that guide agent behavior
111
- - **Agent hierarchy** - parent/child delegation with follow mode and reporting
109
+ - **Agent hierarchy** - parent/child delegation with follow mode, reporting and oversight presets (see [Child Agents](docs/children.md))
112
110
  - **Cost budgets** - per-agent spending limits with automatic enforcement
113
111
  - **Sleep mode** - pause agents and exclude them from stats
114
112
  - **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.
@@ -146,11 +144,10 @@ limitations.
146
144
  Aggregate agents from multiple machines into one dashboard:
147
145
  - Configure sister machines in `~/.overcode/config.yaml`
148
146
  - Remote agents appear alongside local ones
149
- - In tmux split mode, selecting a sister agent auto-zooms the dashboard with a preview pane
147
+ - Selecting a sister agent auto-zooms the dashboard with a preview pane
148
+ - Each remote runs `overcode web`, a small API server that serves the sister API only (there is no web UI)
150
149
 
151
150
  ### Analytics & Export
152
- - **Web dashboard** - mobile-friendly monitoring from any device
153
- - **Historical analytics** - browse session history with charts
154
151
  - **Parquet export** - analyze data in Jupyter notebooks
155
152
  - **Presence tracking** - correlate activity with your availability
156
153
 
@@ -25,19 +25,17 @@ Running multiple coding agents is powerful, but managing them gets chaotic fast.
25
25
  Try it instantly with [uvx](https://docs.astral.sh/uv/):
26
26
 
27
27
  ```bash
28
- uvx overcode monitor
28
+ uvx overcode
29
29
  ```
30
30
 
31
- This opens the standalone dashboard. Press `n` to create your first agent.
32
-
33
- For the full tmux-native experience (recommended):
31
+ Or install it:
34
32
 
35
33
  ```bash
36
34
  pip install overcode
37
- overcode tmux
35
+ overcode # same as `overcode tmux`
38
36
  ```
39
37
 
40
- This creates a split layout: the overcode dashboard on top, the focused agent's live terminal on the bottom. Navigate agents with `j/k` — the bottom pane follows automatically. Press `Tab` to toggle focus between panes.
38
+ This opens the tmux split layout (attaching to it if you are in a plain terminal): the overcode dashboard on top, the focused agent's live terminal on the bottom. Press `n` to create your first agent. Navigate agents with `j/k` — the bottom pane follows automatically. Press `Tab` to toggle focus between panes.
41
39
 
42
40
  **Requirements:** Python 3.12+, tmux, and an agent CLI — [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [opencode](https://opencode.ai) (v1, or the opencode2 2.0 preview), [Codex CLI](https://github.com/openai/codex), [Grok Build](https://x.ai), or [Hermes Agent](https://github.com/NousResearch/hermes-agent)
43
41
 
@@ -46,7 +44,7 @@ See the [Getting Started Guide](docs/getting-started.md) for a complete walkthro
46
44
  ## Features
47
45
 
48
46
  ### Tmux Split Layout (`overcode tmux`)
49
- The recommended way to use overcode. Creates a two-pane layout in tmux:
47
+ The overcode dashboard. `overcode`, `overcode tmux` and `overcode monitor` all open it. A two-pane layout in tmux:
50
48
  - **Top pane**: Compact agent dashboard with live status
51
49
  - **Bottom pane**: The focused agent's native terminal — no emulation, real tmux
52
50
  - `j/k` navigates agents, bottom pane follows
@@ -66,7 +64,7 @@ The TUI displays all agents with live status updates, showing:
66
64
  - **Launch agents** with custom prompts and permission settings
67
65
  - **Send instructions** directly from the dashboard
68
66
  - **Standing orders** - persistent instructions that guide agent behavior
69
- - **Agent hierarchy** - parent/child delegation with follow mode and reporting
67
+ - **Agent hierarchy** - parent/child delegation with follow mode, reporting and oversight presets (see [Child Agents](docs/children.md))
70
68
  - **Cost budgets** - per-agent spending limits with automatic enforcement
71
69
  - **Sleep mode** - pause agents and exclude them from stats
72
70
  - **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.
@@ -104,11 +102,10 @@ limitations.
104
102
  Aggregate agents from multiple machines into one dashboard:
105
103
  - Configure sister machines in `~/.overcode/config.yaml`
106
104
  - Remote agents appear alongside local ones
107
- - In tmux split mode, selecting a sister agent auto-zooms the dashboard with a preview pane
105
+ - Selecting a sister agent auto-zooms the dashboard with a preview pane
106
+ - Each remote runs `overcode web`, a small API server that serves the sister API only (there is no web UI)
108
107
 
109
108
  ### Analytics & Export
110
- - **Web dashboard** - mobile-friendly monitoring from any device
111
- - **Historical analytics** - browse session history with charts
112
109
  - **Parquet export** - analyze data in Jupyter notebooks
113
110
  - **Presence tracking** - correlate activity with your availability
114
111
 
@@ -11,6 +11,7 @@ Welcome to the overcode documentation. Overcode is a TUI supervisor for managing
11
11
  | [CLI Reference](cli-reference.md) | Complete reference for all commands and options |
12
12
  | [Configuration](configuration.md) | Config file, environment variables, and presets |
13
13
  | [Advanced Features](advanced-features.md) | Sleep mode, remote monitoring, and more |
14
+ | [Child Agents](children.md) | Parent/child trees, reports, oversight presets, budgets, and when to use a child instead of a subagent |
14
15
  | [Skill Profiles](skill-profiles.md) | Named sets of skills switched on per agent, instead of always on |
15
16
  | [Agent Backends](backends.md) | Running opencode/Codex/Grok agents; support matrix and flag mapping |
16
17
  | [Claude Session Files](claude-session-files.md) | How token counting and cost estimation works internally |
@@ -136,11 +136,30 @@ Heartbeats and supervision resume automatically on the next daemon loop (~10s).
136
136
 
137
137
  ### No Global Default
138
138
 
139
- Budgets are per-agent only. There is no global default budget in config.
139
+ Budgets are per-agent only. There is no global default budget in config;
140
+ a [children preset](configuration.md#children-presets) can give the
141
+ children launched with it a default budget.
142
+
143
+ ## Billing Codes
144
+
145
+ Every agent's spend is filed under a billing code in a ledger that is kept
146
+ for ever: its launch name by default (all the runs named `shirka` add up
147
+ under `shirka`), or `overcode launch --billing-code client-x`. A child or a
148
+ fork always takes its parent's code, so a whole tree of delegated work adds
149
+ up under the code its root was launched with. `overcode rebill <agent>
150
+ <code>` moves an agent to another code from now on (its spend so far stays
151
+ where it was), and `overcode billing` prints spend per code (`--since 30d`,
152
+ `--month 2026-09`). A code has a fixed id and a name you can change:
153
+ `overcode billing rename` renames it in every report, past ones included,
154
+ and `overcode billing merge` folds codes into another (several at once, or a quoted pattern). In the TUI, the new-agent dialog and the "Billing
155
+ code…" palette command cycle a `billing.codes` shortlist from config.yaml
156
+ with `Space` ([TUI guide](tui-guide.md#billing-codes)). Codes have no
157
+ limits of their own: budgets stay per agent. Details:
158
+ [Billing Codes](configuration.md#billing-codes).
140
159
 
141
160
  ## Agent Hierarchy
142
161
 
143
- Agents can spawn child agents, creating a parent/child tree. This enables delegation patterns where a parent agent launches children to handle subtasks.
162
+ Agents can spawn child agents, creating a parent/child tree. This enables delegation patterns where a parent agent launches children to handle subtasks. [Child Agents](children.md) covers the whole model, including presets and when to use a child instead of a Claude subagent.
144
163
 
145
164
  ### Launching Child Agents
146
165
 
@@ -169,7 +188,7 @@ overcode launch -n child --follow -p "Do the task. When done: overcode report --
169
188
  overcode follow child-agent
170
189
  ```
171
190
 
172
- When the child reports success, it's marked "done" — it stays alive in tmux but is hidden from default views.
191
+ When the child reports success, it's marked "done" — it stays alive in tmux but is hidden from default views, until the monitor daemon closes its window after its archive delay (1 h by default; `--archive-after` or a preset changes it).
173
192
 
174
193
  ### Reporting Completion
175
194
 
@@ -180,7 +199,7 @@ overcode report --status success --reason "All tests pass"
180
199
  overcode report --status failure --reason "Build failed"
181
200
  ```
182
201
 
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.
202
+ Without a report, the child enters `waiting_oversight` status when it stops: at rest (⚪), with 📭 as its result (the TUI's `l` result mode). The parent's follow mode blocks until a report arrives or the oversight policy triggers.
184
203
 
185
204
  **Always include `overcode report` at the end of your `--prompt`.** This is the most common mistake when setting up delegation.
186
205
 
@@ -199,7 +218,9 @@ overcode launch -n child --follow --on-stuck fail -p "..."
199
218
  overcode launch -n child --follow --oversight-timeout 5m -p "..."
200
219
  ```
201
220
 
202
- The TUI shows a countdown timer (⏳) for agents with a timeout policy.
221
+ `--preset supervised|balanced|autonomous` sets the oversight policy and the archive delay together (see [Presets](children.md#presets)).
222
+
223
+ The TUI shows a countdown timer (⏳) for agents with a timeout policy. The monitor daemon starts the timeout when the child stops, so it applies whether or not a parent follows it; a child prompted again before it expires loses its deadline and gets a fresh one when it next stops. An expired timeout shows ⌛ as the result.
203
224
 
204
225
  ### Budget Transfer
205
226
 
@@ -230,28 +251,29 @@ Press `S` to cycle to "Tree" sort mode. Agents display in a hierarchy with tree
230
251
  parent-agent 🟢 2.5h ...
231
252
  ├─child-1 🟢 1.2h ...
232
253
  │ └─grandchild 🟠 0.5h ...
233
- └─child-2 ✓ 0.8h ...
254
+ └─child-2 ⚪ 0.8h ✅ all tests pass ...
234
255
  ```
235
256
 
236
- - **`X`** — Collapse/expand children of the focused agent
237
- - **`D`** — Show/hide "done" child agents (hidden by default)
257
+ - **`←` / `→`** — Fold / unfold the focused agent: its children, 🌙 background sessions and delegated work together. `→` on an open agent steps onto its first child; `←` on a closed one moves to its parent ([TUI guide → Folding](tui-guide.md#folding))
258
+ - **`X`** — Close everything open, or with nothing open, open everything
259
+ - **`d`** (Agent visibility) — Show/hide "done" child agents (hidden by default)
238
260
 
239
- The child count column (👶) shows how many direct children each agent has.
261
+ The child count column (👶) shows how many direct children each agent has, then how they stand: `👶 5 2▶ 1📭 1✅ 1❌` (▶ still working, 📭 stopped without a report, ✅ success, ❌ failure or timeout; zero counts are left out). A parent whose turn ended while its children still work shows 🟡 ("Waiting on N children"), not 🔴.
240
262
 
241
263
  ### Done Agents
242
264
 
243
- When a child reports success or failure via `overcode report`, it enters the "done" state:
265
+ When a child reports success or failure via `overcode report`, it enters the "done" state, at rest (⚪) with ✅ or ❌ and the reason as its result (the TUI's `l` result mode; `overcode list` prints it in full):
244
266
  - Hidden from default list and TUI views
245
- - Press `D` in TUI or use `--show-done` in CLI to reveal them
267
+ - Turn on "Done child agents" in the TUI's Agent visibility dialog (`d`), or use `--show-done` in CLI, to reveal them
246
268
  - Auto-archived by the monitor daemon after 1 hour
247
269
  - Manually archive with `overcode cleanup --done`
248
270
 
249
271
  ### Waiting for Oversight
250
272
 
251
- If a child stops without calling `overcode report`, it enters `waiting_oversight` (👁️):
252
- - Visible in the TUI with a yellow indicator
273
+ If a child stops without calling `overcode report`, it enters `waiting_oversight`:
274
+ - Visible in the TUI at rest (⚪), with 📭 as its result; it never rings the bell
253
275
  - Parent's follow mode remains blocked, waiting for a report
254
- - With `--oversight-timeout`, a countdown timer appears in the TUI
276
+ - With `--oversight-timeout`, a countdown timer appears in the TUI (the daemon enforces it, with or without `--follow`)
255
277
  - Resolve by attaching to the child's tmux window and running `overcode report` manually, or let the timeout expire
256
278
 
257
279
  ### Filtered List
@@ -298,37 +320,42 @@ Quickly reset an agent to the main branch.
298
320
  - Starting fresh on a new task
299
321
  - Pulling in changes from other agents
300
322
 
301
- ## Remote Monitoring
302
-
303
- Monitor agents from anywhere with the web dashboard.
304
-
305
- ### Web Dashboard
323
+ ## API Server
306
324
 
307
- Start the dashboard server:
325
+ `overcode web` runs a small HTTP API server. It serves the **sister API only** —
326
+ what another machine's overcode calls when it adds this one as a sister (see
327
+ [Sister Integration](#sister-integration)). There is no web UI: the HTML
328
+ dashboard, analytics pages and the Cloudflare relay were removed.
308
329
 
309
330
  ```bash
310
331
  overcode web # Start on localhost:8080
311
- overcode web --host 0.0.0.0 # LAN access (needs api_key)
332
+ overcode web --host 0.0.0.0 # LAN access (refused without web.api_key)
312
333
  overcode web --port 3000 # Custom port
313
334
  overcode web --stop # Stop the server
314
335
  ```
315
336
 
316
337
  The server runs in the background — the command exits immediately. Run `overcode web` again to see the URL if already running.
317
338
 
318
- Access `http://<your-ip>:8080` from your phone, tablet, or another machine.
339
+ Routes (all JSON; `X-API-Key` required when `web.api_key` is set):
319
340
 
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
341
+ | Route | Used by |
342
+ |-------|---------|
343
+ | `GET /api/status` | sister TUI poll, SSH provisioner version check |
344
+ | `GET /api/agents/{name}/status` | sister TUI focused-agent poll |
345
+ | `GET /api/timeline/raw` | sister TUI timeline |
346
+ | `GET /health` | SSH provisioner |
347
+ | `POST/PUT/DELETE /api/agents/...`, `/api/daemon/...` | sister control actions (needs `web.allow_control: true` and `web.api_key`) |
348
+ | `POST /api/shutdown` | SSH provisioner (stops services, agents keep running) |
349
+
350
+ The server sends no CORS headers: its clients are overcode processes, not
351
+ browsers, so a web page you visit cannot read your fleet through it. Binding
352
+ off localhost needs `web.api_key`, and `web.allow_control` does too (control
353
+ routes answer 403 without a key). Sisters send the key as `X-API-Key`; set
354
+ the same `api_key` on the sister's entry in `sisters:`.
328
355
 
329
356
  ### TUI Toggle
330
357
 
331
- Press `w` in the TUI to start/stop the web server. The URL appears in the daemon panel.
358
+ Press `w` in the TUI to start/stop the API server. Its port appears in the daemon status bar.
332
359
 
333
360
  ## AI Summarizer
334
361
 
@@ -463,38 +490,6 @@ Presence tracking works on all platforms. Sleep detection (gap inference), TUI h
463
490
  ~/.overcode/presence_log.csv
464
491
  ```
465
492
 
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
493
  ## Sister Integration
499
494
 
500
495
  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.
@@ -510,7 +505,10 @@ overcode web
510
505
 
511
506
  ### Setup Option A: SSH Tunnels (Recommended)
512
507
 
513
- SSH tunnels keep all traffic encrypted with no API key needed.
508
+ SSH tunnels keep all traffic encrypted with no API key needed for viewing.
509
+ To also control the remote's agents from here, the remote needs
510
+ `web.allow_control: true` and a `web.api_key` (control routes answer 403
511
+ without one), and the sister entry below needs the same `api_key`.
514
512
 
515
513
  On the **monitoring machine**, add tunnels in `~/.ssh/config`:
516
514
 
@@ -545,7 +543,7 @@ sisters:
545
543
 
546
544
  ### Setup Option B: Direct LAN with API Key
547
545
 
548
- Expose the web server directly on the LAN. Requires an API key for security.
546
+ Expose the API server directly on the LAN. Requires an API key for security.
549
547
 
550
548
  On each **remote machine**, add to `~/.overcode/config.yaml`:
551
549
 
@@ -616,7 +614,7 @@ This typically happens if:
616
614
  For debugging TUI issues:
617
615
 
618
616
  ```bash
619
- overcode monitor --diagnostics
617
+ overcode monitor --diagnostics # opens the split with a diagnostics-mode dashboard
620
618
  ```
621
619
 
622
620
  This disables auto-refresh timers, letting you manually refresh with `r` and observe state changes.
@@ -625,7 +623,7 @@ This disables auto-refresh timers, letting you manually refresh with `r` and obs
625
623
 
626
624
  ### Color Issues
627
625
 
628
- If colors render incorrectly, press `M` for monochrome mode. This strips ANSI codes from the preview pane.
626
+ If colors render incorrectly, press `M` for monochrome mode. This strips ANSI codes from the preview pane (sister agents and jobs).
629
627
 
630
628
  ### Mouse Issues
631
629
 
@@ -634,7 +632,3 @@ If mouse events interfere with your terminal:
634
632
  2. Mouse capture is disabled
635
633
  3. Select text normally
636
634
  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.
@@ -18,7 +18,7 @@ header-includes: |
18
18
 
19
19
  # Overview
20
20
 
21
- Overcode is a CLI/TUI orchestration layer for managing multiple Claude Code agent sessions running in tmux. It provides real-time status monitoring, time tracking, cost estimation, heartbeat automation, and a web dashboard — all built on top of tmux as the process host and Claude Code's JSONL history as the data source.
21
+ Overcode is a CLI/TUI orchestration layer for managing multiple Claude Code agent sessions running in tmux. It provides real-time status monitoring, time tracking, cost estimation, heartbeat automation, and an HTTP API for sister instances — all built on top of tmux as the process host and Claude Code's JSONL history as the data source.
22
22
 
23
23
  **The codebase is 28,950 lines of Python across 72 source files.**
24
24
 
@@ -66,7 +66,7 @@ The core data pipeline is simple: tmux panes are scraped for status, the monitor
66
66
 
67
67
  3. **Consumers** read the published state file:
68
68
  - **TUI** (Textual, ~2s refresh) — merges daemon state + session registry + sister data
69
- - **Web Dashboard** (stdlib HTTP) — serves JSON API + HTML dashboard
69
+ - **API Server** (stdlib HTTP) — serves the JSON sister API (no HTML UI since the web UI was removed)
70
70
  - **Supervisor Daemon** — reads state to decide when to launch intervention agents
71
71
 
72
72
  \newpage
@@ -93,6 +93,8 @@ The largest subsystem, split across:
93
93
 
94
94
  The TUI already has good separation between pure logic and UI code. The action mixin pattern keeps `tui.py` from being even larger, though the mixins themselves are tightly coupled to `SupervisorTUI`'s internal state.
95
95
 
96
+ Since 0.6.0 the TUI has one layout: it is the top pane of the `overcode tmux` split, and navigating agents switches the window of a linked tmux session shown in the bottom pane. `overcode`, `overcode monitor` and `overcode tmux` all build that split (`cli/split.py` `open_split`), which runs `overcode monitor --sync-target <linked session>` in its top pane. The standalone (non-split) dashboard, its preview toggle, fullscreen preview and manual pane sync were removed; the preview pane remains only for sister agents and jobs view. (Line counts on this page predate that change.)
97
+
96
98
  ## Status Detection — 1,481 lines
97
99
 
98
100
  Four modules implementing a dual-strategy pattern:
@@ -115,6 +117,11 @@ Four modules implementing a dual-strategy pattern:
115
117
 
116
118
  ## Web Server — 3,699 lines (13% of codebase)
117
119
 
120
+ > **Update:** the HTML dashboard, analytics pages, `web_templates.py`,
121
+ > `web_chartjs.py` and the Cloudflare relay have since been removed. The
122
+ > server (`web_server.py`, `web_api.py`, `web_control_api.py`) now serves the
123
+ > sister API only. The figures below are from the original analysis.
124
+
118
125
  - `web_templates.py` (1,656 lines): **the single biggest contributor to bloat** — entire HTML/CSS/JS dashboard as Python string literals
119
126
  - `web_server.py` (642 lines): stdlib `http.server` routing
120
127
  - `web_api.py` (844 lines): data aggregation for JSON API endpoints
@@ -190,15 +197,15 @@ predates this reports nothing and is read as claude-code with everything on.
190
197
  `GrokStatsReader` reads a full, genuinely billing-accurate token/cost split
191
198
  from `updates.jsonl`; `NullStatsReader` answers "unknown" for backends with
192
199
  neither.
193
- - *Telemetry* — the hook-state file format (`hook_state_<agent>.json`,
194
- `hook_events_<agent>.jsonl`) is overcode's own neutral schema. Claude Code
200
+ - *Telemetry* — the hook-state file format (`agents/<session id>/hook_state.json`,
201
+ `hook_events.jsonl`; name-keyed `hook_state_<agent>.json` before 0.6) is overcode's own neutral schema. Claude Code
195
202
  fills it via `--settings` hooks calling `overcode hook-handler`; opencode
196
203
  fills it from the bundled plugin; codex fills it from per-launch `-c
197
204
  'hooks.<Event>=[...]'` config overrides plus
198
205
  `--dangerously-bypass-hook-trust` (snake_case stdin, close enough to
199
206
  Claude's own that little dialect translation is needed); grok fills it from
200
207
  a global, inert-outside-overcode `~/.grok/hooks/overcode.json` file
201
- (camelCase stdin, translated by `hook_handler._normalize_hook_payload()`).
208
+ (camelCase stdin, translated by `hook_dialects.GrokHookDialect`).
202
209
  Any backend that can write those files gets the full `HookStatusDetector`
203
210
  experience for free.
204
211
 
@@ -435,7 +442,6 @@ Replace the four separate files (daemon state JSON, sessions JSON, status histor
435
442
  | `tui_actions/input.py` | 217 | TUI |
436
443
  | `tui_actions/daemon.py` | 201 | TUI |
437
444
  | `help_overlay.py` | 197 | TUI |
438
- | `logging_config.py` | 193 | Infra |
439
445
  | `protocols.py` | 189 | Tmux |
440
446
  | `testing/tui_eye.py` | 185 | Testing |
441
447
  | `claude_config.py` | 186 | Claude |
@@ -443,11 +449,9 @@ Replace the four separate files (daemon state JSON, sessions JSON, status histor
443
449
  | `bundled_skills.py` | 175 | Claude |
444
450
  | `daemon_panel.py` | 169 | TUI |
445
451
  | `summary_config_modal.py` | 165 | TUI |
446
- | `mocks.py` | 156 | Tmux |
447
452
  | `notifier.py` | 145 | Infra |
448
453
  | `daemon_logging.py` | 144 | Infra |
449
454
  | `summary_groups.py` | 141 | TUI |
450
- | `fullscreen_preview.py` | 130 | TUI |
451
455
  | `tmux_utils.py` | 128 | Tmux |
452
456
  | `hook_handler.py` | 123 | Claude |
453
457
  | `usage_monitor.py` | 119 | Infra |
@@ -457,5 +461,4 @@ Replace the four separate files (daemon state JSON, sessions JSON, status histor
457
461
  | `daemon_utils.py` | 93 | Infra |
458
462
  | `preview_pane.py` | 101 | TUI |
459
463
  | `status_detector_factory.py` | 83 | Status |
460
- | `interfaces.py` | 49 | Tmux |
461
464
  | `web_chartjs.py` | 32 | Web |