Changelog
What changed in each Orbit release, newest first. Breaking changes come before highlights. Follow a pull request link to find the delivery on GitHub. The newest three releases are expanded; select an older version to read its notes.
Changelog
0.37.0 Latest
Breaking Changes
- Ship sweep removed: the
orbitcommand, the seeded ship-sweep routine and its job are gone, andrun ship-sweep workflow.is deprecated and ignored. Unattended dispatch → useauto_ship orbitdrains orrun auto orbit, and delete the key. (Pull request)run ship - Regression severity:
regression_fromlinks and review findings carry one five-levelseverity(nit to critical). Older binaries refuse the new field, so upgrade the owner and followers together. (Pull request) - Regression sites always recorded:
workflow.is deprecated and ignored, becauseregression_risk. record_sites regression.are now always kept. Config that sets it → delete the key. (Pull request)sites - Store migrations: opening a workspace applies SQLite v69 (
run_resource_minutes_freshness_index) and v70 (reopen_legacy_experiment_admissions). Both are additive but change persisted storage, so upgrade hosts together. (Pull request)
Highlights
- Size-based riskiness: task regression risk is now fitted on footprint size (declared files before a diff exists, lines changed once one does), with the size-band evidence shown in place of driving files and a crew adjustment. (Pull request)
- Experiments from the dashboard: Analytics › Experiments can create, edit and start experiments, and
task.now records the crew that actually ran, including experiment arms and provider-hold redraws. (Pull request)crew - Severity-weighted scorecards: regressions and findings share one severity scale, and scorecards weight them by it. (Pull request)
- Site-attributed hotspots: Analytics › Codebase counts a regression against the files its recorded sites name instead of the whole footprint, and a file view lists its regressed symbols. (Pull request)
- Steadier landing: a failed check is rerun once before the candidate is blamed, and a handoff waits for the base fix after an inherited failure and reconciles PRs merged outside Orbit. (Pull request)
0.36.0
Breaking Changes
- Resource-minute migration: opening a workspace applies SQLite v68 (
resource_minute_regime). The migration is additive (two nullable columns older binaries never read) but changes persisted storage; upgrade hosts together. (Pull request) - Scheduled task field: v0.35.0 and older refuse unknown task fields, so they can’t read a task whose
not_beforeis set. Mixed-version hosts → upgrade the owner and followers together. (Pull request)
Highlights
- Scheduled tasks: a task’s optional
not_beforestops every dispatcher from starting it earlier, and the hold lifts by itself.orbitandtask list --scheduled not_beforerange filters list upcoming work; the dashboard shows the schedule in task detail and the forecast. (Pull request) - Workspace presets:
orbitapplies a distribution’s TOML preset that picks which shipped routines and auto-tasks are seeded, enables plugin-seeded definitions and sets workspace config. The whole file is validated before anything is written. (Pull request)workspace init --preset <file> - Count-based windows: forecasts and per-task analytics can count the newest deliveries instead of a time period (
last50,last200,last500, ororbit), so a quiet month no longer blanks them. (Pull request)run profiles --accuracy --last N - Dashboard: task detail shows the run’s branch and worktree path. Locks held lists locked files with the tasks holding them, marks paths several tasks share and filters by a task’s footprint. Fleet drains shows one tab per host. (Pull request)
- Symbol-level footprints: task-pilot and the review auto-tasks declare
symbol:selectors where they can, and aregression_fromrelation can name the defect’ssites, recorded onceworkflow.is on.regression_risk. record_sites
0.35.0
Breaking Changes
- Lease queue migration: opening a workspace applies SQLite v67 (
task_reservation_lease_queue). The migration is additive (three nullable columns older binaries never read) but changes persisted storage; upgrade hosts together. (Pull request) - Hard leases queue by default: an overlapping hard
orbit.now waits in the lease queue (lease. request granted=,false queued=, holding nothing) instead of being refused, andtrue orbit.includes queued leases. Immediate refusal → passlease. list wait=(CLIfalse --no-wait). (Pull request)
Highlights
- Path lease queue and listener: hard leases queue in priority-then-age order with aging,
orbit.adds paths with deadlock refusal, and the lease listener streams notices over SSE, terminates TLS natively and rate-limits every request. The dashboard gains a Leases view. (Pull request)lease. expand - Backlog forecast v2: the forecast simulates the drain’s real admission, including dependencies, file locks, dispatch order, CPU and memory fit, blocked, failed and retried runs, review modes and expected regression rework. The drain card shows it on one line. (Pull request)
- Task riskiness: each task shows a regression riskiness score from its files’ regression history, with the top driving files, on Tasks rows and in task detail. (Pull request)
- Claim recovery and bulk settling:
orbitandtask recover-claim orbit.return a live follower claim to blocked or backlog, and the dashboard’s Settle merged PRs button settles every task whose delivery PR merged. (Pull request)task. recover_claim - Auto-task last fire:
orbit.reports each auto-task’s last fire time, minted task and outcome, and routine retrieval exposes the last-fire run id and step outputs. (Pull request)auto_task. list - Held, not failed: agent-declared task blocks, fail-closed
pr_completestops and required commands that fail identically on the base are recorded as held, so they no longer count as failed runs. (Pull request)
0.34.0
Breaking Changes
- MCP task list:
orbit_task_listreturns compact rows by default instead of full records, andview=always needs an explicitbounded workspace. Full records → passfieldsfor description, plan or acceptance criteria. (Pull request)
Highlights
- Experiments: Run randomized experiments over agent treatments, with sticky assignment at admission, instruction, tool, crew, config and skill overlays, and a per-arm readout with intervals and sample-ratio checks, from the CLI, MCP or Analytics › Experiments. (Pull request)
- Path leases: Interactive sessions can take advisory or hard leases on paths through
orbit, MCP and loopback REST, with a durable notice stream covering overlap, landing and expiry. (Pull request)lease - Granted tools: Operators can lift the implementer’s deny list for named read-safe tools with
granted_tools, with classification at grant time, an owner-host placement hold, and mutation proposals applied after approval. (Pull request) - Explore brief: Task-pilot stores a revision-keyed code map for each task, and runs receive it, with a turns-to-first-edit series and an accuracy report. It runs in shadow mode for now. (Pull request)
- Backlog forecast: Orbit forecasts drain time, cost and tokens from delivery history, records forecasts on a schedule, and shows them on the Tasks drain card. (Pull request)
- Host labels and type crew pools: Tasks can require host capability labels through
requires_labelsandmachine., andlabels workflow.routes crew draws by task type. (Pull request)type_complexity_crews
0.33.0
Breaking Changes
- Job-run task recency migration: opening a workspace applies SQLite v59 (
job_run_task_recency). The migration is additive (a new table, index and triggers older binaries never touch) but changes persisted storage; upgrade hosts together. (Pull request) - Cursor, Pi and OpenCode lanes retired: configuration and dispatch now reject the
cursor,piandopencodeproviders; recorded history still displays them. Crews on those providers → move them to a supported provider. (Pull request) - New task history decision: tag edits record a
tags_changeddecision, which v0.32.0 and older cannot read, and the distributed admission contract now carries review-skip tags. Mixed-version hosts → upgrade the owner and followers together. (Pull request) orbitremoved: the hidden error-formatting alias is gone, so scripts passing it now fail.tool run --pretty --prettyremoved → drop the flag. (Pull request)
Highlights
- Decision channel: Orbit records decision requests on held work and raises them through a new state trigger. Operators list and answer them from
orbit, MCP or the dashboard, and registered plugins can submit authenticated answers. (Pull request)decision - Why stuck: a dashboard card links each blocked or held task to the run or finding that stopped it, with one-click requeue, settle-merged and pilot-admission actions. (Pull request)
- Workspace delivery conventions: configure pull request titles, labels, commit messages and branch names per workspace so automated deliveries follow the repository’s conventions. (Pull request)
- Review-skip tags and default review: workspaces can map a task tag to the paths whose changes skip agent review, and
workspaceseeds before-landing review for PR-route workspaces. (Pull request)init - Portable maintenance sweeps: new built-in auto-task definitions cover code health, architecture, structure, dependency freshness, flaky tests and CI budgets. (Pull request)
0.32.0
Breaking Changes
- Crew performance snapshot migration: opening a workspace applies SQLite v58 (
crew_performance_snapshot). The migration is additive (two new tables older binaries never touch) but changes persisted storage; upgrade hosts together. (Pull request) - Pull protocol fingerprint: follower pull requests now carry per-crew usage pressure, which changes the distributed-drain protocol fingerprint. Mixed-version pull drains → upgrade the owner and followers together. (Pull request)
- Blocked-task triage auto-task retired:
orbitremoves seeded copies of theworkspace sync blocked-task-triageauto-task, even enabled ones, and keeps edited copies.blocked-task-triageauto-task removed → setenabled:on thetrue blocked_task_triageroutine. (Pull request) workspaceremoved: the hidden no-op flag is gone, so scripts passing it now fail.init --refresh-defaults --refresh-defaultsremoved → drop the flag. (Pull request)- Rust API:
AgentFamily::MuseandStateTriggerKind::{PilotWarningsHeld,are new variants;BlockEscalated} OrbitError::RemoteTool.iscode RemoteToolCode,AutomationError::DeferredcarriesDeferredReason, andPolicyDecisionis removed. Unusedorbit-storeandorbit-commonitems are deleted. Downstream exhaustive matches and constructors → update them. (Pull request)
Highlights
- Usage-pressure crew selection: with
workflow., draws favour crews whose weekly allowance would otherwise go unused, and admission re-draws system-chosen crews. Pull followers weigh their own readings; the dashboard andcrew_selection = "usage_pressure" orbitshow pressure per account and crew. (Pull request)run readiness - Performance-weighted crew draws:
workflow.weights draws by an hourly per-task-type implementer snapshot.crew_performance orbitshows the cells, andagents scorecard --by-type --shadowcompares recorded shares with what the factor would give. Off by default. (Pull request) - Escalation triage routines: new
pilot_warning_triageandblocked_task_triageroutines, disabled by default, send pilot-held proposed tasks and escalated blocks to a hard-tier triager that records one requeue, proposal or human-action report per episode. (Pull request) - Wider provider usage coverage: Grok, Antigravity and Muse runs now record usage-window readings, so provider limits, holds and usage pressure cover them, and Muse crews run on Linux hosts. An auto-task whose crew hits a usage limit is reassigned within its complexity pool before it runs. (Pull request)
- Built-in
argoncrew: Gemini 4 Argon throughagyis a built-in crew, andorbitadds it to the hard complexity pool wheninit agyis installed. (Pull request) - Dashboard refresh: Settings is split into per-topic tabs, task History reads as a timeline, Context files group by crate or folder, and provider usage chips open a detail dropdown. Edits to
config.now show without restarting the server. (Pull request)toml
0.31.0
Breaking Changes
- Executor census migration: opening a workspace applies SQLite v55 (
executor_census). The migration is additive at runtime but changes persisted storage; upgrade hosts together. Rust callers must replaceautomatic_dispatch_cmp_for_hostandAdmissionOrdering.with the affinity/census inputs. (Pull request)owner_os - Crew accounts migration: opening a workspace applies SQLite v56 (
provider_crew_accounts). Environment-backed crews now have separate account identities → explicitly allow those crews when an allow-list previously relied on their provider’s default account. (Pull request) - Handoff storage compatibility: SQLite v57 moves handoff settlements into a sidecar and guards stale inline writers. Older binaries reopened afterward are read-only; already-running intermediate writers reject handoffs → upgrade and restart Orbit clients, including long-lived MCP servers, to resume writes. Rust settlement constructors and exhaustive matches also need updates. (Pull request)
- Workspace source credentials: fresh workspace registration rejects Git origins containing embedded credentials; discovery redacts legacy values without rewriting registrations → use credential-free origins and a credential helper. (Pull request)
- External-merge Rust API:
ClaimMutationaddsSettleExternalMerge; downstream exhaustive matches must handle the new variant. (Pull request)
Highlights
- Crew-specific provider accounts: environment-backed crews have separate usage limits, holds, auth exclusions and budget targets. Crews without an environment retain the provider’s default account. (Pull request)
- Scarcity-aware task admission: distributed and owner-local drains use a live executor census to prioritize work that fewer eligible hosts can run, with a workspace setting for affinity reach. (Pull request)
- Drain controls: the dashboard composer covers local and pull drains, auto-run options, recorded settings and pull claim stages. (Pull request)
- Task detail navigation: context files have a dedicated tab beside History, Runs, Artifacts and Comments, with the existing editor and keyboard navigation. (Pull request)
0.30.0
Breaking Changes
- Distributed pull compatibility: the pull request fingerprint now covers browser-kit and forecast-fit admission fields, so an owner and followers on different builds refuse each other → upgrade every host together. (Pull request)
plugin.removed: the legacy environment-token and process-ancestry callback authentication is gone, and the key now only warns → plugin backends must preserve the inherited callback descriptor. (Pull request)legacy_callback_identity
Highlights
- Read-only exploration: implementing and review-repair agents can ask an explorer crew bounded code-reading questions in the same worktree. The explorer runs read-only under a restricted tool policy and returns the paths it read with its answer. (Pull request)
- Mid-run steering: an opt-in setting delivers operator comments added after dispatch into managed agent runs. Orbit reruns a bounded checkpoint and holds promotion until the run has consumed the new guidance, including on claimed work. (Pull request)
- Agent scorecards: evidence-linked scorecards rank orchestrators, implementers, reviewers and pilots, with drill-down to the tasks and runs behind each score. The dashboard has role tabs, and
orbitandagents orbit.expose the same scores. (Pull request)agents. * - Drain readiness and failure history:
orbitandrun readiness orbitname admitted and waiting tasks and why they wait, andrun show orbitreports each leaf failure once by root cause, with a link to its logs. (Pull request)run history --failures - Host resource analytics: Analytics charts host CPU and memory profiles alongside forecast accuracy and measured delivery peaks, so operators can see where forecasts miss when tuning auto-concurrency. (Pull request)
- Desktop fleet awareness: the desktop tray watches registered remote hosts and notifies when a drain ends or a task is held. Linux
.anddeb .bundles for x86_64 and arm64 are attached to the release. (Pull request)AppImage
0.29.0
Breaking Changes
orbitremoved: the hidden top-levellogs orbitcompatibility command is gone → uselogs <run-id> orbitfor steps andrun show orbitfor raw output. (Pull request)run logs orbitremoved: the hidden refusal-only alias now fails as an unknown command → userun ship-local orbit. (Pull request)run ship --mode local orbitremoved: the hidden alias no longer parses → usetool list --include-hidden orbit. (Pull request)tool list --all - Scoreboard API reduced:
GETnow returns the/ api/ scoreboard GETsubset with deprecation headers, dropping/ api/ cost agents,highlights,notable_completionsandcoverage, until its 2026-11-12 sunset → read/.api/ cost scoring.is ignored. (Pull request)enabled - Forecast memory threshold must sit below the throttle: config load now rejects
machine.(default 75) at or aboveauto_concurrency. admit_memory_percent workflow., even with auto-concurrency off → keep the throttle above 75 or lower the admit percent. (Pull request)resource_throttle. memory_high_percent
Highlights
- Muse Code executor: Meta’s Muse Code joins the built-in executors as the
muselane on macOS, with a seeded crew,orbitdetection and sandbox grants for its state directories. Existing crews and pools are unchanged. (Pull request)init - Forecast-based admission: with
machine.set toauto_concurrency. mode shadoworenforce, drains fit deliveries against measured CPU and memory profiles and shared host reservations.orbitreports how good the forecasts were, andrun profiles --accuracy orbitpicks the mode per window. (Pull request)run auto --auto-concurrency - Fleet drain overview: the dashboard’s All workspaces view shows every registered host and workspace’s drain, with phase, slots in use, eligible work and the most common wait reason. Clicking a row switches to that host and workspace. (Pull request)
- Review for one run:
orbitadds a review layer to a single run without changing workspace policy. It can only strengthen the configured review, and run details show the layer used. (Pull request)run auto|ship --review before-pr|before-landing - Auto-fix PR blockers:
orbitrepairs a delivery PR’s failed required checks and branch conflicts through the existing recovery and validation path. It never merges;run auto --auto-fix --completestays the merge authority. (Pull request) - Post-deploy criteria stay owed: criteria that can only be measured on the deployed build are recorded as owed instead of failing the delivery, and repair handoffs or ordinary completion can’t drop them. (Pull request)
0.28.3
Highlights
- Settings and Incidents redesign: Settings shows every key’s effective value, where it comes from and its built-in default, across the Effective, Workspace and Global views. Health › Incidents groups failures by a deterministic cause, with class tiles and a 24-hour timeline per incident. (Pull request)
- Faster dashboard polling: polls reuse memoized scoreboard and diagnostics results, diagnostics payloads are bounded, JSON responses are compressed, and routine status no longer fetches from the remote, so typical polls drop from seconds to milliseconds. (Pull request)
- Faster on Apple silicon: binary digests use hardware SHA-2 and the CPU baseline is shared, so each
orbitprocess starts sooner andorbitdrops from about 1.2 s to under 0.1 s. (Pull request)run readiness - Sturdier distributed claims: a failed claimed leaf keeps its uncommitted candidate, and Orbit builds the deferred-sandbox record itself. The owner captures its validation gates into the claim, and tests that also fail on the base, or pass when rerun alone, no longer block a candidate. (Pull request)
- Review-finding verification: the
finding_verification_pipelinejob confirms or rejects review-filed bugs with file-and-line evidence. The opt-inreview.setting, off by default and toggleable in Settings, makes promotion and admission wait for a confirmed verdict. (Pull request)verify_findings - System crew retired: system work (auto-task templates, the task pilot and recoveries) draws its crew from the complexity pools.
workflow.andsystem_crew crew:still load for one release with a deprecation warning → remove them. (Pull request)system
0.28.2
Highlights
- Extend a live drain:
orbitmoves a running drain’s deadline later without restarting it, so in-flight tasks, claims and authority carry over.run extend <run-id> --for <duration> --concurrencyretunes it in the same call. It never shortens a window and refuses stopped or windowless drains. (Pull request) - Review crew pools:
operation.accepts a pool such asreview_crew ["sol",(or weighted entries) as well as one crew. Each before-PR, before-landing or after-landing review draws one crew, preferring one that did not implement the work and skipping disabled or provider-limited crews. (Pull request)"grok"] - Red base gets an owner: a baseline-red hold names the tests failing on the base in its hold text, verdicts and
orbit. The owner’s clock tick files one deduplicatedrun readiness baseline-red-repairbug per failure set, and reviewer red-base claims replay only those tests. (Pull request) - One incident per failure: a gate or auto run that failed only because a child failed records that leaf as its
root_cause, andorbitand the dashboard fold them into one row. Red-base holds now endrun history --incidents held, and parents whose unsuccessful children were all cancelled endcancelled. (Pull request) - Dashboard redesign and codebase analytics: tasks show as status cards whose readiness dot says why backlog work waits, and drain status and controls get their own cards. Audit › Codebase replaces Audit › Policy and ranks files, directories or crates by regression rate, lock contention, footprint misses and blocked runs. (Pull request)
- Linux worker containment:
machine.caps contained worker scopes with systemdworker_cpu_quota CPUQuota=, andorbitreports the limit. Pass-listed credentials reach workers through their environment instead ofdoctor systemd-runarguments, so a process listing no longer shows provider tokens. (Pull request)
0.28.1
Highlights
- Provider-limit-aware routing: drains and crew-pool draws skip crews whose provider is near or at its usage limit and resume them after the reset.
orbitshows the limits and gated crews, and operators can declare rolling budgets for providers that report no usage. (Pull request)run readiness - Before-landing review:
review.reviews a task’s open PR while hosted CI runs, and the PR lands only on an accepted review. It is an alternative to before-PR review and is off by default. (Pull request)before_landing - Dashboard host switcher: pick a registered host above the workspace picker, and every panel, action, log tail and resource chip follows it. The selection is URL-addressable as
?host=. (Pull request) - Run history by task:
orbitshows each run’s task and duration and filters byrun history --task,--stateand--since, so you can find the run that delivered a task and how long it took. (Pull request) - Declared reclaim paths:
worktree.globs declare which build outputs in kept run worktrees may be swept, replacing the hard-codedreclaim target/. (Pull request) - macOS
.deny hardening: renaming a containing directory out of the workspace no longer bypasses aenv **/sandbox deny on macOS. (Pull request). env - Claude worker token on macOS: a Claude activity that receives neither
CLAUDE_CODE_OAUTH_TOKENnorANTHROPIC_API_KEYis now refused beforeclaudestarts, instead of falling back to the Claude Desktop login, which the Desktop revokes mid-run (HTTP 401). Create a token withclaudeand list it insetup-token [execution.. For scheduled runs, the clock tick now exports credentials fromenv] pass ~/(mode. orbit/ clock. env 0600) under the namespassadmits, andorbit’sdoctor claude-worker-tokenrow warns when a routed Claude crew would run without the token. (Pull request)
0.28.0
Breaking Changes
- Distributed pull protocol: the revision goes from 5 to 10, and a newer owner refuses older followers → run matching owner and follower versions. (Pull request)
- Job-run state migration: SQLite migration 38 moves run state into
job_run_statesand dropsjob_runs.. It is declared Breaking, so older binaries refuse the migrated store. (Pull request)pipeline_state_json terrais no longer a built-in crew: a config that names terra without defining[crews.must define it. Existingterra] [crews.tables keep working. (Pull request)terra]
Highlights
- Host registry and routing:
orbitkeeps a registry of named hosts. Task IDs route to the host that owns their prefix,host add|list|show|remove --hostselects one explicitly, and Settings › Hosts manages the registry from the dashboard. (Pull request) - Linux sandbox setup: Linux installs can use Orbit’s signed, pinned Bubblewrap when the host wrapper is missing, and package-manager discovery follows host capabilities.
orbitfinishes with a readiness warning if preparation fails, and execution stays fail-closed until the sandbox is ready. (Pull request)init - Faster run, dashboard and scoreboard queries: run listings no longer scan every run’s pipeline state, and scoreboard failure aggregation and cold dashboard paths are optimized, taking pages that took many seconds down to a fraction of that. (Pull request)
- Distributed claimed review and recovery: claimed PR work runs the owner’s before-PR review contract and gets one automatic repair when landing stops on a stale or conflicting base. Operators can reconcile a merged PR whose final head differs from the candidate. (Pull request)
- Proposed-task intake:
orbitpromotes qualifying proposed tasks and holds uncertain ones. The dashboard auto-drain panel offers it when starting a window, and proposed and backlog tasks show a readiness chip. (Pull request)run auto --approve-proposed - Built-in Haiku crew: fresh configs ship a Claude Haiku crew, and
orbitseeds complexity pools from the provider families it detects. (Pull request)init
0.27.0
Breaking Changes
- Review config split: before-PR review is
review.; after-landing review is thebefore_pr delivery-code-reviewauto-task’senabledflag and now covers follower landings.operation.andreview_policy review_minutesstill load with a warning, andreview.now limits one candidate’s review. (Pull request, Pull request)minutes delivery-qaauto-task removed: it is no longer seeded, and theintegrated_qa_v1coverage is refused for new or updated schedules. Existing copies still load. QA is covered byqa-sweepandqa-full-sweep. (Pull request)
Highlights
- Final recovery for blocked tasks: a task that ends up
blockedafter its step recovery is used up now gets one last recovery agent, drawn fromworkflow.(defaultfinal_recovery_crews sol:100,). That agent can repair, requeue or resume the task instead of leaving it for an operator;opus:20 []turns it off. (Pull request) - Before-PR reviewer fixes what it finds: the reviewer commits its fixes as a second commit on the candidate instead of sending the task back for rework. Each candidate gets one review, limited by
review.. (Pull request)minutes - Re-runs resume from a preserved candidate: re-running a task that has a
[BLOCKED]candidate rebases and re-validates that candidate instead of implementing it again. (Pull request) - Host resource throttle: Orbit samples CPU, memory and disk, shows them as KPI chips and in a Settings › System tab on the dashboard, and holds drain and ship admissions while the host is under pressure. It is on by default, with warnings over the CLI and MCP. (Pull request)
- Agent invocations you can wait on:
orbitreturns the agent’s structured answer (summary, findings, next steps),run agent --wait orbitstreams output, andrun logs --follow orbit_workflow_run_showreports progress while it runs. (Pull request) - Orbit closes its own PRs: when a task lands, is rejected or is archived, Orbit closes the task’s open delivery and
[BLOCKED]PRs that it authored, keeping the PR that landed open. Human PRs are never touched. Turn it off withpr.. (Pull request)close_on_terminal = false
0.26.0
Breaking Changes
- Public MCP tool surface consolidated:
orbit_crew_list,orbit_friction_list,orbit_friction_rehome,orbit_auto_task_toggle,orbit_auto_task_delete, andorbit_workflow_run_workersare gone. Useorbit_workspace_listwithinclude:,["crews"] orbit_searchwithkind:,"friction" rehome_toonorbit_friction_update,enabledonorbit_auto_task_update, andorbit_workflow_autowithaction:. (Pull request)"resize" - Distributed-drain tools removed from MCP:
orbit_task_pulland theorbit_drain_*probe, receipt, bind, and settle tools are no longer public, and calls to them are refused.orbitis unchanged. (Pull request)run auto --pull - Older-client desktop compatibility removed: the desktop MCP server no longer answers MCP peers that predate the guarded desktop contracts. Upgrade the desktop client to this release.
- Desktop controls moved to guarded domain contracts: desktop task, auto-task, and drain controls go through guarded MCP contracts, and guarded
orbit_task_*fields are refused on older MCP peers. Upgrade MCP peers with the server.
Highlights
- Orbit mod for Claude Code: the Claude Code plugin adds a band above the prompt, a status line, and an Orbit pane with Board, Ship, and Map tabs, so you can act on tasks and watch a ship without leaving the session. (Pull request)
- Desktop control center: the desktop app gains a control center with guarded task review, and its Tasks list groups tasks by status, defaults to active ones, and carries the task controls. (Pull request)
- No bare agent spawns: dispatch now refuses when a shipped agent executor has no sandbox backend for the host OS instead of running it unsandboxed. (Pull request)
- Disabled external tools stay manageable: a disabled external tool remains listed and inspectable, and can be re-enabled.
- Workspace-safe dashboard: task edits, approvals, run actions, friction results, and plugin toggles made around a workspace switch no longer land on, or display under, the wrong workspace.
0.25.1
Highlights
- Cancel stops the agent:
orbitnow stops the provider CLIs a run spawned, not just its owner, andrun cancel orbitrefuses a task the pipeline cannot start from instead of reporting it submitted.run ship - Symlinked homes and checkouts: an Orbit home or workspace reached through a symlink (macOS
/andtmp /, a symlinkedvar ~/) no longer breaks auto-task edits, plugin enablement, routine disables orworkspace workspace, and the plugin write-root containment check resolvesremove .as the kernel does.. - Tighter sandboxing and secret masking: CLI workers inherit the sandbox on Linux and macOS, onboarding prepares the Linux sandbox prerequisites, and delivered plugin secrets and credential-bearing dotenv files are masked. (Pull request)
- MCP annotations and field projection:
tools/advertises read-only, destructive and open-world hints so clients can auto-approve read-only tools, andlist orbit_task_listacceptsfieldsto return only the fields you need. - Faster listings, search and dashboard: filtered
task, search, the dashboard scoreboard and auto-drain readiness read task metadata instead of whole task bundles, cutting them from hundreds of milliseconds to tens at about 1,500 tasks.list - Clearer runs and drains:
orbitsummarizes a drain’s leaf outcomes and names the holder of a waited-on lock, blocked tasks name their next step, and every confirmation command honoursrun show --format.json
0.25.0
Breaking Changes
- Plugin source root moved: plugin sources must live under
.; a top-levelorbit-plugin/ plugin.is refused byyaml orbit,plugin add validate,test,sync, andupgrade, with no fallback. Moveplugin.and its tree intoyaml .→orbit-plugin/ orbitcreates the new shape. (Pull request)plugin scaffold
Highlights
- Follower pull:
orbitlets a follower machine pull one owner-admitted task at a time, run it, and hand the result back; the owner keeps landing authority. (Pull request)run auto --pull - Plugin secrets and Python backends: plugins declare secrets that the host stores, delivers to backends, and rotates, and exec backends can be written in Python. (Pull request)
- Brokered plugin calls and per-workspace enablement: sandboxed agents call plugin tools through a broker, and plugins are enabled per workspace from the CLI or dashboard. (Pull request)
- New recurring auto-tasks: disabled-by-default documentation, run-failure, and backlog-hygiene auto-tasks, plus delete and restore for shipped defaults with a durable opt-out. (Pull request)
- Deny-list agent policy: shipped agent activities now name the operations they deny instead of allow-listing tools; custom allow-list activities keep working, and strict worker containment is opt-in. (Pull request)
- Safer upgrades: upgrade admission checks store and layout compatibility, so an older binary can read but no longer write a store migrated by a newer one. (Pull request)
0.24.0
Breaking Changes
- Activity, executor, and policy commands removed:
orbit,activity orbit, andexecutor orbitare gone with no aliases and now fail as unknown subcommands.policy job,tool, andpluginonly moved in help. (Pull request) - Operation mode removed: the
orbitCLI group,operation orbit, and therun auto --grant orbit.tools are gone. Store migration v26 drops operation grants, so older binaries fail against an upgraded store. (Pull request)operation. * - Docs command and tools removed:
orbitand the fivedocs orbit.tools are gone. A leftoverdocs. * [docs]config section is ignored with a one-time warning → delete it. (Pull request) - Host renamed to machine:
orbitis removed;host ~/moves into. orbit/ host. toml [machine]in globalconfig.(copied automatically this release), andtoml hostfields becomemachine_name/job_run_machine. Migration v23 renames audit columns, so older binaries fail against an upgraded store. (Pull request) - Semantic and hybrid search removed:
orbit,semantic orbit,search similar --hybrid, and thesemantic/hybridinputs onorbit.are gone. Lexicalsearch orbit/search orbit.is unchanged. (Pull request)search
Highlights
- Plugin standard:
plugin.v2 plugins install and manage throughyaml orbit, run under enforced grants in a sandboxed exec orplugin mcpbackend, and can ship tools, jobs, routines, auto-tasks, skills, and a schema-derivedorbitCLI. (Pull request)<ns> <verb> - Distributed drain v1: drains across machines admit work atomically through durable claims with replayable receipts, pull and bind leaves uniquely, and hand results back to the owning workspace. (Pull request)
- Complexity crew pools: a new
xhardtier, weightedname:weightpool entries, and pool routing for ordinaryorbitadmission; the drawn crew is fixed when the task is created. (Pull request)run ship - State-triggered task-pilot: task-pilot runs as a
preparation_eligiblestate routine and batches due tasks into one run instead of polling on a cron. (Pull request) - Dashboard Config tab and runnable jobs: the dashboard shows effective config grouped with provenance and inline edits, and the Jobs pane can start runs. (Pull request)
- Bounded worker runs: on Linux, pipeline worker runs execute inside a bounded cgroup, so a runaway run cannot run the host out of memory. (Pull request)
0.23.0
Breaking Changes
- MCP task-write response projections:
orbit.,task. add orbit., andtask. update orbit.no longer includetask. reject commentsandhistoryby default; request those fields explicitly withfieldsorfield. (Pull request)
Highlights
- Federated semantic search: search fans out concurrently across workspaces, reuses one query embedder, and batches embedding and reindex work for faster large-corpus queries. (Pull request)
- Workflow failure recovery: agent-declared failed envelopes now enter step recovery instead of sending otherwise recoverable tasks directly to
blocked. (Pull request) - Safer process supervision: execution cleanup validates process-group identity before signaling, preventing PID reuse from killing an unrelated process group. (Pull request)
- Reliable worktree cleanup: garbage collection can continue cleaning stale worktrees whose large build directories exceed a single cleanup window. (Pull request)
- Actionable job diagnostics: strict job catalog reads now surface malformed job files instead of silently hiding them from listing, inspection, and execution. (Pull request)
0.22.1
Highlights
orbit: named entrypoint forrun task-pilot task_pilot_pipeline, matchingorbitfor on-demand discovery or explicit task IDs. (Pull request)run triage maketargetsinstall ~/: the source-checkout install now lands in the same directory as. orbit/ bin install.(override withsh INSTALL_BIN_DIR), so a stale~/can no longer shadow the deployed binary on. cargo/ bin/ orbit PATH.- Dashboard: force any task status: a human can force any task to any status from the dashboard, matching the CLI’s
--forceescape hatch. (Pull request) - Forward-compatible store opens: Orbit no longer hard-fails when a workspace’s store schema or layout version is newer than the running binary supports; it opens read-only or auto-migrates instead. (Pull request)
0.22.0
Breaking Changes
- Task start and approve tools consolidated:
orbitCLI command andtask start orbit./task. start orbit.MCP tools are removed in favor oftask. approve orbit.. (Pull request)task. update - Operation tools withdrawn from MCP: all five
orbit.tools are removed from the MCP surface; operations are managed via the Orbit CLI. (Pull request)operation. * - MCP task listing response shape updated:
orbit.returnstask. list {instead oftasks, total, truncated } {; update MCP callers to consume theitems } tasksarray. (Pull request) - Routine hosts and source role configuration removed: routine
hosts:pins and[routines]configuration schemas are removed in favor of host clock consolidation. (Pull request)role = "source"
Highlights
- Dashboard inline task editors: the expanded task detail edits complexity, description, tags, acceptance criteria, and context files in place, each saved as a single-field
PATCHwith inline errors and an allow-missing-context escape. (Pull request)/ api/ tasks/ :id - Unified host clock consolidation:
orbitevaluates routines and auto-tasks in a single host loop, retiring separate auto-task schedulers and simplifying multi-host execution. (Pull request)clock tick - Owner-wins cross-host task sync: cross-host synchronization safely imports foreign-prefix task bundles while preserving local task state and preventing overwrites. (Pull request)
- Delivery auto-task reset and self-healing: added
auto-taskand automated replay proof for diverged history recovery instead of silent per-tick deferrals. (Pull request)reset - Effective provider sandbox visibility:
orbit.surfaces the active execution sandbox and warns when running under full-access mode. (Pull request)agent. invoke
0.21.0
Breaking Changes
- Layout-v3 checkout task projections removed:
.symlink projections and projection fields are removed in favor of canonical storage; stop older binaries before running layout migration v3 to prevent recreating obsolete links. (Pull request, Pull request)orbit/ tasks - Worktree GC activity schema updated: custom
worktree_gcinvocations and automations must supplytarget_run_idinstead ofrun_idfor single-run scoping. (Pull request) - Public config path Result API:
OrbitRuntime::config_pathnow returnsResult<PathBuf,instead of an infallibleOrbitError> PathBuf; callers must handle config validation errors. (Pull request) - Linux runtime sandbox requires descriptor mounts: Linux runtime write sandboxes now require Bubblewrap
--bind-fdsupport; environments lacking descriptor-binding cannot mount writable runtime roots. (Pull request, Pull request) - Task-pilot admission contract enforced: automatic and explicit implementation admission now withhold unassessed tasks until complexity is evaluated, while
no-diff-expectedtasks are exempt. (Pull request, Pull request, Pull request) - Task complexity required on update: human and agent
task.surfaces now rejectupdate complexity:with the create-time validation error; only automated system pipelines may assign unassessed status. (Pull request)unassessed - Strict new-file delivery declarations: task delivery now enforces explicit new-file intent declarations and rejects unknown untracked paths before index mutation; declare new files via
file:selectors. (Pull request)
Highlights
- Read-only observational Orbit modes: SQLite databases can be safely observed without write locks even when uncheckpointed WAL frames exist, and workspaces can start without requiring semantic indexing. (Pull request, Pull request, Pull request)
- Rust path-validation and descriptor hardening: file inspection and sandbox directory creation hold file descriptors through verification and mount operations, closing race conditions across runtime roots. (Pull request, Pull request, Pull request, Pull request)
- Task-pilot automated repair assessment: code-scanning tasks are minted without speculative selectors, while task-pilot evaluates repair complexity and persists modification targets atomically before implementation. (Pull request, Pull request)
- CLI and MCP surface reliability: fixes across tool execution, workspace filtering, MCP caller authorization, routine naming, credential redaction, and CLI output consistency improve agent ergonomics. (Pull request, Pull request, Pull request, Pull request)
- End-to-end full-QA coverage: comprehensive QA verification suites, deterministic process fixtures, and browser capability evidence retention ensure stability across supported platforms. (Pull request, Pull request, Pull request, Pull request, Pull request)
0.20.0
Breaking Changes
- Task workspace flags clarified:
tasknow selects the target workspace; useadd --workspace --workspace-pathfor task workspace-path metadata. (Pull request) - Tool-run flags removed:
orbitno longer acceptstool run --timeoutor--output; remove those flags from existing invocations. (Pull request) - Operation grants upgraded: operation-policy version 2 introduces independent review and repair controls; replace version-1 grants before delivery. (Pull request)
- Task-registry schema upgraded: task action keys require schema version 6; older binaries that only support version 5 cannot open an upgraded registry. (Pull request)
- Semantic-index layout migrated: semantic search now uses chunk storage with external-content FTS5; coordinate runtime upgrades because older index layouts are incompatible. (Pull request, Pull request)
Highlights
- Independent delivery review: configure review timing and repair budgets separately from implementation, with direct repairs and explicit delivery admission. (Pull request)
- Flexible task lifecycle: reopen completed work and make other explicitly authorized status transitions while retaining the audit trail. (Pull request)
- Shared-root workspace isolation: multiple repositories sharing an Orbit root keep task writes and bundles in the selected workspace. (Pull request)
- Usable dashboard operations: authorized sessions can mint and toggle automation, with compact controls that work on narrow screens. (Pull request, Pull request)
- Filesystem policy for child processes: Linux
proc.applies the declared filesystem policy to indirect child-process access. (Pull request)spawn
0.19.0
Breaking Changes
- Task-pilot activity schemas migrated: custom
prepare_task_pilot,task_pilot, andapply_task_pilot_resultspayloads must use the current required fields andsucceeded|failedstatus contract. (Pull request, Pull request) - CI-failure filing schema migrated: custom
file_ci_failure_tasksproducers must supply pilot partitions and match evidence under the current activity contract. (Pull request)
Highlights
- More provider lanes and effort controls: crews can forward validated effort settings, and Pi, OpenCode, and Antigravity join the supported executor catalog. (Pull request, Pull request, Pull request, Pull request, Pull request)
- Task artifacts render safely: retrieve task attachments through the new read-only tool, with bounded presentation for validated raster images. (Pull request)
- Safer source-remote changes: inspect or rebind a workspace source remote while preserving workspace, task, and checkout identity. (Pull request)
- Operator-controlled agent investigation: authorized operators can invoke a bounded host-side agent run for diagnostics without changing task delivery state. (Pull request)
- Constellation-works distribution cutover: active distribution references and the pre-release checklist now point to the current project owner. (Pull request)
0.18.0
Breaking Changes
- SSH MCP caller authorization requires a protected launcher:
orbitnow requiresmcp callers authorize --launcherand no longer falls back to the current executable; configure the validated protected launcher before authorizing callers. (Pull request)
Highlights
- Accurate task-flow lifecycle reporting:
orbitnow derives outflow and boundary openness from recorded transitions, including rejected tasks that later reopen. (Pull request)task flow - Safer direct lock reservations: direct task-lock reservations canonicalize in-workspace selectors and reject outside-workspace paths, so they reliably conflict with task-scoped locks. (Pull request)
- Selected roots reach sweep execution:
orbitnow honors an explicitsweep --rootorORBIT_ROOT, including when the process HOME points elsewhere. (Pull request)
0.17.1
Highlights
- Managed workspace convergence:
orbitsafely refreshes shipped routines and other managed artifacts while preserving local edits, identity, registration, and automation choices. (Pull request)workspace sync - Security finding automation: the disabled-by-default security sweep can collect Dependabot, Code scanning, and secret scanning findings into deduplicated, evidence-complete remediation tasks without exposing credentials to agent sandboxes. (Pull request)
- Corrective work prioritized automatically: bounded
runandship rundiscovery now selects critical, bug, code-review, and security-review tasks ahead of ordinary feature work. (Pull request)auto - Actionable friction triage: the dashboard defaults to active frictions, adds status filtering, and provides keyboard-operable responsive detail views. (Pull request)
0.17.0
Breaking Changes
- session_log tools withdrawn:
orbit.,session_log. append orbit., andsession_log. list orbit.are gone from the public MCP/CLI agent surface → no public replacement. (Pull request)session_log. resolve - ci-failure-remediation auto-task removed: the shipped
ci-failure-remediationauto-task, catalog entry, and seed file are gone; existing workspace copies stay until removed by hand. (Pull request) - code-review auto-task renamed: the seeded
code-review-sweepauto-task is nowcode-review; the old name no longer loads. (Pull request) - Remote MCP
--operatorignored: destination-side caller authorization no longer honors caller--operatorargv; a missing~/yields. orbit/ mcp-callers. toml agentonly. (Pull request)
Highlights
- Agent plugins restored: Claude Code, Codex, and Cursor plugin distribution ships again after the 0.15.0 retirement. (Pull request)
- Federated MCP includes local workspaces: federated serve now includes the accepting machine’s local workspaces automatically, so a missing destinations file is a valid local-only server. (Pull request)
- Task publication V1: operators can bind a private Git publication repo, publish owner-only snapshots, inspect labelled read-only state, and restore without renumbering. (Pull request)
- Managed workspace routing: managed CLI and MCP calls now keep the catalog workspace selector instead of inferring from a linked-worktree cwd. (Pull request)
- Richer task.show projections:
orbit.can project every stable public task field, including relations, job run, and attribution. (Pull request)task. show
0.16.0
Breaking Changes
- Replica task writes report capability refusal:
orbit.on a replica now returnstask. add capability_refusedinstead ofinvalid_input; update clients that branch on the old error code. (Pull request) - Replica MCP access is capability-gated: workspace-scoped control-plane reads and writes now return
capability_refusedon replica checkouts; route those calls to the owner selector. (Pull request)
Highlights
- Federated multi-host MCP: register an opt-in federated server, discover remote workspaces over configured SSH destinations, and route workspace-scoped calls with host-qualified selectors. (Pull request)
- Cross-workspace search: one CLI or MCP search can query multiple registered workspaces, fuse ranked results, and attribute every hit to its source workspace. (Pull request)
- Official MCP Registry launch: versioned registry metadata and the npm proxy now provide a validated, fail-closed path from registry installation to an unbound Orbit MCP server. (Pull request)
- Explicit docs-root overrides: configured docs roots can opt out of gitignore filtering while retaining Orbit’s
.andgit .exclusions. (Pull request)orbit - Policy-bound process spawning: activity
proc.calls now honor the child-environment allowlist and the activity’s filesystem sandbox. (Pull request)spawn - Private SQLite state: Orbit creates and repairs its state databases, WAL files, sidecars, and sensitive directories with private Unix permissions. (Pull request)
0.15.0
Breaking Changes
- Agent plugin channel retired: Orbit no longer ships Claude, Codex, or Cursor agent plugins; install and use the standalone Orbit CLI instead. (Pull request)
Highlights
- Built-in code-review sweep: fresh workspaces include a disabled code-review auto-task that teams can enable to schedule recurring reviews. (Pull request)
- Reliable concurrent task updates: task writes now coordinate safely across simultaneous CLI, MCP, and dashboard activity. (Pull request)
- Simpler binary-first onboarding: the Quick Start now leads with installing the standalone CLI and brings your existing repository conventions into Orbit. (Pull request)
0.14.0
Breaking Changes
- Fresh installs no longer seed the legacy
qacrew: neworbitworkspaces use the supportedinit systemcrew; update prompts that name the seededqacrew. Existing user-authoredqaconfiguration remains compatible. (Pull request) proc.activities now require an allowlist: v2 activities that grantspawn proc.must declarespawn proc_allowed_programs; add the allowed programs explicitly. (Pull request)
Highlights
- Cursor Agent Plugin support: Orbit now ships as a Cursor-compatible Agent Plugin alongside the Claude and Codex plugin formats. (Pull request)
- More managed CLI executors: GitHub Copilot CLI and Cursor Agent CLI are first-class workflow executors, with improved installed-agent detection. (Pull request)
- Operator-authorized MCP setup:
orbitcan generate MCP configuration for a workspace. (Pull request)workspace init --mcp - Dashboard workspace shell: the dashboard gains a command rail, two-mode dock, and log status bar for faster operator navigation. (Pull request)
- Security-review automation: fresh workspaces include a disabled security-review auto-task that teams can enable when ready. (Pull request)
0.13.0
Breaking Changes
- Store schema 15 → 16: audit actor identity splits
roleintoactor_kindplus a normalized actor. Workspaces migrate on open; a newer store still refuses an older binary. (Pull request) - Store schema 16 → 17: unauthenticated MCP calls persist a self-reported actor. Same migrate-on-open / no-downgrade rule. (Pull request)
- Task complexity is required: CLI
task, webadd POST, and/ api/ tasks orbit.reject a missingtask. add complexity— passlow,medium, orhard. (Pull request)
Highlights
- Dashboard delivery controls: inspect, toggle, and mint auto-tasks; operate routines and the sweep clock; the Tasks view is clearer with safer live-log and inline edits. (Pull request)
- Complexity is first-class: every new task must set it, and the dashboard charts it as a dimension. (Pull request)
- Governed MCP tools need an operator: unauthenticated sessions can no longer invoke those tools. (Pull request)
- Claude Keychain OAuth under sandbox: Claude can read the user Keychain for OAuth; an explicit
denyReadstill wins. (Pull request) - System crew is seeded: jobs can name a portable
systemcrew;qastays for compatibility. (Pull request)
0.12.1
Highlights
- Release cut: version files and the GitHub tag aligned at 0.12.1. (Pull request)
0.12.0
Breaking Changes
- Seeded skill directories retired:
orbit-task,orbit-search,orbit-workflow, and the pluginorbit-task-pilotskill are gone — use theorbitrouter skill and itsreferences/. (Pull request)
Highlights
- One Orbit skill: four seeded skills collapsed into a single
orbitrouter with on-demand references. (Pull request) - Stale skill links cleaned on upgrade:
workspaceremoves dangling Claude/Codex skill symlinks left after skill retirement. (Pull request)init - Doctor reports leftover skill directories: orphaned skill dirs without SKILL.md are a warning, not a clean bill of health. (Pull request)
- Safer artifact redaction: env-value redaction no longer silently eats ordinary words in task prose. (Pull request)
0.11.0
Breaking Changes
- Store schema 11 → 15: workspaces migrate on open (friction SQLite, workspace-claim scope, learning-projection removal, invocation audit context). A newer store still refuses an older binary. (Pull request)
- Native project learnings removed:
orbit,learning orbit., and learning search are gone — use tasks, docs, feature ADRs, and frictions. (Pull request)learning. * - Native ADR store and tools removed:
orbit/adr orbit.andadr. * .are gone — author decisions in each feature’sorbit/ adrs/ 4_decisions.. (Pull request)md - Duel, independent review, and
role:retired: planning-duel and review CLI/MCP/jobs are gone; activity YAMLrole:no longer loads — usecrew:or the run-resolved crew, and ship viatask_pr_pipeline. (Pull request) - Jobs are asynchronous by default:
orbitreturns a durable run immediately;run job --backendis gone — usehttp|cli|auto agent_cliand pass--waitwhen you need to block. (Pull request) - MCP and
fs.builtins trimmed: auto-task MCP advertises only list+mint;* fs.,read fs., and remainingdelete fs.tools are gone — use CLI/* orbitfor auto-task authoring and provider-native file tools. (Pull request)tool run
Highlights
- Asynchronous job execution: job submission returns a durable run immediately, with
--waitand terminal diagnostics when you need to block. (Pull request) - Epic-owned continuous delivery: an epic run drains descendant work through one owned worktree and lands the epic branch only after the epic’s own destination checks pass. (Pull request)
- One workspace selector grammar: CLI and MCP accept the same registered name, logical
ws_*id, or absolute checkout path. (Pull request) - Network MCP transports:
orbitand related tunnel/loopback paths serve isolated sessions with explicit workspace routing and claim-gated remote execution. (Pull request)mcp listen - Fail-closed Linux sandbox: Bubblewrap plus policy-derived grants give Linux CLI agents and task-pilot a read-only, fail-closed execution path. (Pull request)
0.10.0
Breaking Changes
- Task locks returned to task administration:
orbitis nowlocks orbit. This partially reverses ORB-10000: unlike the other removed task verbs, which were consolidated into existing verbs, locks were only relocated to a more prominent top-level surface. Moving them back completes the original surface-reduction intent without changing the MCP tool surface. (Pull request)task locks - Learning vote and comment surfaces removed:
orbit.and alllearning. upvote orbit.tools and CLI subcommands are gone — uselearning. comment. * priority+ search rank for ranking,update/supersedefor corrections, andevidencefor provenance. (Pull request) orbittrimmed from 19 to 12 subcommands: seven state-transition and read-projection verbs removed.task approve/reject/unarchive/delete→orbit;task update --status … locks→orbit;locks prune-context→orbit;task lint --fix templatesdropped. MCP tool surface unchanged. (Pull request)
Highlights
- Graph-tool guidance lives only in the MCP surface: removed graph-tool invocation instructions from activity prompts and deleted the
orbit-graphskill; graph tools self-describe when present, and essential selector/usage knowledge now lives in theorbit.tool descriptions. (Pull request)graph. * - QA sweep is an auto-task: the checked-in six-hour definition routes hands-on validation to
crews., dedupes open runs, and files findings through Orbit;qa no-diff-expectedexempts side-effect-only tasks from workflow diff gates. Legacy QA code, config, CLI, routines, and deployment units are removed. (Pull request) - Auto-task primitive: recurring chores are data, not code.
orbit(+auto-task add/ list/ show/ update/ toggle orbit.tools) defineauto_task. * .templates with a cron/interval schedule and dedupe policy; one seeded scheduler routine mints tasks from the due ones with catch-up collapse andorbit/ auto_tasks/ *. yaml skip_if_opendedupe. Provider-neutral (ADR-0217). (Pull request) - Routine scheduler health over HTTP:
GETon the dashboard exposes each routine’s last fire (timestamp, ok/error outcome, duration) and next-due slot, so a stopped scheduler is visible remotely as a stale/ api/ routines last_firewithout box ssh. (Pull request) - ADR create over HTTP:
POSTrecords a Proposed ADR (mirroring/ api/ adrs orbit.), so remote orchestrators can author decisions without an on-box run; malformed payloads get a structured 400. Friction/learning create routes stay absent. (Pull request)adr. add - Learning + ADR update routes on the HTTP API:
PATCH(summary/scope/tags/body/evidence/priority) and/ learnings/ :id PATCH(status/tags and mutable metadata) delegate to the CLI tools, preserving supersede-don’t-delete and invalid-transition rejection; no create routes added. (Pull request)/ adrs/ :id - Default failed-run triage: a seeded
task_triage_pipeline(+ hourly routine,orbit) diagnoses tasks blocked by failed runs, re-backlogs environmental failures with a bounded retry budget, and leaves the rest blocked with a diagnosis attached. See ADR-0215/ADR-0216. (Pull request)run triage - Orphaned pending job runs now reconcile to
interrupted: workers claim their queued run’s pid, the open-time orphan scan andorbitcover pending runs, anddoctor orbitterminalizes stuck runs. (Pull request)run cancel <run_id> - Remote dashboard task actions now reach the selected workspace:
approve/reject/archiveused a rawfetch()that skipped the workspace-routing helper, so they silently no-op’d against a non-default remote workspace; the workspace selector also no longer renders its filesystem path beneath the dropdown. (Pull request) - Codex init default avoids nested sandboxing: fresh Orbit configurations now seed Codex with
danger-full-access, leaving Orbit and the host as the execution boundary. (Pull request) - Crews are one provider-model assignment:
[crews.now uses flat<name>] model,provider, andbackendfields shared by every activity role; legacy three-role crews load through their implementer assignment. See ADR-0213. (Pull request) orbitdefaults to global (multi-workspace) mode: the all-workspaces dashboard dropdown is always present;web serve --globalis now a deprecated no-op. (Pull request)- Versioned
.upgrade path —orbit/ orbit: the whole workspace layout is now versioned via amigrate state/marker and an ordered migration registry; older layouts auto-migrate on open, newer ones refuse to open.layout. version orbitreports and inspects. (Pull request)migrate [--dry-run] - Policy deny rules can no longer be dodged by respelling a path: glob-path normalization rebuilds paths from their normal components so
secret/,. / key. txt secret/, and trailing-slash spellings all match rules for/ key. txt secret/; adds Linux enforcement integration tests and a CI sandbox/policy job. (Pull request)key. txt - Task migration between machines: new
orbit/task export importpack and restore task bundles as a portabletar.with integrity validation and collision renumbering;zst orbitrebuilds the index from bundles, andtask reindex --task-id-startseeds disjoint id ranges. (Pull request) orbit: view a remote workspace’s dashboard over an auto-managed SSH tunnel — picks a free port, starts remote serve, forwards, opens the browser, and tears down on Ctrl-C. (Pull request)web connect <ssh-host> - Global, multi-workspace dashboard:
orbitoutside any workspace (or withweb serve --global) serves every registered workspace via a workspace-keyed runtime map, with a header selector and an aggregate “All workspaces” task view. (Pull request) - Dashboard shows each workspace’s filesystem location: the global dashboard surfaces where each workspace lives on disk (home-abbreviated) in the header selector and task Details box, disambiguating same-named workspaces. (Pull request)
- Aggregate dashboard view no longer 400s: an
isAggregateView()predicate gates per-workspace fetches so the “All workspaces” view fetches only the aggregate task list and shows a placeholder for workspace-specific panels instead of erroring. (Pull request) - Versioned store-schema migrations: the store SQLite DB tracks numbered migrations in a
schema_metaledger, applies each atomically, adopts pre-ledger DBs via an idempotent baseline, and refuses to open a DB written by a newer orbit. (Pull request) - Job-run checkpoint/resume for hard interruptions: the v2 executor persists a recovery checkpoint after each completed step; dead-owner runs finalize to a new
interruptedstate, andorbitreplays only the remaining steps. (Pull request)job resume <run_id> - Always-on operability: detailed healthz and
orbit:doctor /runs per-check probes, andhealthz?detailed= true orbitruns workspace pass/warn/fail health checks. (Pull request)doctor
0.9.2
Highlights
orbitis back as a thin CLI wrapper: the v2 graph is now reachable from the singlegraph orbitbinary viaorbit, not only the standalonegraph {sync, search, show, refs, callees, impact, trace, overview, implementors, deps, version, db-path, clean} orbit-graph-clibinary or the in-process MCP adapter.orbit-graph-cliis lib-ified (lib + bin) so both front ends share one command layer with no duplication; the agent-facing graph surface is unchanged (still MCP-only). This amends the ADR-0198 consequence that dropped the subcommand. (Pull request, ADR-0199)- Task store crash durability hardened: the task registry SQLite connection now runs with
synchronous=, and task-bundle creation fsyncs the bundle directory’s parent before returning — so a power loss or OS crash mid-write can no longer leave the task store or a freshly-created bundle in a torn, unrecoverable state. (Pull request, Pull request)FULL
0.9.1
This release completes the orbit-graph v2 migration — v1 (orbit-knowledge) is fully decommissioned and v2 is now the only graph surface — and adds a stable protocol for plugging in out-of-process executors.
Highlights
- orbit-graph v2 is now the sole graph surface: the orbit-knowledge (v1) crate and its
orbit.builtin tools are removed, thegraph. * orbitCLI command is dropped (the v2 graph ships as the standalonegraph orbit-graph-clibinary plus an always-on in-process MCP adapter), andorbitno longer builds a graph up front — v2 syncs on demand. The MCP graph surface is now search / show / refs / callees / impact / trace / overview / implementors / deps;init packis gone andcallersis folded intorefs. (Pull request, Pull request) - External Executor Protocol v1: register a homegrown agent or CLI as an Orbit executor without forking core, through a documented stdin/stdout envelope contract and dynamic out-of-process registration. (Pull request)
- Graph reads are faster and more accurate: queries are index-backed and decoupled from a full-worktree rescan,
showreturns UTF-8 text instead of a raw byte array,traceresolves far more command handlers, andrefs/impactfall back to fuzzy-name matches when the precise floor is empty. (Pull request, Pull request, Pull request, Pull request, Pull request)
0.9.0
This is a security-hardening release: the bulk of the changes close secret-leak, sandbox-escape, network-exposure, and workspace-containment issues found in a focused audit (ORB-00355–ORB-00374).
Breaking Changes
Shellactivity/job type removed: the v2type:activity surface is deleted end to end — a workspace activity or job declaringshell type:now fails to deserialize at load instead of executing. The shell program allowlist was self-asserted within the same workspace-supplied YAML (the gate was a tautology) andshell run_shellspawned with no OS sandbox, cwd confinement, or policy consultation. Theshell_referenceasset and the pure-shell job fixtures/demos are removed; use the sandboxed agent-CLI execution path instead. (Pull request, Pull request)[execution.config key removed: an auto-discovered workspaceenv] inherit config.could settoml inheritand — because workspace config replaces global — flip agent subprocess spawning to full environment inheritance, leaking the orbit process’s API keys and tokens into spawned agents. Env inheritance is now fixed to= true falseand is no longer configurable; only thepassallowlist remains tunable. Staleinheritkeys are silently ignored. (Pull request)
Highlights
- Secret redaction hardened across audit and logs: redaction now covers non-UTF-8 audit blobs (previously bypassed entirely), error/bytes fields recorded via
tracing, and Gemini’s HTTP transport no longer places the API key in the URL query string. The pattern redactor also learned major Google / SCM / cloud key formats it previously missed. (Pull request, Pull request, Pull request, Pull request) - Sandbox and execution confinement tightened: the macOS sandbox profile no longer grants unrestricted
file-read*plusnetwork*, an SBPL(?i)inline-flag bug that disabled sandbox-exec for all macOS CLI runs is fixed, therun_commandautomation action no longer shell-interpolates rendered templates, and unbounded child stdout/stderr capture (a memory-exhaustion DoS) is now bounded. (Pull request, Pull request, Pull request, Pull request) - Dashboard network exposure closed:
orbitnow refuses to bind any non-loopback host (onlyweb serve 127.and0. 0. 0/ 8 ::1) — the unauthenticated read/write API can no longer be exposed to the network via--host; bind loopback behind an authenticated tunnel/reverse proxy for remote access. Stored XSS from untrusted task/learning/ADR/friction content rendered in the dashboard is also fixed. (Pull request, Pull request)0. 0. 0. 0 - Secret-file policy matching fixed:
denyRead/denyModifyglobs now match dotenv-variant secret files (., etc.), policy glob matching is no longer case-sensitive on case-insensitive filesystems, and audit blobs and JSONL logs are no longer written world-readable. (Pull request, Pull request, Pull request)env. local - Workspace containment enforced: a malicious workspace can no longer override seeded
.assets, and graph operations stay confined to the worktree even when an MCP session omits the workspace. (Pull request, Pull request)orbit/ resources/ {jobs,activities}/
0.8.2
Fixes
- Intel-macOS semantic companion dropped from the release:
orbit-search-companioncannot link onx86_64-apple-darwin—ort-sys(2.0.0-rc.12) ships no ONNX Runtime prebuilt for Intel macOS. The Intel-mac release leg now builds theorbitCLI only, and the release publishes companion binaries for macOS-arm64, Linux x86_64, and Linux arm64 only. The Intel-mac CLI tarball still ships; semantic search is unsupported on Intel Macs (it never successfully shipped). Together with the glibc fix in 0.8.1, this completes recovery of thev0.release, whose GitHub Release never published while8. 0 @orbit-tools/was already on npm. (Pull request)cli@0. 8. 0
0.8.1
Fixes
- Linux release build of the semantic companion:
orbit-search-companionfailed to link on the release runners — its prebuilt ONNX Runtime (viaort/fastembed) references glibc 2.38+ symbols (__isoc23_*) that don’t exist onubuntu-22.(glibc 2.35), failing both Linux build legs and blocking the GitHub Release. The release workflow now builds the Linux companion on04 ubuntu-24.(glibc 2.39) while keeping the04 orbitCLI onubuntu-22., so the CLI’s glibc-2.35 compatibility floor is preserved. This fixes forward after the04 v0.GitHub Release failed to publish while8. 0 @orbit-tools/had already been published to npm. (Pull request)cli@0. 8. 0
0.8.0
Breaking Changes
- Agent MCP surface slimmed;
orbit.alias dropped: six tools moved off the agent-facing MCP surface toreview-thread. * register_inactive—orbit.,task. reject orbit.,friction. list orbit.,friction. show orbit.,friction. resolve orbit., andlearning. comment. list orbit.. They stay reachable via the CLI (learning. upvote orbit) andtool run runtime., butrun_tool tools/over MCP no longer advertises them andlist orbitrejects agent calls to them — these are operator/triage actions, while agents file friction viamcp serve orbit.and discover learnings viafriction. add orbit.. Separately, the duplicatesearch orbit.alias (added in ORB-00273) is removed; the canonicalreview-thread. * orbit.form that the README, thetask. review_thread. * orbit-review-taskskill, and the audit/redaction policy reference is unchanged. Seeded activity allowlists and skill docs were updated to drop the stale references.EXPECTED_INACTIVE_TOOL_NAMESlength canary moves 21 → 27. (Pull request, Pull request)
Highlights
- Dashboard and scoreboard redesign: the dashboard adopts the new visual mock and the scoreboard gets a phase-1 reskin plus a window-aware backend — a
?window=selector (1h / 24h / 7d / 30d / all) now scopes scoreboard metrics, on an additive snapshot schema bump (v5 → v6). (Pull request, Pull request, Pull request) - Crew and duel composition adapt to detected agents:
[workflow].anddefault_crew [duel].are now derived from the agent families detected atcandidates orbitrather than hard-coded, so a workspace’s defaults match the agents actually installed. (Pull request)init - Semantic-companion install hardened: the release workflow now publishes the standalone
orbit-search-companion-*binaries alongside the CLI tarballs, soorbitcan resolve signed companion assets from the GitHub Release. (Pull request)semantic install
0.7.1
Fixes
- Rotate release signing key and recover package installs: adds
orbit-release-key-3to the shell and npm installer trust sets, makes it the canonicalplugin/, and documents the new current signing path. This patch fixes forward after thenpm/ release-signing. pub v0.GitHub Release publish failed before assets were created while7. 0 @orbit-tools/had already been published. (Pull request)cli@0. 7. 0
0.7.0
Breaking Changes
- Agent MCP surface trimmed: six admin/destructive tools moved off the agent-facing MCP surface —
orbit.,task. delete orbit.,task. lint orbit.,semantic. uninstall orbit.,adr. list orbit.,learning. prune orbit.. They remain registered (learning. comment. delete register_inactive) and reachable via the CLI (orbit,task delete orbit, etc.) andadr list runtime.;run_tool tools/over MCP no longer advertises them andlist orbitrejects calls to them. Agents that need ADR enumeration usemcp serve orbit.. A newsearch --kind adr orbitCLI subcommand routes through the tool to preserve filter parity (adr list --include-remote,--status,--owner, etc.).EXPECTED_INACTIVE_TOOL_NAMESlength canary incrates/bumps 15 → 21. (Pull request)orbit-cli/ src/ command/ mcp/ tests/ mod. rs - Semantic companion lookup no longer searches
$PATH: normal runtime lookup uses the managed~/install only. Dev/CI overrides must set. orbit/ embed/ bin/ ORBIT_SEARCH_COMPANION=plus<absolute path> ORBIT_SEARCH_COMPANION_ALLOW_UNSAFE=; managed downloads now require a release-signed checksum manifest before replacement or execution. (Pull request)1 - Envelope and embedding rebuild verbs renamed:
orbit/docs reindex orbit.is nowdocs. reindex orbit/docs index orbit.for doc-corpus embeddings, anddocs. index orbit/learning reindex orbit.is nowlearning. reindex orbit/learning sync orbit.for YAML-to-SQLite envelope reconciliation. No compatibility aliases are retained. (Pull request, Pull request)learning. sync orbitmode split and per-kind status syntax: the query surface now has three visible CLI forms:search orbit,search <query> orbit, andsearch similar <id> orbit. The oldsearch path <path> orbitandsearch --semantic <id> orbitforms are removed.search --path <path> --statusnow requireskind:valuetokens such astask:open,doc:active,adr:proposed; bare tokens like--statusare rejected. CLIopen --field/--modeland MCPfield/embedding_modelare removed fromorbit; MCPsearch modelremains provenance-only. ADR-0179 supersedes ADR-0175. (Pull request)- Per-domain
searchsubcommands removed; cross-kind filters onorbit:search orbit,task search orbit,docs search orbit(and the matchinglearning search orbit.,task. search orbit.,docs. search orbit.MCP tools) are removed. Replacement:learning. search orbitfor content similarity and kind-specificsearch --kind {task,doc,learning,adr,all} <query> listcommands for structural filters.orbit,search --all --tag, per-kind--status, andorbitcover the previous include-superseded/path/tag use cases.search path <path> orbitnow uses glob containment rather than exact string match. (Pull request)learning list --path orbitflag rename: free-text vector ranking is nowsearch --hybrid/hybrid:; task-neighbor lookup is nowtrue --semantic/<id> semantic:. The old"<id>" --semanticboolean and--relatedsurfaces are hard-removed; JSON mode values are now<id> hybridandneighbor. Historical phase-1 audit payloads carryingsemantic:are orphaned by the no-shim rename. (Pull request)true - Design-doc tooling retired:
orbit,design check orbit,design init/ list/ show orbit., thedesign. * orbit-designskill, the wrapper script, andmakeare gone. Usecheck-design-docs orbit-docs,orbit., and the same-PR doc update rule;docs. * orbitstill seedsworkspace init --design docs/. (Pull request, Pull request, Pull request)design/ CONVENTIONS. md - Search namespace split:
orbit.,semantic. search orbit., and thesemantic. related orbit-semanticskill are removed in favor oforbit.andsearch orbit-search;orbitis nowsemantic reindex orbit. Historicalsemantic index semantic./search semantic.audit event names are orphaned by this hard break because there are no external audit-history consumers yet. (Pull request)related - Low-use CLI commands retired:
orbit,scoreboard orbit, andmetrics orbitare removed. Their supported replacements are the dashboard scoreboard and metrics views, dashboard HTTP metrics endpoints, and the already-migratedadr migrate orbit.artifact tools. (Pull request, Pull request, Pull request)adr. * - Legacy executor
models:compatibility removed: executor YAML must usemodel_pair_override:; the one-releasemodels:alias and deprecation warning path are gone. (Pull request)
Highlights
- Unified knowledge search: lexical and hybrid search now spans tasks, docs, learnings, and ADRs, with doc/learning/ADR embeddings, task-neighbor lookup, path applicability, and a single
orbitmental model. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)search - Worktree-aware artifact foundations: Orbit now distinguishes shared and local
.roots, adds a global artifact ID allocator, and lays the groundwork for worktree-local ADR/Learning artifacts while keeping existing stores on the shared root. (Pull request, Pull request, Pull request)orbit/ - Docs and learning context in the agent loop: PreToolUse learning reminders,
orbit-docs, indexed design docs, andtask.make project knowledge easier for agents to retrieve before editing. (Pull request, Pull request, Pull request, Pull request)show --with-context - Dashboard and steering improvements: Audit / Diagnostics side panels, scoreboard grouping, a task resolver, metrics panels, review-thread message panels, and hook-driven async steering make the dashboard a fuller operations surface. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)
- Release and runtime hardening: installers authenticate release archives, semantic-companion binaries require signed checksums, key rotation is documented in the installer trust set, and the companion freshness check closes a TOCTOU window. (Pull request, Pull request, Pull request, Pull request)
- Safer agent writes and execution: artifact-write redaction, ambient MCP session context, and restricted v2
proc.execution reduce the odds of leaking secrets or running in the wrong workspace. (Pull request, Pull request, Pull request)spawn
0.6.0
Breaking Changes
- Branching model flipped:
mainis now the release/production branch;agent-mainis the dev integration branch where task PRs land. Each release tags onagent-mainthen promotes tomainvia merge commit; hotfixes branch frommainand back-merge toagent-main. Install URLs inREADME.and the website now point atmd main. Retired stubcrates/removed. Seeorbit-core/ assets/ activities/ examples/ promote_agent_main. yaml RELEASING.§10b and §Hotfix flow. (Pull request)md - Crew registry replaces role-keyed agent config:
[agent.,planner] [agent.,implementer] [agent.blocks are removed in favor of namedreviewer] [crews.registries selected via<name>] [workflow].or per-taskdefault_crew crew. Workspaces with stale schema are rejected at load. (Pull request) ship-autoandship-localaliases removed:orbitis now the unified async-by-default command — empty task IDs trigger auto-backlog mode, explicit IDs queue-and-wait instead of fail-fast. (Pull request)run ship - Agent identity schema collapsed to family:
PlanningRoleAssignmentdropsmodel; planning-duel artifact paths and signatures rename to{slot}.andmd *authored;by: {family} / {slot}* resolve_agent_model_pair*helpers and alias canonicalization removed; scoreboardby_model→by_family. Includes a read-side migration; downstream consumers indexing onby_modelkeys break. (Pull request) - Family-identity migration script required after upgrade:
scripts/rewrites persisted task/friction/run/audit/scoreboard records and four SQLite stores to family-keyed shapes. Dry-run by default; back up before applying. (Pull request)migrate_family_identity. py - Audit
task.andlocks. * jobevents populaterun-pipeline-worker task_id/job_run_idsemantically: previously these overloadedtarget_id. Downstream analytics joining ontarget_idfor these events need updating. (Pull request) FrictionStatus::Defaultderive swap: enum default impl moved from a hand-rolledimplto#[derive(Default)]to satisfy a clippy-deny lint. Behaviorally a no-op; listed for completeness. (Pull request)- Task relation enum gains
Produces/Resolves; frictions auto-close on Review → Done: relation enum extension is additive but the auto-friction-close on task completion is a semantics change. Aresolved_by_taskback-pointer is added to friction records. (Pull request) - Learning storage layout: flat → per-entity directories:
.moves toorbit/ learnings/ <L-id>. yaml .. Legacy-layout load returns a typed error directing operators atorbit/ learnings/ <L-id>/ learning. yaml orbit. (Pull request)learning migrate-layout - ADR allocation policy: new ADR headings must first allocate globally via
orbit.; local 3-digit ADR headings underadr. add 4_decisions.are grandfathered.md docs/§4 updated. (Pull request)design/ CONVENTIONS. md - Knowledge-graph workspace_root attribution fixed: graph refs are now keyed on the worktree’s actual branch rather than falling back to the main repo’s
agent-main; the missing-ref case rebuilds rather than silently reading the default branch. Cached selectors keyed off the old behavior may need refresh. (Pull request, Pull request) orbit.persiststask. update source_task_id: the property was previously silently dropped on writes; clients that depended on the drop now see persistence. Empty-string clears the field. (Pull request)- MCP schema emitter no longer degrades
object_listparams to"string":evidenceand similar fields now emit array-shaped schemas. MCP clients that worked around the bug by string-encoding payloads must send arrays. (Pull request) - Ship batch commit message template:
feat:is replaced by a deterministic template —parallel batch [ORB-id] <type>:with an optional full-title line, execution-summary paragraph, and<truncated title>… [ORB-id] [EXT-id]… Planned-By/Implemented-Bytrailers. Release-note builders andgitworkflows break. (Pull request)log --grep 'parallel batch'
Highlights
- Grok onboarded as fourth agent family: sandbox state dir + SBPL allowances; CLI runner + executor YAML;
orbitwritesmcp init --client grok .; duel / scoreboard / friction-stats render zero-grok rows; design folder, commit identity, and docs updated. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)grok/ config. toml - Knowledge tab in dashboard: Learnings subtab (list, supersede, stats), Frictions subtab (triage, resolve, stats, tag-picker sourced from YAML), ADRs subtab (accept, supersede, related-task deep-links), task-detail enrichment, Locked Files panel, per-task crew selector, markdown rendering. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)
- Duel-plan agent pool configurable via
[duel]+candidates [duel.inmodels] config.; runtime-host trait methods for candidate/model resolution; preserves fallback for non-duel callers. (Pull request)toml - Cross-artifact task relations:
Produces/Resolvesvariants enable typed task ↔ friction / learning links; auto-resolves frictions on Review → Done with aresolved_by_taskback-pointer. (Pull request) - Learning enrichments: per-learning
comments.with push-injection rendering; decay-weighted upvotes with task-anchored idempotency; learning-creation wired into agent activity loops with a checkpoint. (Pull request, Pull request, Pull request)jsonl - Direct-agent runtime model injection:
ExecutorDef.enables data-drivenmodel_flag -m/--modelflag dispatch per step. (Pull request) - Ship command unified to async-by-default:
orbitempty-task-IDs → auto mode, explicit IDs → gated; waiting-reason fields surfaced throughrun ship orbit/run history show. (Pull request, Pull request) - Backlog dependency gating:
list_backlog_tasksfilters bytask_dependencies_ready, fixing out-of-order auto-pipeline execution. (Pull request) - Skill quality nudges:
orbit-create-tasknow teaches optionalcomplexity,dependencies,parent_id, and cross-artifactrelations;orbit.description enumerates the tag taxonomy from YAML. (Pull request, Pull request, Pull request)friction. add
0.5.4
Features
- Project-learnings push-injection (L1/L2/L3): relevant learning summaries are now injected into agent context at three layers — engine pre-prompt before runtime spawn, MCP sidecar on path-bearing tools (
orbit.,graph. show orbit.,graph. refs orbit.), and a Claude Codetask. show PreToolUsehook onEdit. Summary-only payloads with per-session dedup, per-call caps, and an| Write | Read ORBIT_SESSION_IDenvelope for cross-process dedup. (Pull request) - First-class design-docs surface (
orbit.+design. * orbitCLI): four MCP tools (design check init,list,show,check) plus a Rust port of the design-doc decay checker, withorbitseedingworkspace init --design docs/when absent.design/ CONVENTIONS. md makeandcheck-design-docs scripts/now wrap the Rust path. (Pull request)check_design_doc_decay. py - Default-seeded skills aligned across asset, registry, plugin, and router catalogs:
orbit-learningandorbit-designonboarded;orbit-review-taskand the semantic-search skill brought into the default seed and the plugin’sskills/symlinks; three drift-detection unit tests guard the four catalogs against recurrence. Default seed bumped 7 → 11. (Pull request, Pull request) orbit: opt-in flag writes an idempotent Orbit-rules block intoworkspace init --inject-agent-rules CLAUDE.andmd AGENTS.at the workspace root, delimited bymd <!--markers. Block content sourced from an editable asset; malformed marker pairs refuse to write. (Pull request)orbit-managed:start/ end --> - Inline task status transitions in the dashboard: per-task actions row gains a status selector wired through the existing
PATCHbackend, ordered by/ tasks/ :id STATUS_ORDERwithdonelast and excludingrejected/archived/friction. Surfaces a “no longer shown in dashboard list” notice when transitioning todone. (Pull request) orbit.exposed over MCP: the full eight-tool learning surface (learning. * add,list,search,show,update,supersede,prune,reindex) is now reachable from every MCP client, not justorbit. Restores parity with thetool run orbit-learningskill instructions. (Pull request)
0.5.3
Features
- Claude Code plugin SessionStart hook: the Orbit plugin now ships a
SessionStarthook (plugin/) that detects an uninitialized workspace via a pure filesystem walk and surfaces ahooks/ check-workspace. sh systemMessageinstructing the user to runorbit/init orbit. Closes the silent-no-op gap whereworkspace init orbitwould attach with zero tools and no in-session signal. (Pull request)mcp serve
Fixes
- No-diff PR handoffs:
pr_opennow treats branches with zero commits ahead of the configured base as successful repository-noop handoffs, moves completed tasks toreview, returnspr_created:, and avoids creating an empty GitHub PR. (Pull request)false
0.5.1
Fixes
- Deprecation warning routes through
tracing: theknowledge.deprecation notice was emitted viatask_id_pattern writeln!directly to stderr fromorbit-core, contradicting theCLAUDE.“md tracingfor diagnostics;eprintln!only inorbit-cli” rule and leaking intocargooutput. Now goes throughtest tracing::warn!with a structuredconfigfield.
0.5.0
Breaking Changes
- Legacy task artifact store removed: the v1 single-file task store and its migration helpers were deleted in favor of the v2 bundle store.
[task]acceptsartifact_store "v2"as a no-op for forward compatibility and rejects"legacy"with an explicit migration error. Workspaces still on legacy storage must migrate under v0.4.0 before upgrading. ([commit e9582eba], [commit 222f6020], [commit 123f89f7]) Task./workspace_path Task.dropped from the update path:repo_root TaskAutomationUpdate,TaskRecordUpdateParams, andTaskDocumentUpdateParamsno longer accept these fields, and the v2 document layer rejects them at load. Worktree setup and parallel-batch dispatch no longer thread them through. The fields remain on the public DTO via projection from workspace metadata, but write-path inputs that include them now fail. ([commit 6beb14a2])
Features
- ADR-artifact subsystem (
orbit.): ADRs lift out of per-featureadr. * 4_decisions.markdown into first-class artifacts atmd .with globally-uniqueorbit/ adrs/ <status>/ <id>/ {adr. yaml,body. md} ADR-NNNNIDs and a three-state lifecycle (proposed/accepted/superseded). Ships domain types, a SQLite envelope index, a file store with per-ADRfs2locks, five tools (add,show,list,update,supersede) with lifecycle audit rows, anorbitone-shot, and a parser/sweeper hardened against rollup-bullet form and code-fenced examples. Migration imported 142 ADRs (97 accepted / 39 proposed / 6 superseded) across the existing corpus. The envelope’sadr migrate legacy_id:field was renamed toString legacy_ids:mid-development per the ADR-002 amendment; pre-GA churn, no external consumers yet. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)Vec<String> - Project learnings subsystem (
orbit.): workspace-scopedlearning. * LearningFileStoreunder.with a SQLiteorbit/ learnings/ <id>/ learning. yaml learnings_indexfor fast scope-glob lookups on the injection hot path. Eight MCP tools (add,list,search,show,update,supersede,reindex,prune) plus matchingorbitCLI;learning <verb> orbitupgrades legacy flat workspaces. Learnings travel with the repo via a carved-outlearning migrate-layout .entry. End-to-end dispatch latency p95 ≈ 0.04 ms at 500 records. (Pull request, Pull request, Pull request)gitignore - Plugin install contract locked down:
makeenforces version lockstep acrossrelease-check plugin/,npm/ package. json plugin/,. claude-plugin/ plugin. json npm, andview @orbit-tools/ cli gh;release list -L 1 scripts/exercises the publishedsmoke-plugin-install. sh @orbit-tools/postinstall + MCPcli@latest tools/handshake;list .runs the smoke weekly and on everygithub/ workflows/ smoke-plugin-install. yml v*tag on macOS and Linux;docs/codifies the chain. v0.5.0 switched the npm publish step to manual after the workflow ran into account-level 2FA. (Pull request, Pull request)RELEASE. md - Typed error discriminators:
KnowledgeError.is now the typedkind KnowledgeErrorKindenum, and ten per-kindOrbitError::*NotFound(String)variants consolidate intoNotFoundwith exhaustive matches in every error-code translator. JSON wire shape is preserved via{ kind: NotFoundKind, id: String } #[serde]; internal Rust matchers move to the typed kind. (Pull request) - Property + snapshot tests on protocol boundaries: proptest-backed
Selectordisplay/parse roundtrip (256 cases per variant), multi-threadedGraphLockGuard/LockStoreconcurrency with a 5-second deadline, and committed JSON-snapshot coverage forAuditGuardsuccess/failure/denied events. (Pull request) - Knowledge graph workflow relocation:
build/show/search/historyworkflows moved fromorbit-toolsinto a neworbit_knowledge::workflowsmodule, soorbit-knowledgeowns both the tool surface (commands/) and the host application surface (workflows/). ([commit 5fc2b72c]) - Forward-only YAML migration framework:
orbit_common::migration::PlanchainsValuesteps keyed on→ Value schema_version;OrbitError::Migrationseparates chain failures from store/parse errors; the v2 task-bundle envelope read path now flows throughtask_migrations::envelope_plan()(empty chain today — next schema bump adds oneadd_stepcall). ([commit 01928e76]) - Semantic companion install hardening: companion installation is version-aware,
--forcereinstalls supported, and background-companion stderr is suppressed during task-mutation indexing. (Pull request)
0.4.0
Breaking Changes
- Friction reports relocated: friction is no longer a task type or status. Records live as append-only markdown under
.and are managed throughorbit/ frictions/ {yyyy}-{mm}/ F{nnn}. md orbit..friction. add/ list/ show/ stats orbit.rejectstask. add type:/friction status:; web API and scoreboard JSON dropfriction friction_bounty. (Pull request) - Task type taxonomy reduced: the
taskenum collapses to| feature | epic | issue | bug | chore | refactor | friction feature.| bug | refactor | chore orbit.andtask. add orbit.reject the removed values; existing tasks were migrated. (Pull request)task. update - Attribution narrowed to
model: theagentfield is removed fromActor;orbit.rejects antask. add agentparameter and Orbit infers the agent family frommodelviaagent_from_model. MCPorbit_task_list,orbit_task_search, andorbit_task_review_thread_listresponses are now object-shaped (previously top-level arrays) so Cursor and VS Code accept them. (Pull request) - Knowledge-graph leaf IDs unified across extractors: Python, Rust, Java, and TypeScript leaf selectors now use a single canonical form so SQL and JSON paths return set-equivalent results.
GRAPH_SQLITE_INDEX_SCHEMA_VERSIONbumps; consumers caching selectors must rebuild. (Pull request) - Semantic search requires a companion binary:
orbit-embed-companionis installed separately viaorbit;semantic install orbitand the matching MCP tools fail until it is present. (Pull request, Pull request)semantic * JobV2Steprejects multi-body shapes: YAML steps that previously parsed silently with bothtargetandparallel(or any other body combination) now fail at load. (Pull request)orbit-locksskill removed: the seededorbit-locks/and the ad-hocSKILL. md orbit.instructions in the seededtask. locks* orbitskill are gone — the gate pipeline still owns reservations. External agent prompts referencing the skill must be updated. (Pull request)
Features
- Knowledge graph latency wins: lazy source hydration via
GraphReadOptions, a bounded default-ranking work cap on search, and aBinaryHeaptop-K inoverview.. (Pull request, Pull request, Pull request)top_files - Knowledge command surface: graph business logic — ranking, classification, fast-path orchestration — relocated into
orbit_knowledge::commands::*so non-tool consumers share canonical behavior. (Pull request) - Semantic search subsystem:
orbit-embedclient,orbit-embed-companionbinary,embeddingsandtasks_ftsSQLite schema, paragraph chunker, BLAKE3 dedup, task-mutation index hooks, andorbitCLI plus MCP surface. (Pull request, Pull request, Pull request, Pull request)semantic install/ uninstall/ reindex/ stats/ search/ related - Task tags: first-class
tags:field with normalized SQLite index andVec<String> --tagfiltering onorbit. (Pull request)task list/ search - Activity/job runtime polish: wildcard-aware tool allowlists honored at dispatch and HTTP-loop schema advertisement, asset-load-time allowlist validation, agent-loop
on_denial:, literal-boolean condition atoms, and exclusive locking on duel scoreboard appends. (Pull request, Pull request, Pull request, Pull request, Pull request)continue - Recovery role configurability: seeded step-failure recovery activity uses
role:and resolves agent/model fromreviewer [agent.config instead of hardcoded Codex. (Pull request)reviewer] - Done-task sync cap: website task sync caps generated pages to the 100 most recent
donetasks. (Pull request) - Debug-job-failure skill: seeded
orbit-debug-job-failureSKILL.md teaching agents how to investigate failed/stuck/cancelled job runs across run state, audit events, blobs, and live processes. (Pull request)
0.3.1
Features
- Pipeline dispatch reliability: hardened parallel, gate, and epic pipelines with failed-child completion handling, longer task lock coverage, epic timeout/convergence fixes, resolved workspace subprocess cwd, and per-step agent log/error surfacing. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)
- Metrics and public docs: split the public metrics surface into Operations and Scoreboard views, added done-task sync pages for orbit-cli.com, refreshed positioning/reference docs, and refined the website UI. (Pull request, Pull request, Pull request, Pull request, Pull request)
- Registry and benchmark tooling: added the
orbit-registrycrate and identity-key benchmark harness for exercising knowledge graph selector stability. (Pull request, Pull request)
Fixes
- macOS sandbox and CLI execution: allowed Claude’s
$HOME/lock/tmp siblings, re-allowed the active job-run worktree after global deny rules, and demoted successful CLI exits when the inner Orbit envelope reported failure. (Pull request, Pull request). claude. json - Workflow defaults and links: made workflow base branches resolve from
[workflow]when CLI flags are omitted, and fixed task-ID links in generated PR bodies with an opt-in URL template. (Pull request, Pull request)base_branch - CI clippy guardrails: grouped macOS sandbox spawn inputs into a request struct so strict workspace clippy passes under
-D. (Pull request)warnings
0.3.0
Release scope
- Stable surface: CLI agent backends. v1 supports
backend:as the stable agent invocation path, running Codex, Claude Code, Gemini CLI, and other official CLIs as supervised subprocesses.cli backend:(http LoopTransport) and the Groundhog checkpoint runner remain preview-only for v1; they are exercised in tests but can change before v2.
Breaking Changes
- Activity/job schema v1 removed: loaders now reject
schemaVersion:activity/job assets, the v1 reconcile/runtime/store paths are gone, and1 schemaVersion:is the canonical activity/job surface. (Pull request, Pull request)2 - Workflow commands reorganized: stable entrypoints are
orbit,run ship <TASK_ID>. . . orbit,run ship --mode local <TASK_ID>. . . orbit,run ship-auto orbit, andrun duel-plan <TASK_ID> orbit. The directrun job <JOB_ID> orbitshorthand and workflow-specificrun <JOB_ID> runandship list/ show runcommands were removed; useduel list/ show orbitandrun history orbitfor job-run inspection. (Pull request, Pull request, Pull request, Pull request)run show - Task attribution history moved to
orbit: selector history is graph-owned, so the query now lives next tograph history orbit, and rebuilds usegraph search/ show orbit. Bothgraph build orbitandgraph build orbitacceptgraph history --task-id-pattern; workspace config<regex> knowledge.is the steady-state setting, with CLI flag > config > Orbit default precedence. The selected pattern is recorded intask_id_pattern manifest., and mismatches emit a stderr warning.json orbit.exposes the same surface to MCP clients. (Pull request)graph. history
Features
- Activity/job v2 runtime: added schema v2 activities and jobs with typed DAG blocks (
parallel,fan_out,loop,retry,when), activity name resolution,backend:normalization,auto backend:dispatch, HTTP agent loops, session-bound loop steps, and a v2 audit envelope with workspace provenance. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)cli - Seeded task pipelines: added load-bearing seeded workflows for PR, local, gate, auto-dispatch, and epic shipment, including task reservations, backlog bundling, admission-controlled dispatch, and session-backed epic orchestration. ([T20260419-0622-3], Pull request, [T20260419-0623-2], Pull request)
- Knowledge graph: added the Rust
orbit-knowledgegraph,orbit, graph MCP tools, compact overviews, callers/implementors/dependency navigation, edit buffering, shared locks, auto-refresh, branch-scoped refs, task-ID attribution metadata, and markdown/config/table extraction. (Pull request, [T20260412-0645-2], [T20260412-0645-3], Pull request, Pull request, Pull request)graph build/ update/ search/ show - MCP integrations: added the
orbit-mcpcrate,orbit, safe default graph/task tool exposure, external MCP/plugin tooling, andmcp serve orbitsetup for Claude, Codex, and Gemini clients. (Pull request, Pull request, Pull request, Pull request)mcp init/ remove - Dashboard and observability: added
orbit; task, job, audit, scoreboard, and dashboard APIs; diagnostics and recent-runs views; task actions; copyable task IDs; connection health; skeleton/loading states; markdown rendering; and live-data animations. (Pull request, Pull request, Pull request, Pull request, Pull request, Pull request, Pull request)web serve - Task planning and search: added structured task plans, dependency support, epic task type support, selector-first task context, agent task search, and richer task field projection for agent/tool callers. (Pull request, [T20260420-0509-2], Pull request, Pull request, Pull request)
- Groundhog execution model (preview): added Groundhog chronicle serialization, workspace snapshots, verb tools, checkpoint verification, and a dedicated Groundhog v1 activity runner. (Pull request, [T20260420-0509-3], [T20260420-0509-4], Pull request, [T20260420-0510-2])
- Provider and evaluation support: added Gemini support, configurable agent/model selection, provider invocation traces, HTTP LoopTransport implementations for Anthropic/OpenAI-compatible/Gemini providers, planning duels, scoreboard attribution improvements, and versioned knowledge-graph benchmark harnesses. ([T20260411-1937-2], [T20260412-0457-2], Pull request, Pull request, Pull request, Pull request, Pull request)
0.2.0
Features
- Parallel batch execution: dispatch and execute multiple tasks in parallel with file-level conflict detection and shared worktrees
- Auto-cleanup on merge: ship workflow now deletes the remote branch after a successful PR merge
Fixes
--parallelismflag: serialized as JSON integer instead of string, fixing schema validation failure onorbitrun ship --parallelism N - Stale default artifacts:
orbitnow always refreshes default skills, activities, and jobs to their latest embedded versions (custom artifacts are preserved)workspace init - Clippy warning: resolved unused-mut warning and removed clippy from CI
0.1.0
Initial release of Orbit.
Core
- Task lifecycle: propose, approve, implement, review, and archive tasks with full history tracking
- Activity system: reusable operations with defined input/output schemas and three spec types (agent_invoke, cli_command, automation)
- Job engine: composable multi-step pipelines with conditional execution, retry logic, nested jobs, and parallel dispatch
- Workflow aliases:
orbit,run ship orbit,run ship-local orbitas ergonomic entry points over raw job invocationrun review - Multi-agent orchestration: parallel task workers with file-level locking in shared worktrees
- Multi-model strategy: configurable agent/model per job step (e.g., Opus for planning, Codex for implementation)
CLI
- Grouped command surface: run workflows, manage work, configure and inspect
- JSON and table output modes across all commands
- Audit event logging for every CLI invocation
Infrastructure
- Layered Rust crate architecture (types, policy, exec, tools, store, agent, engine, core, cli)
- Two-root workspace model: global (
~/) and workspace-local (. orbit/ .)orbit/ - File-based (YAML) and SQLite persistence
- RBAC policy evaluation engine
- Process sandboxing and timeout handling
- Skill system for agent prompt composition