OrcAI.Tool
0.8.1
dotnet tool install --global OrcAI.Tool --version 0.8.1
dotnet new tool-manifest
dotnet tool install --local OrcAI.Tool --version 0.8.1
#tool dotnet:?package=OrcAI.Tool&version=0.8.1
nuke :add-package OrcAI.Tool --version 0.8.1
OrcAI CLI
<p align="center"> <img src="assets/orcai_banner.png" alt="OrcAI" /> </p>
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.
Features
- Declarative YAML jobs — one config defines the project, target repos, issue template, assignment behaviour, nudge policy, and notification template.
- Bulk, idempotent issue creation across any number of repos — a lock file makes re-runs free; glob and brace expansion (
"jobs/**/*.{yml,yaml}") for fanning out. - GitHub Project auto-management — finds or creates the board and links every issue to it.
- Assign to anyone —
assign.toaccepts any GitHub user, bot, or GitHub App handle. Default is@copilot, but humans, OpenCode, and custom App bots all work. - Comment-based triggers —
assign.via: commentposts a slash command (e.g./opencode) instead of assigning, for agents that listen for mentions.comment-and-assigndoes both. - Tag anyone in templated comments —
assign.comment,nudge.comment, andnotifyall support{assignee},{job.owner}, and{repo.codeowners}tokens, resolved from YAML and CODEOWNERS files at runtime. orcai nudge— re-trigger stale issues (no linked PR yet) by reassignment, comment, or both.orcai notify— broadcast a templated comment to issues and/or PRs from the lock file; filter by state, dry-run, and inject extra--data key=valuetemplate variables.- Auto issue-body updates — when the Markdown template changes, existing issues' bodies are updated without re-running the structural work (hash-based detection).
- Robust at scale — built-in rate limiting (60 writes/min, configurable) with exponential-backoff retry; closed-issue policy (
create/reopen/skip/fail); concurrency control;--continue-on-error; JSON output for CI. - Multiple auth methods — ambient
ghCLI, PAT, or GitHub App (manifest flow supported viaorcai auth create-app). A PAT is only required when the assignee is@copilot.
Installation
OrcAI is distributed as a .NET global tool. Requires .NET 10 or later.
dotnet tool install --global OrcAI.Tool
Then run it as orcai.
Prerequisites
ghCLI: Install from cli.github.com — must be installed and onPATH- Authentication: The easiest option is to ensure
ghis authenticated (gh auth login). OrcAI will use it automatically. For other methods see docs/cli-reference.md.
Quick start
1. Authenticate
The simplest option — if you already use the gh CLI, just make sure it's authenticated:
gh auth login
That's it. OrcAI will pick up the token automatically.
For PAT, GitHub App, or environment variable auth see docs/cli-reference.md.
2. Run a job
# Single config file
orcai run jobs/my-upgrade.yml
# All configs in a directory (quote the glob to prevent shell expansion)
orcai run "jobs/*.yml" --continue-on-error --json
# Limit concurrency to avoid rate limits
orcai run "jobs/*.yml" --max-concurrency 2
run finds or creates a GitHub Project, creates issues from your template, adds them to the project, and triggers the configured assignee — whether that's @copilot, another bot, an AI agent like OpenCode, or a human teammate. Triggering can be via assignment, a templated comment (e.g. a slash command), or both. On success a lock file (<basename>.lock.json) is written alongside the YAML for fast idempotent re-runs.
Commands
| Command | Description |
|---|---|
orcai auth pat/app/create-app/switch |
Store credentials or switch profiles for all other commands |
orcai generate |
Scaffold a YAML job config and stub issue template |
orcai run |
Execute a bulk upgrade job (supports globs, concurrency control, JSON output) |
orcai nudge |
Re-trigger stale issues with no linked PR (reassign, comment, or both) |
orcai notify |
Post a templated comment to issues and/or PRs from the lock file |
orcai validate |
Validate YAML config(s) and verify all repos are accessible |
orcai info |
Display the current state of a job |
orcai cleanup |
Tear down everything created by run |
For full flag details, output formats, lock file schema, and advanced usage see docs/cli-reference.md. For config file settings see docs/config.md.
The original Nushell scripts (orca.nu, cleanup.nu) are documented in docs/nushell-scripts.md.
| 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.8.1 | 125 | 6/16/2026 |
| 0.8.0 | 115 | 6/9/2026 |
| 0.7.5-beta6 | 93 | 6/9/2026 |
| 0.7.4-beta5 | 97 | 5/21/2026 |
| 0.7.3-beta4 | 109 | 5/19/2026 |
| 0.7.2-beta3 | 100 | 5/18/2026 |
| 0.7.1-beta2 | 113 | 5/18/2026 |
| 0.7.0-beta1 | 97 | 5/13/2026 |
| 0.6.0 | 116 | 5/7/2026 |
| 0.5.1 | 257 | 3/17/2026 |
| 0.5.0 | 131 | 3/16/2026 |
| 0.4.4 | 131 | 3/16/2026 |
| 0.4.3 | 124 | 3/16/2026 |
| 0.4.2 | 130 | 3/16/2026 |
| 0.4.1 | 123 | 3/15/2026 |
| 0.4.0 | 120 | 3/13/2026 |
| 0.3.0 | 124 | 3/11/2026 |
`verbose` flag on `orcai verify` command — prints detailed per-repo validation results to stderr
`orcai verify` does a single call now to check repositories but will ignore those already in the lock file
performance improvements to `orcai verify` by using GraphQL to fetch multiple repositories in a single request instead of one request per repository
performance improvements to `orcai run` by using GraphQL to fetch multiple repositories in a single request instead of one request per repository