overcode 0.5.7__tar.gz → 0.6.1__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.
- {overcode-0.5.7/src/overcode.egg-info → overcode-0.6.1}/PKG-INFO +12 -13
- {overcode-0.5.7 → overcode-0.6.1}/README.md +10 -11
- {overcode-0.5.7 → overcode-0.6.1}/docs/README.md +2 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/advanced-features.md +65 -71
- {overcode-0.5.7 → overcode-0.6.1}/docs/architecture.md +12 -9
- {overcode-0.5.7 → overcode-0.6.1}/docs/backends.md +111 -37
- overcode-0.6.1/docs/children.md +273 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/claude-session-files.md +47 -5
- overcode-0.6.1/docs/cli-reference.md +966 -0
- overcode-0.6.1/docs/configuration.md +1474 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/README.md +14 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/agent-backends-codex-grok.md +4 -2
- overcode-0.6.1/docs/design/agent-observability-0.6.1.md +1034 -0
- overcode-0.6.1/docs/design/auto-naming.md +493 -0
- overcode-0.6.1/docs/design/background-shell-classification.md +103 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/zellij-vs-tmux.md +1 -1
- overcode-0.6.1/docs/design/billing-code-ids.md +165 -0
- overcode-0.6.1/docs/design/cost-model-0.6.1.md +499 -0
- overcode-0.6.1/docs/design/engine-0.6.md +305 -0
- overcode-0.6.1/docs/design/opencode-parity.md +239 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/opencode-stats-reader-performance.md +107 -5
- overcode-0.6.1/docs/design/quality-review-2026-10.md +378 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/scaling-audit-2026-09-22.md +14 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/getting-started.md +9 -19
- overcode-0.6.1/docs/release-notes-0.5.8.md +8 -0
- overcode-0.6.1/docs/release-notes-0.6.0.md +8 -0
- overcode-0.6.1/docs/release-notes-0.6.1.md +49 -0
- overcode-0.6.1/docs/releasing.md +54 -0
- overcode-0.6.1/docs/skill-profiles.md +117 -0
- overcode-0.6.1/docs/tui-guide.md +893 -0
- {overcode-0.5.7 → overcode-0.6.1}/pyproject.toml +12 -4
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/activity_log.py +6 -4
- overcode-0.6.1/src/overcode/agent_bundle.py +422 -0
- overcode-0.6.1/src/overcode/agent_files.py +78 -0
- overcode-0.6.1/src/overcode/agent_identity.py +50 -0
- overcode-0.6.1/src/overcode/agent_io.py +399 -0
- overcode-0.6.1/src/overcode/agent_worktree.py +125 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/__init__.py +2 -0
- overcode-0.6.1/src/overcode/backends/_stats_common.py +234 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/base.py +153 -65
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/claude_code.py +55 -33
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/codex.py +71 -87
- overcode-0.6.1/src/overcode/backends/codex_stats.py +635 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/grok.py +55 -89
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/grok_stats.py +168 -70
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/hermes.py +97 -99
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/hermes_stats.py +92 -136
- overcode-0.6.1/src/overcode/backends/jsonl_tail.py +263 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode.py +111 -79
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode2.py +9 -19
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode2_patterns.py +16 -49
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode2_stats.py +58 -211
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode_stats.py +483 -270
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/shell.py +19 -32
- overcode-0.6.1/src/overcode/bundled_skills.py +169 -0
- overcode-0.6.1/src/overcode/burn.py +159 -0
- overcode-0.6.1/src/overcode/child_lifecycle.py +155 -0
- overcode-0.6.1/src/overcode/child_presets.py +267 -0
- overcode-0.6.1/src/overcode/claude_bg.py +998 -0
- overcode-0.6.1/src/overcode/claude_bg_ledger.py +425 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/claude_config.py +0 -50
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/__init__.py +9 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/_shared.py +13 -4
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/activity.py +4 -6
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/agent.py +594 -158
- overcode-0.6.1/src/overcode/cli/budget.py +711 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/config.py +53 -36
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/daemon.py +5 -3
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/doctor.py +91 -8
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/hooks.py +1 -6
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/jobs.py +12 -5
- overcode-0.6.1/src/overcode/cli/keys.py +178 -0
- overcode-0.6.1/src/overcode/cli/lifecycle.py +178 -0
- overcode-0.6.1/src/overcode/cli/models.py +273 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/monitoring.py +186 -100
- overcode-0.6.1/src/overcode/cli/naming.py +430 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/parallelism.py +1 -1
- overcode-0.6.1/src/overcode/cli/quota.py +128 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/sister.py +23 -17
- overcode-0.6.1/src/overcode/cli/skill_profiles.py +299 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/split.py +70 -26
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/tags.py +1 -1
- overcode-0.6.1/src/overcode/cli/trip.py +132 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/view.py +4 -4
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/wrappers.py +2 -3
- overcode-0.6.1/src/overcode/clock.py +234 -0
- overcode-0.6.1/src/overcode/codes.py +495 -0
- overcode-0.6.1/src/overcode/columns/__init__.py +1 -0
- overcode-0.6.1/src/overcode/columns/column.py +133 -0
- overcode-0.6.1/src/overcode/columns/context.py +379 -0
- overcode-0.6.1/src/overcode/columns/emoji.py +87 -0
- overcode-0.6.1/src/overcode/columns/hover.py +271 -0
- overcode-0.6.1/src/overcode/columns/layout.py +153 -0
- overcode-0.6.1/src/overcode/columns/registry.py +805 -0
- overcode-0.6.1/src/overcode/columns/render_context.py +134 -0
- overcode-0.6.1/src/overcode/columns/render_git.py +80 -0
- overcode-0.6.1/src/overcode/columns/render_identity.py +231 -0
- overcode-0.6.1/src/overcode/columns/render_performance.py +174 -0
- overcode-0.6.1/src/overcode/columns/render_supervision.py +313 -0
- overcode-0.6.1/src/overcode/columns/render_time.py +44 -0
- overcode-0.6.1/src/overcode/columns/render_usage.py +300 -0
- overcode-0.6.1/src/overcode/columns/render_virtual.py +316 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/command_palette.py +131 -18
- overcode-0.6.1/src/overcode/config.py +1407 -0
- overcode-0.6.1/src/overcode/conversation_spend.py +619 -0
- overcode-0.6.1/src/overcode/conversation_warning.py +108 -0
- overcode-0.6.1/src/overcode/cost_check.py +163 -0
- overcode-0.6.1/src/overcode/daemon_cadence.py +60 -0
- overcode-0.6.1/src/overcode/daemon_housekeeping.py +457 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/daemon_logging.py +37 -1
- overcode-0.6.1/src/overcode/daemon_presence.py +182 -0
- overcode-0.6.1/src/overcode/daemon_process_probe.py +132 -0
- overcode-0.6.1/src/overcode/daemon_stats_sync.py +455 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/daemon_utils.py +0 -1
- overcode-0.6.1/src/overcode/data/claude_prices.json +274 -0
- overcode-0.6.1/src/overcode/data/keymaps/default.yaml +10 -0
- overcode-0.6.1/src/overcode/data/keymaps/vscode.yaml +83 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/data_export.py +0 -1
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/dependency_check.py +2 -26
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/doctor.py +379 -12
- overcode-0.6.1/src/overcode/energy.py +239 -0
- overcode-0.6.1/src/overcode/engine_protocol.py +275 -0
- overcode-0.6.1/src/overcode/engine_recorders.py +209 -0
- overcode-0.6.1/src/overcode/engine_socket.py +524 -0
- overcode-0.6.1/src/overcode/engine_wake.py +264 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/entrypoint.py +26 -12
- overcode-0.6.1/src/overcode/episodes.py +417 -0
- overcode-0.6.1/src/overcode/exceptions.py +125 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/follow_mode.py +39 -51
- overcode-0.6.1/src/overcode/git_context.py +336 -0
- overcode-0.6.1/src/overcode/git_stats.py +103 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/history_reader.py +595 -194
- overcode-0.6.1/src/overcode/hook_dialects.py +226 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/hook_handler.py +724 -294
- overcode-0.6.1/src/overcode/hook_status_detector.py +1390 -0
- overcode-0.6.1/src/overcode/idle_stages.py +115 -0
- overcode-0.6.1/src/overcode/implementations.py +548 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/job_launcher.py +5 -8
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/job_manager.py +15 -130
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/journey.py +171 -38
- overcode-0.6.1/src/overcode/json_store.py +331 -0
- overcode-0.6.1/src/overcode/keymap.py +683 -0
- overcode-0.6.1/src/overcode/launch_settings.py +175 -0
- overcode-0.6.1/src/overcode/launcher.py +1264 -0
- overcode-0.6.1/src/overcode/layout_migration.py +299 -0
- overcode-0.6.1/src/overcode/ledger.py +910 -0
- overcode-0.6.1/src/overcode/lifecycle.py +780 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/mentor.py +2 -2
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/model_metadata.py +2 -2
- overcode-0.6.1/src/overcode/monitor_daemon.py +2442 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/monitor_daemon_core.py +69 -87
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/monitor_daemon_state.py +201 -25
- overcode-0.6.1/src/overcode/month_files.py +144 -0
- overcode-0.6.1/src/overcode/name_source.py +105 -0
- overcode-0.6.1/src/overcode/namer.py +1171 -0
- overcode-0.6.1/src/overcode/naming_lab.py +391 -0
- overcode-0.6.1/src/overcode/naming_policy.py +446 -0
- overcode-0.6.1/src/overcode/opencode_plugin/overcode-telemetry-v2/index.js +47 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/opencode_plugin/overcode-telemetry-v2/overcode-telemetry-core.mjs +147 -7
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/opencode_plugin/overcode-telemetry.js +89 -187
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/overagent.py +24 -7
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/pane_capture_gate.py +0 -4
- overcode-0.6.1/src/overcode/paths.py +364 -0
- overcode-0.6.1/src/overcode/pid_utils.py +305 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/presence_logger.py +29 -32
- overcode-0.6.1/src/overcode/price_table.py +555 -0
- overcode-0.6.1/src/overcode/pricing.py +365 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/process_resources.py +1 -1
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/protocols.py +50 -76
- overcode-0.6.1/src/overcode/quota_calibration.py +461 -0
- overcode-0.6.1/src/overcode/quota_engine.py +1061 -0
- overcode-0.6.1/src/overcode/quota_model.py +272 -0
- overcode-0.6.1/src/overcode/rename.py +346 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/sandbox_detect.py +0 -12
- overcode-0.6.1/src/overcode/session_archive.py +580 -0
- overcode-0.6.1/src/overcode/session_identity.py +258 -0
- overcode-0.6.1/src/overcode/session_manager.py +1476 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/settings.py +306 -372
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/sister_controller.py +1 -1
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/sister_poller.py +66 -2
- overcode-0.6.1/src/overcode/skill_library.py +593 -0
- overcode-0.6.1/src/overcode/spend_recompute.py +337 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/ssh_provisioner.py +16 -10
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/standing_instructions.py +14 -79
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/stat_gate.py +3 -3
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/stats_reader.py +70 -8
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/status_constants.py +200 -60
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/status_detector.py +67 -14
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/status_detector_factory.py +83 -17
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/status_history.py +31 -210
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/status_patterns.py +156 -66
- overcode-0.6.1/src/overcode/status_theme.py +348 -0
- overcode-0.6.1/src/overcode/statusline_tap.py +209 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/summarizer_client.py +25 -5
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/summarizer_component.py +3 -14
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/summarizer_prompts.py +119 -4
- overcode-0.6.1/src/overcode/summary_columns.py +124 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/summary_groups.py +0 -20
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/supervisor_daemon.py +218 -122
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/supervisor_daemon_core.py +8 -40
- overcode-0.6.1/src/overcode/swarm.py +1034 -0
- overcode-0.6.1/src/overcode/swarm_files.py +232 -0
- overcode-0.6.1/src/overcode/swarm_history.py +445 -0
- overcode-0.6.1/src/overcode/swarm_publisher.py +116 -0
- overcode-0.6.1/src/overcode/swarm_view.py +406 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/testing/renderer.py +0 -41
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/testing/tmux_driver.py +1 -1
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/testing/tui_eye.py +17 -2
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/testing/tui_eye_skill.md +11 -8
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/time_context.py +42 -44
- overcode-0.6.1/src/overcode/tmux_manager.py +249 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tmux_utils.py +152 -54
- overcode-0.6.1/src/overcode/transcript_index.py +939 -0
- overcode-0.6.1/src/overcode/trip.py +175 -0
- overcode-0.6.1/src/overcode/tui.py +2765 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui.tcss +51 -18
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/__init__.py +2 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/activity.py +3 -3
- overcode-0.6.1/src/overcode/tui_actions/claude_bg.py +113 -0
- overcode-0.6.1/src/overcode/tui_actions/command_bar.py +392 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/daemon.py +30 -10
- overcode-0.6.1/src/overcode/tui_actions/diagnostics.py +107 -0
- overcode-0.6.1/src/overcode/tui_actions/dialogs.py +1032 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/input.py +12 -6
- overcode-0.6.1/src/overcode/tui_actions/jobs.py +256 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/mentor.py +3 -3
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/navigation.py +7 -3
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/overagent.py +12 -18
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/session.py +372 -5
- overcode-0.6.1/src/overcode/tui_actions/sisters.py +351 -0
- overcode-0.6.1/src/overcode/tui_actions/swarm.py +619 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/view.py +125 -173
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_actions/view_control.py +7 -6
- overcode-0.6.1/src/overcode/tui_engine.py +293 -0
- overcode-0.6.1/src/overcode/tui_engine_link.py +359 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_helpers.py +66 -251
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_logic.py +26 -483
- overcode-0.6.1/src/overcode/tui_render.py +78 -0
- overcode-0.6.1/src/overcode/tui_split.py +557 -0
- overcode-0.6.1/src/overcode/tui_theme.py +260 -0
- overcode-0.6.1/src/overcode/tui_timers.py +149 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/__init__.py +13 -3
- overcode-0.6.1/src/overcode/tui_widgets/agent_visibility_modal.py +141 -0
- overcode-0.6.1/src/overcode/tui_widgets/billing_code_modal.py +207 -0
- overcode-0.6.1/src/overcode/tui_widgets/billing_codes_modal.py +892 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/column_header.py +24 -2
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/command_bar.py +59 -9
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/command_palette.py +42 -15
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/daemon_panel.py +89 -46
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/daemon_status_bar.py +190 -137
- overcode-0.6.1/src/overcode/tui_widgets/help_overlay.py +481 -0
- overcode-0.6.1/src/overcode/tui_widgets/naming_lab.py +869 -0
- overcode-0.6.1/src/overcode/tui_widgets/new_agent_defaults_modal.py +235 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/new_agent_modal.py +141 -4
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/rename_agent_modal.py +72 -16
- overcode-0.6.1/src/overcode/tui_widgets/session_summary.py +838 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/sister_selection_modal.py +1 -1
- overcode-0.6.1/src/overcode/tui_widgets/skills_modal.py +318 -0
- overcode-0.6.1/src/overcode/tui_widgets/status_colours_modal.py +180 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/status_timeline.py +184 -23
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/summary_prompt_lab.py +20 -8
- overcode-0.6.1/src/overcode/tui_widgets/swarm_rows.py +209 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/tui_log_panel.py +7 -28
- overcode-0.6.1/src/overcode/upgrade_consent.py +124 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/usage_monitor.py +50 -8
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/view_control.py +4 -2
- overcode-0.6.1/src/overcode/web_api.py +416 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/web_control_api.py +77 -60
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/web_server.py +97 -200
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/web_server_runner.py +31 -11
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/worker_guard.py +0 -7
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/wrapper.py +6 -5
- {overcode-0.5.7 → overcode-0.6.1/src/overcode.egg-info}/PKG-INFO +12 -13
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode.egg-info/SOURCES.txt +119 -11
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode.egg-info/entry_points.txt +1 -1
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode.egg-info/requires.txt +1 -1
- {overcode-0.5.7 → overcode-0.6.1}/tests/test_e2e_multi_agent_jokes.py +20 -28
- overcode-0.5.7/docs/cli-reference.md +0 -639
- overcode-0.5.7/docs/configuration.md +0 -676
- overcode-0.5.7/docs/tui-guide.md +0 -324
- overcode-0.5.7/src/overcode/backends/codex_stats.py +0 -521
- overcode-0.5.7/src/overcode/bundled_skills.py +0 -287
- overcode-0.5.7/src/overcode/cli/budget.py +0 -198
- overcode-0.5.7/src/overcode/cli/models.py +0 -124
- overcode-0.5.7/src/overcode/config.py +0 -745
- overcode-0.5.7/src/overcode/duration.py +0 -28
- overcode-0.5.7/src/overcode/exceptions.py +0 -236
- overcode-0.5.7/src/overcode/hook_status_detector.py +0 -879
- overcode-0.5.7/src/overcode/implementations.py +0 -427
- overcode-0.5.7/src/overcode/interfaces.py +0 -49
- overcode-0.5.7/src/overcode/launcher.py +0 -1502
- overcode-0.5.7/src/overcode/logging_config.py +0 -190
- overcode-0.5.7/src/overcode/mocks.py +0 -209
- overcode-0.5.7/src/overcode/monitor_daemon.py +0 -2038
- overcode-0.5.7/src/overcode/opencode_plugin/overcode-telemetry-v2/index.js +0 -21
- overcode-0.5.7/src/overcode/pid_utils.py +0 -310
- overcode-0.5.7/src/overcode/pricing.py +0 -189
- overcode-0.5.7/src/overcode/session_manager.py +0 -2084
- overcode-0.5.7/src/overcode/summary_columns.py +0 -2102
- overcode-0.5.7/src/overcode/supervisor_layout.sh +0 -55
- overcode-0.5.7/src/overcode/tmux_manager.py +0 -387
- overcode-0.5.7/src/overcode/transcript_index.py +0 -563
- overcode-0.5.7/src/overcode/tui.py +0 -5042
- overcode-0.5.7/src/overcode/tui_render.py +0 -453
- overcode-0.5.7/src/overcode/tui_widgets/fullscreen_preview.py +0 -133
- overcode-0.5.7/src/overcode/tui_widgets/help_overlay.py +0 -243
- overcode-0.5.7/src/overcode/tui_widgets/new_agent_defaults_modal.py +0 -143
- overcode-0.5.7/src/overcode/tui_widgets/session_summary.py +0 -523
- overcode-0.5.7/src/overcode/web/__init__.py +0 -0
- overcode-0.5.7/src/overcode/web/templates/analytics.html +0 -1089
- overcode-0.5.7/src/overcode/web/templates/dashboard.html +0 -553
- overcode-0.5.7/src/overcode/web_api.py +0 -955
- overcode-0.5.7/src/overcode/web_chartjs.py +0 -32
- overcode-0.5.7/src/overcode/web_templates.py +0 -23
- {overcode-0.5.7 → overcode-0.6.1}/LICENSE +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/MANIFEST.in +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/483-484/00_overview.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/483-484/01_usage_log.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/483-484/02_learning_journey.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/483-484/03_overagent.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/483-484/04_phasing_and_questions.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/acp-agent-integration-analysis.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/agent-agnostic-backends-opencode.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/agent-backend-hermes.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/README.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/SYNTHESIS.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/candidates.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-bernstein.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-bobbit.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-ccmanager.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-claude-squad.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-cmux.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-composio.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-dmux.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-gastown.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-kagan.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-orca.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-superset.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/bakeoffs/overcode-vs-vibe-kanban.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/e2e-devcontainer-testing.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/design/model-alias-resolution.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.3.0.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.4.2.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.1.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.2.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.3.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.4.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.5.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.6.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/release-notes-0.5.7.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/tui-refactoring-plan.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/ux-performance-analysis-2026-03-09.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/docs/wrappers.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/setup.cfg +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/setup.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/__init__.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/agent_scanner.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/opencode2_plugin_install.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/backends/overagent.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/claude_pid.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/__main__.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/focal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/perms.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/cli/skills.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/daemon_claude_skill.md +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/data/model_metadata.json +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/hermes_plugin/__init__.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/hermes_plugin/plugin.yaml +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/notifier.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/opencode_plugin/overcode-telemetry-v2/tui.js +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/prompt_lab.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/spawn.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/testing/__init__.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/agent_select_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/dialog_style.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/instruction_history_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/job_summary.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/journey_panel.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/jump_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/modal_base.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/passthru_config_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/preview_pane.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/summary_config_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/tui_widgets/tmux_config_modal.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode/usage_analytics.py +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/src/overcode.egg-info/dependency_links.txt +0 -0
- {overcode-0.5.7 → overcode-0.6.1}/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.
|
|
3
|
+
Version: 0.6.1
|
|
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
|
|
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
|
|
70
|
+
uvx overcode
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
|
|
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
|
|
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
|
|
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,9 +106,10 @@ 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
|
|
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
|
|
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.
|
|
114
113
|
|
|
115
114
|
### Supervisor Daemon
|
|
116
115
|
An optional Claude-powered orchestrator that:
|
|
@@ -145,11 +144,10 @@ limitations.
|
|
|
145
144
|
Aggregate agents from multiple machines into one dashboard:
|
|
146
145
|
- Configure sister machines in `~/.overcode/config.yaml`
|
|
147
146
|
- Remote agents appear alongside local ones
|
|
148
|
-
-
|
|
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)
|
|
149
149
|
|
|
150
150
|
### Analytics & Export
|
|
151
|
-
- **Web dashboard** - mobile-friendly monitoring from any device
|
|
152
|
-
- **Historical analytics** - browse session history with charts
|
|
153
151
|
- **Parquet export** - analyze data in Jupyter notebooks
|
|
154
152
|
- **Presence tracking** - correlate activity with your availability
|
|
155
153
|
|
|
@@ -168,6 +166,7 @@ Aggregate agents from multiple machines into one dashboard:
|
|
|
168
166
|
| `q` | Quit (or detach in tmux split) |
|
|
169
167
|
|
|
170
168
|
See the [TUI Guide](docs/tui-guide.md) for all keyboard shortcuts.
|
|
169
|
+
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
170
|
|
|
172
171
|
## Documentation
|
|
173
172
|
|
|
@@ -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
|
|
28
|
+
uvx overcode
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
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
|
|
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
|
|
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,9 +64,10 @@ 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
|
|
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
|
|
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.
|
|
72
71
|
|
|
73
72
|
### Supervisor Daemon
|
|
74
73
|
An optional Claude-powered orchestrator that:
|
|
@@ -103,11 +102,10 @@ limitations.
|
|
|
103
102
|
Aggregate agents from multiple machines into one dashboard:
|
|
104
103
|
- Configure sister machines in `~/.overcode/config.yaml`
|
|
105
104
|
- Remote agents appear alongside local ones
|
|
106
|
-
-
|
|
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)
|
|
107
107
|
|
|
108
108
|
### Analytics & Export
|
|
109
|
-
- **Web dashboard** - mobile-friendly monitoring from any device
|
|
110
|
-
- **Historical analytics** - browse session history with charts
|
|
111
109
|
- **Parquet export** - analyze data in Jupyter notebooks
|
|
112
110
|
- **Presence tracking** - correlate activity with your availability
|
|
113
111
|
|
|
@@ -126,6 +124,7 @@ Aggregate agents from multiple machines into one dashboard:
|
|
|
126
124
|
| `q` | Quit (or detach in tmux split) |
|
|
127
125
|
|
|
128
126
|
See the [TUI Guide](docs/tui-guide.md) for all keyboard shortcuts.
|
|
127
|
+
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
128
|
|
|
130
129
|
## Documentation
|
|
131
130
|
|
|
@@ -11,6 +11,8 @@ 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 |
|
|
15
|
+
| [Skill Profiles](skill-profiles.md) | Named sets of skills switched on per agent, instead of always on |
|
|
14
16
|
| [Agent Backends](backends.md) | Running opencode/Codex/Grok agents; support matrix and flag mapping |
|
|
15
17
|
| [Claude Session Files](claude-session-files.md) | How token counting and cost estimation works internally |
|
|
16
18
|
|
|
@@ -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 (
|
|
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
|
-
|
|
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
|
|
254
|
+
└─child-2 ⚪ 0.8h ✅ all tests pass ...
|
|
234
255
|
```
|
|
235
256
|
|
|
236
|
-
-
|
|
237
|
-
- **`
|
|
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
|
-
-
|
|
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
|
|
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
|
-
##
|
|
302
|
-
|
|
303
|
-
Monitor agents from anywhere with the web dashboard.
|
|
304
|
-
|
|
305
|
-
### Web Dashboard
|
|
323
|
+
## API Server
|
|
306
324
|
|
|
307
|
-
|
|
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 (
|
|
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
|
-
|
|
339
|
+
Routes (all JSON; `X-API-Key` required when `web.api_key` is set):
|
|
319
340
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- **
|
|
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 (`
|
|
194
|
-
`
|
|
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 `
|
|
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 |
|