OrcAI.Tool 0.8.1

dotnet tool install --global OrcAI.Tool --version 0.8.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local OrcAI.Tool --version 0.8.1
                    
This package contains a .NET tool you can call from the shell/command line.
#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 anyoneassign.to accepts any GitHub user, bot, or GitHub App handle. Default is @copilot, but humans, OpenCode, and custom App bots all work.
  • Comment-based triggersassign.via: comment posts a slash command (e.g. /opencode) instead of assigning, for agents that listen for mentions. comment-and-assign does both.
  • Tag anyone in templated commentsassign.comment, nudge.comment, and notify all 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=value template 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 gh CLI, PAT, or GitHub App (manifest flow supported via orcai 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

  • gh CLI: Install from cli.github.com — must be installed and on PATH
  • Authentication: The easiest option is to ensure gh is 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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