Repository navigation
Releases
Releases · Guria-Studio/orch
v0.30.0
- Operator rules: a
.orch/knowledge/file withkind: rulereaches every task whose files itsareacovers, outsideknowledge.max_in_prompt, and the local verify's review checks the diff against it. Only the operator writes one (orch knowledge add --kind rule). Inarea,**now matches any depth. orch-discover: a new skill, step 0 oforch-planon a repository that already has code. It writesdocs/arch/000-discovery.md(every claim citing its file: stack, architecture, tracked secrets, boot-time side effects, questions for the client) and proposes config and rules it applies only once you confirm.- Your own critical and protected paths:
gate.critical_pathsreplaces the built-in Supabase layout fororch run --mode semi;guard.protected_pathsblocks any change to files you name (guard.protected: block | warn | off), for credentials no token pattern can match. - Verify checks what the task touched: detected checks run only for the packages the change touches, so a missing toolchain elsewhere no longer sends work back; every verify command gets
ORCH_CHANGED_FILES. - CI that never started: a red CI because GitHub gave the job no runner (Actions billing, spending limit) blocks the task at once, without spending an agent retry.
- Low disk:
dispatch.min_free_disk_mb(orch initwrites 2048) holds a new dispatch while the disk is low, instead of letting a task fail withNo space left on device. - orch moved to github.com/Guria-Studio/orch. Old URLs and
orch upgraderedirect.
What's Changed
- feat(site): tell what orch does as of v0.29 by @hectorcanaimero in #494
- feat(dashboard,cli,web): welcome page — orch dashboard outside a project walks a new user to a first run by @hectorcanaimero in #496
- fix(site): new screenshot URLs, so a cached copy of the old ones is not shown by @hectorcanaimero in #495
- docs(launch): G7.3 demo GIF, clean Linux install (fixes install.sh on dash), re-measured HN numbers, Homebrew dropped by @hectorcanaimero in #502
- fix(templates): the Python templates' first task ships a smoke test so its CI can pass (#500) by @hectorcanaimero in #508
- chore: orch moved to github.com/Guria-Studio/orch by @hectorcanaimero in #509
- fix(vcs,engine): a CI job GitHub never started blocks the task instead of spending a retry (#501) by @hectorcanaimero in #510
- fix(verify): detected checks run only for the packages a task touched (#498) by @hectorcanaimero in #511
- docs(verify): warn that verify.app boots the app with the task's env (#506) by @hectorcanaimero in #512
- feat(engine,guard): configurable critical paths and protected paths (#503, #504) by @hectorcanaimero in #513
- feat(engine): hold back a new dispatch while the disk is low (#497) by @hectorcanaimero in #514
- feat(knowledge): operator rules carried to the prompt and the verify review (#505) by @hectorcanaimero in #515
- feat(skills): orch-discover, evidence-based discovery as step 0 of orch-plan (#507) by @hectorcanaimero in #516
Full Changelog: v0.29.0...v0.30.0
v0.29.0
- Pre-PR guard: before orch pushes a task, its diff is scanned. Secrets (GitHub/AWS/Slack/Anthropic/OpenAI/Google/Stripe keys, private keys,
.envfiles) block the task; debug leftovers (console.log,debugger,breakpoint()…) are listed in the PR body. Configguard.secrets/guard.debug:block | warn | off. - Agent watch:
orch runflags an agent whose log goes silent (watch.stall_after_s, default 10 min) or that repeats the same call, with theorch task stopcommand to end it. New events in the dashboard. - Conflict radar:
radar: warn | serialize | offcompares a task'sfileswith the running ones before dispatch, and a new PR with the other open PRs after. orch tui: a live read-only terminal view — tasks, phases, spend per provider and the selected task's log.- Sandbox (Linux, opt-in):
dispatch.sandbox: trueconfines each agent to its worktree with Landlock;dispatch.sandbox_allowadds paths (e.g. your Claude hooks).orch doctorchecks support. No network restriction yet. - New dependencies:
golang.org/x/term,github.com/landlock-lsm/go-landlock.
What's Changed
- feat(guard,engine): a pre-PR guard blocks secrets and warns on debug leftovers (#484) by @hectorcanaimero in #488
- feat(engine,dashboard): orch run flags stalled and looping agents while they run (#487) by @hectorcanaimero in #489
- test(guard): time the scan as the best of three runs so a loaded machine cannot fail it by @hectorcanaimero in #492
- feat(engine): conflict radar flags overlapping tasks before dispatch and conflicting PRs after (#482) by @hectorcanaimero in #490
- feat(cli): orch tui, a live read-only terminal view of the run (#483) by @hectorcanaimero in #491
- feat(engine,doctor): dispatch.sandbox confines each agent to its worktree with Landlock (#481) by @hectorcanaimero in #493
Full Changelog: v0.28.0...v0.29.0
v0.28.0
- Project memory: lessons in
.orch/knowledge/reach later tasks' prompts; orch drafts them from blocked tasks and verify findings.orch knowledge add|list|show|rm|stats|curate, MCPorch_learn/orch_knowledge_search, and a Knowledge page in the dashboard with a Curate now button. - Review in the dashboard: a task's diff, Accept and Send back (
orch task accept,orch task note --retry). vcs.provider: local: finished tasks merge into the base branch here, with no remote and nogh.- Plain-language run summary in the receipt, plus
orch report summary --ai. orch router suggest: which route works for which kind of task, based on the project's history.orch router refreshand doctor say when an agent CLI is behind its latest release.- Robustness: provider failover when one runs out of quota, conflict retry for a PR that conflicts with its base,
orch doctor --smoke, a warning before the run when a configured command is not on PATH, and duplicate findings deduped. - Fixes: gemini runs in task worktrees (
GEMINI_CLI_TRUST_WORKSPACE); the local verify's review records its spend and respects the budget gate. - Covers milestones v0.25.0–v0.28.0, released together.
What's Changed
- fix(verify): a configured command sh cannot find is skipped, not sent back to the agent (#433) by @hectorcanaimero in #436
- feat(doctor): orch doctor --smoke — a real throwaway task per installed CLI, checked end to end (#437) by @hectorcanaimero in #447
- fix(mcp): orch_report_finding comments on a likely duplicate instead of filing it again (#441) by @hectorcanaimero in #446
- fix(doctor,run): say before the run when a configured command is not on PATH (#440) by @hectorcanaimero in #443
- feat(engine,router): fail over to another provider when one runs out of quota (#439) by @hectorcanaimero in #444
- feat(engine): a PR that conflicts with its base gets a conflict retry instead of blocking (#438) by @hectorcanaimero in #445
- fix(providers,engine): gemini runs in a task's worktree — orch tells it to trust the workspace by @hectorcanaimero in #449
- test(doctor): cover dispatch.worktree_setup and the all-resolved check in config.commands by @hectorcanaimero in #450
- feat(knowledge,state,cli): project lessons in .orch/knowledge/, an FTS5 index and orch knowledge (#451, 1/3) by @hectorcanaimero in #465
- feat(doctor,update,router): say when an agent CLI is behind its latest release, with the command to update it by @hectorcanaimero in #458
- feat(router,estimate,dashboard): orch router suggest — which route works for which task kind (#457) by @hectorcanaimero in #459
- feat(receipt,report): a run's summary in plain words, with what to do next (#456) by @hectorcanaimero in #460
- feat(prompt,mcp,engine): project lessons reach later tasks' prompts, and orch drafts them (#451, parts 2–3) by @hectorcanaimero in #468
- feat(dashboard,web,cli): review a task's changes in the dashboard — diff, accept, send back (#454) by @hectorcanaimero in #462
- feat(vcs,engine): vcs.provider local — finished tasks merge into the base here, no remote or gh (#455) by @hectorcanaimero in #464
- feat(verify,dashboard): record verify passes and structured findings (#463) by @hectorcanaimero in #473
- feat(project,dashboard): Accept lands a task locally with vcs.provider: local by @hectorcanaimero in #474
- feat(report,engine): orch report summary --ai — a one-shot dispatch with recorded spend explains the run by @hectorcanaimero in #471
- feat(knowledge,cli): orch knowledge curate — one task merges, fixes and prunes the lessons, as a PR (#452) by @hectorcanaimero in #472
- feat(dashboard,web,knowledge): a Knowledge page — search, edit and see how each lesson did (#453) by @hectorcanaimero in #476
- feat(engine): draft verify lessons from the review's blocking findings, their files as the area (#475) by @hectorcanaimero in #477
- feat(verify,engine): the local verify's review records its spend and respects the budget gate (#470) by @hectorcanaimero in #478
- feat(dashboard,web,knowledge): Curate now runs orch knowledge curate, estimate first by @hectorcanaimero in #479
- test(cli): skip report.txtar's publish lines without the stakeholder bundle by @hectorcanaimero in #480
Full Changelog: v0.24.0...v0.28.0
v0.24.0
- New provider: muse (Muse Code): route tasks to
muse/wonder(muse-wonder-1.0, standard tier). orch reads its verdict, tokens and quota windows (session and seven-day), and shows them in the dashboard's Tools, Usage and Quota pages. - Routes from the models your CLIs really have:
orch initandorch startask opencode, agy and codex which models they list and drop packaged routes they do not have, saying what is left unrouted. claude, gemini and muse keep the packaged routes. - Permissions granted by default:
initandstartadd orch's scoped done/block rules to each CLI the project routes to (--no-permissionsto skip).orch runwarns before the first dispatch when a CLI still lacks them. orch doctoris a readiness report: five sections (config, backends, tasks, permissions, environment) and a verdict, either "Ready toorch run." or the first blocker. New checks includetasks.parse,tasks.valid,tasks.readyandvcs.base_branch.--jsonaddssectionandverdict.- Planning by vertical slices:
orch-archandorch-specnow plan each phase as one PRD milestone that starts with a walking-skeleton task, after which the layers run in parallel on disjoint files. Runorch install-skillsafter upgrading to refresh the installed skills. - Dashboard: System › Skills has a "How it works" tab from idea to dispatched tasks, and task descriptions render as markdown with highlighted code.
What's Changed
- feat(providers): add muse (Muse Code) as a dispatch provider (#395) by @hectorcanaimero in #425
- feat(web): a "How it works" skills tab, and task descriptions as markdown with highlighted code (#427, #428) by @hectorcanaimero in #429
- feat(init): discover each installed CLI's models when building model_router.yaml (#397) by @hectorcanaimero in #430
- feat(init,start,doctor): grant orch's basic permissions by default and report readiness (#400, #392) by @hectorcanaimero in #431
- feat(skills): plan each phase as a vertical slice that starts with a walking skeleton by @hectorcanaimero in #432
Full Changelog: v0.23.0...v0.24.0
v0.23.0
- The dashboard is a backoffice now: a Linear-style console with a collapsible sidebar (
[), Inter, and a bottom bar plus "More" on phones. Its places are Now, Work (list, kanban, graph, phases, pace), Usage (usage and quota), Delivery, and System (providers, tools, skills, logs, settings). - Share from the dashboard: the Share button opens a Cloudflare quick tunnel or Tailscale (
serveon the tailnet,funnelin public). It shows the connected repo and branch and gives a client link. The client view lives in the same SPA, read-only. - Install guidance in the UI: System › Tools lists cloudflared, tailscale, playwright and the provider CLIs, says which are missing and how to install each one. The sidebar counts the missing ones.
- Usage and quota: usage by period, model, provider and source. Quota per provider shows the windows Claude reports (5-hour and weekly) or orch's own budget window, plus the routing table.
- Every switch is a command:
orch provider disable|enable|list(while a provider is off,orch runleaves its tasks waiting),orch budget set(editsbudgets.yamland keeps its comments) andorch config set|unset(validates before it writes; Settings never shows secrets). The dashboard calls the same functions. - Task page: editable properties in a foldable panel, "attempt N of M", an activity timeline from the task's events, and "+ Task" in the list and the kanban.
What's Changed
- feat(web): the dashboard becomes a Linear-style backoffice by @hectorcanaimero in #424
Full Changelog: v0.22.0...v0.23.0
v0.22.0
- Edit tasks without touching tasks.json by hand:
orch task add,orch task editandorch task set --modelchange a task's definition through one editor that locks, validates the DAG (duplicate id, missing dependency, cycle, model with no route) and writes atomically (#390). The dashboard writes through the same editor:POST /api/tasks,PATCH /api/task/{id}, andPOST /api/task/{id}/statusfor the board's moves, which stops a running task instead of changing its status behind the run's back. orch runpicks up tasks.json changes while it runs: a new or edited task that has not started joins the running run.- codex service tier per route:
service_tier: defaultinmodel_router.yamlkeeps a global Fast mode from burning your plan on every dispatch. A tier the model does not offer no longer fails and retries a dispatch that had answered (#416). - Where the tokens went:
orch report usage(andGET /api/usage) splits use into input, cached input, output and reasoning, per model, per task and per attempt, with what retries used. opencode's reasoning tokens now count as output and reach the budget. orch's budget window is its own guardrail, not your provider plan's quota (#417).
What's Changed
- feat(cli,project,state): edit task definitions through one path — task set --model, task add, task edit (#390) by @hectorcanaimero in #419
- feat(engine,run): orch run takes tasks.json again when it changes by @hectorcanaimero in #420
- fix(codex): a route can set codex's service tier, and a tier the model lacks no longer fails the dispatch (#416) by @hectorcanaimero in #422
- feat(dashboard,project): the operator adds, edits and moves tasks from the dashboard by @hectorcanaimero in #421
- feat(usage): reasoning tokens, attempts, and a usage breakdown by kind, model, task and attempt (#417) by @hectorcanaimero in #423
Full Changelog: v0.21.0...v0.22.0
v0.21.0
- codex works in worktrees: its agents can report their task done or blocked again. The sandbox now grants the directory holding
orch.db, where it used to answer "readonly database" (#387). A route'seffortreaches codex too (#388), and cached input counts in the budget like other providers' (#389). - Committed work is never thrown away: a retry keeps an earlier attempt's unpushed commits under
orch/<id>-salvage-…instead of deleting the branch, andorch task salvage --id X --accept <branch>takes them as the task's result without running the agent again (#391). - A retry whose branch already has an open PR reuses that PR instead of blocking with "no PR was opened" (#386).
- The task page: details and activity split 70/30 with a resizable handle, and comments read as a thread instead of raw JSON (#404, #405).
report_findingsis on again in new projects (#399).
What's Changed
- fix(providers,engine): a codex agent can write the project's database (#387) by @hectorcanaimero in #409
- fix(vcs): a retry whose branch already has an open PR reuses it (#386) by @hectorcanaimero in #410
- fix(codex): a route's effort reaches codex, and each dispatch records it (#388) by @hectorcanaimero in #411
- fix(codex): count cached input, so the budget weighs it like other providers (#389) by @hectorcanaimero in #412
- fix(init,start): report_findings is on in a new project again (#399) by @hectorcanaimero in #413
- fix(web): the task page shows comments as a thread, not raw JSON (#405) by @hectorcanaimero in #414
- fix(worktree,cli,doctor): an earlier attempt's unpushed work is kept and can be accepted (#391) by @hectorcanaimero in #415
- feat(web): the task page splits details and activity 70/30, resizable (#404) by @hectorcanaimero in #418
Full Changelog: v0.20.0...v0.21.0
v0.20.0
- Local verify before the push (
verify:, on in new projects): each task's work runs the repository's checks and a read-only review by another provider in its worktree; what fails goes back to the agent, and only passing work is pushed.orch ci setupstops offering the GitHub review job. - Test-first agents (
dispatch.tdd, skillorch-tdd): one failing test per acceptance criterion, then the code; the verify sends back a change with no test. - E2E against the task's own app:
verify.appbrings it up on a port fromORCH_TASK_SLOT,verify.e2eruns Playwright against it, and Delivery → Tests shows every run with the failing step, screenshot, video and trace. Theorch-e2eskill has an agent explore the app and write the specs. - A CI retry now keeps its earlier work and is told to read the failing logs (it used to start over, blind).
What's Changed
- feat(mcp): orch_run_status — the latest run and what it has in flight by @hectorcanaimero in #393
- fix(engine,prompt): a CI retry keeps its work and reads the failing logs by @hectorcanaimero in #394
- feat(engine,verify): local verify before the push by @hectorcanaimero in #398
- feat(skills,prompt,verify): test-first work with dispatch.tdd by @hectorcanaimero in #401
- feat(verify): bring the task's app up and run E2E against it by @hectorcanaimero in #402
- feat(verify): read Playwright's results and keep each attempt's evidence by @hectorcanaimero in #403
- feat(dashboard): Delivery → Tests, every E2E run and what a failing test left by @hectorcanaimero in #406
- feat(skills): orch-e2e, and an E2E task closing each phase with screens by @hectorcanaimero in #407
- feat(init,ci): the local verify is on in a new project, and replaces the CI review by @hectorcanaimero in #408
Full Changelog: v0.19.0...v0.20.0
v0.19.0
orch start "what you want to build": one command from an idea to agents working — it sets up the project with the AI CLIs you have, plans it with claude (/orch-plan), checks every task routes to an installed CLI, shows the estimate and runs the first two tasks with the dashboard open (#381)orch initasks three questions and Enter works through all of them: the project lands in the current directory, default models come from the CLIs on PATH, a blank project gets a sample task, and a repo onmaster, with no commits or with no remote no longer blocks the first task (#380)- gemini and agy tasks get their prompt (every one was dispatched with an empty one), agy 1.4 works without the retired
executoragent and with its current models, andorch agy-permissionslets agy agents report a task done (#384, #385) - A task opens as its own page,
/work/tasks/<id>, with the live activity feed as the main area (#375) orch doctorshows how far a project got: init → first dispatch → first finished task (#379)
What's Changed
- feat(web): a task opens as its own page, with the activity feed as the main area by @hectorcanaimero in #375
- feat(telemetry,doctor): measure how many installs reach a first finished task by @hectorcanaimero in #379
- feat(cli,scaffold,router): orch start — from one sentence to agents working by @hectorcanaimero in #381
- fix(init,run,doctor): Enter through the wizard gives a project that runs by @hectorcanaimero in #380
- fix(engine,providers): gemini and agy get the prompt, and agy runs without an agent it no longer has by @hectorcanaimero in #384
- fix(providers,cli,doctor): agy agents can report a task done — orch agy-permissions by @hectorcanaimero in #385
Full Changelog: v0.18.1...v0.19.0
v0.18.1
What's Changed
- fix(estimate): empty run set encodes as [] so the dashboard's Now page renders by @hectorcanaimero in #373
Full Changelog: v0.18.0...v0.18.1