OrcAI.Tool
0.10.5
dotnet tool install --global OrcAI.Tool --version 0.10.5
dotnet new tool-manifest
dotnet tool install --local OrcAI.Tool --version 0.10.5
#tool dotnet:?package=OrcAI.Tool&version=0.10.5
nuke :add-package OrcAI.Tool --version 0.10.5
OrcAI CLI
A CLI tool for orchestrating bulk GitHub work across many repositories. From a single YAML config, OrcAI creates a GitHub Project, opens templated issues in every target repo, and hands them off to whoever (or whatever) does the work — a human teammate, a bot, or an AI agent like GitHub Copilot or OpenCode.
Full docs, features, and examples: github.com/dburriss/orca
Prerequisites
ghCLI installed and onPATHgh auth login(or a PAT/GitHub App — see the CLI reference)
Quick start
# 1. Scaffold a job config + issue template
orcai generate --name "Add AGENTS.md" --org my-github-org --repo repo-one --repo repo-two
# 2. Edit add-agents-md.yml (repos, labels, action) and add-agents-md.md (the task)
# 3. Run it
orcai run add-agents-md.yml
run finds or creates a GitHub Project, creates issues from your template, adds them to the project, and executes the configured action — assign @copilot/anyone, post a comment, or run a command per repo and open a PR with the result (cmd-to-github). A <basename>.lock.json file is written alongside the YAML so re-runs are fast and idempotent.
Commands
| Command | Description |
|---|---|
orcai generate |
Scaffold a YAML job config and stub issue template |
orcai run |
Execute a bulk job (globs, concurrency control, JSON output) |
orcai nudge |
Re-trigger stale issues with no linked PR |
orcai notify |
Post a templated comment to issues and/or PRs |
orcai validate |
Validate YAML config(s) and repo access |
orcai info |
Display the current state of a job |
orcai cleanup |
Tear down everything created by run |
orcai graph |
Render the dependsOn dependency graph |
orcai migrate |
Upgrade a job YAML/lock file to the current schema |
orcai auth pat/app/create-app/switch |
Manage credentials and profiles |
For full flag details, the YAML schema, config file options, and runnable examples, see the CLI reference, config reference, and examples.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.10.5 | 68 | 9/7/2026 |
| 0.10.4 | 110 | 9/3/2026 |
| 0.10.3 | 91 | 9/2/2026 |
| 0.10.2 | 79 | 9/2/2026 |
| 0.10.1 | 93 | 9/1/2026 |
| 0.10.0 | 100 | 8/30/2026 |
| 0.9.0 | 97 | 8/30/2026 |
| 0.8.1 | 296 | 6/16/2026 |
| 0.8.0 | 169 | 6/9/2026 |
| 0.7.5-beta6 | 120 | 6/9/2026 |
| 0.7.4-beta5 | 116 | 5/21/2026 |
| 0.7.3-beta4 | 125 | 5/19/2026 |
| 0.7.2-beta3 | 126 | 5/18/2026 |
| 0.7.1-beta2 | 134 | 5/18/2026 |
| 0.7.0-beta1 | 126 | 5/13/2026 |
| 0.6.0 | 167 | 5/7/2026 |
| 0.5.1 | 302 | 3/17/2026 |
| 0.5.0 | 174 | 3/16/2026 |
| 0.4.4 | 174 | 3/16/2026 |
| 0.4.3 | 165 | 3/16/2026 |
`orcai nudge`'s live GitHub fallback check (`FindPrsForIssue`) always returned no PRs found, for every issue, because its GraphQL query referenced `closingPullRequests`, a field that does not exist on GitHub's `Issue` type. The request errored and the error was silently swallowed into `[]`. Nudge could therefore reassign `@copilot` on issues that were already closed by a merged, correctly-linked PR, causing Copilot's cloud agent to open a duplicate PR for already-completed work. Fixed by querying the real field, `closedByPullRequestsReferences` (with `includeClosedPrs:true` to also surface merged/closed PRs).
`orcai nudge` no longer falls back to assign-copilot behavior (unassign + reassign `@copilot`) for jobs whose `action.type` has no assignee concept, most notably `cmd-to-github` (where orcai itself opens the PR). Previously it silently defaulted to `@copilot` and reassigned it on already-closed issues; it now reports that these jobs must be re-triggered via `orcai run` instead.