Open Agent Toolkit is an open-source toolkit for portable, provider-agnostic agent tooling and workflows.
It helps you:
- define canonical agent assets once
- sync those assets across providers
- keep nested project
AGENTS.mdandCLAUDE.mdfiles aligned with pointer, symlink, or hard-copy strategies - use provider-agnostic CLI utilities and skills
- optionally run tracked, human-in-the-loop project workflows on top
flowchart TD
BASE["Provider Sync\ncanonical assets, drift, provider views"] --> TOOLS["CLI Utilities and Skills\nbootstrap, packs, docs tooling, diagnostics"]
TOOLS --> FLOW["Optional Workflows\ntracked projects, reviews, PR flow"]
You can adopt any layer independently.
pnpm install
pnpm run cli -- help
pnpm run cli -- init --scope project
pnpm run cli -- status --scope allUseful next commands:
pnpm run cli -- sync --scope allpnpm run cli -- instructions validate --strategy symlinkpnpm run cli -- tools installpnpm run cli -- docs init --app-name my-docspnpm run cli -- config describepnpm run cli -- config dump --jsonpnpm run cli -- project status --jsonpnpm run cli -- project list --jsonpnpm run cli -- project validate-plan --project-path <path>
For local repo development:
pnpm buildpnpm build:docspnpm lintpnpm type-checkpnpm test
pnpm worktree:validate runs package builds, lint, type checks, formatting and
all workspace tests, and requires a clean tree before and after. It does not
build the docs site. Run pnpm build:docs separately for docs verification; CI
also runs release and skill-version checks beyond the local worktree gate.
The docs test task depends on upstream package builds without scheduling its
own production build, whose prebuild regenerates assets used by CLI tests.
CI and the path-scoped Release Dry Run validate ready PRs targeting main,
including the ready_for_review transition. Draft PRs skip those jobs. Main
pushes still run CI, and Release Dry Run can still be started manually. Run the
full local checks before handoff. New CI verification cancels earlier CI runs for
the same ready PR. Draft events and main pushes use isolated groups; existing
release workflow concurrency is unchanged.
Full documentation lives on the docs site:
- Docs Home
- Start Here
- Provider Sync
- Instruction Sync
- Agentic Workflows
- Docs Tooling
- CLI Utilities
- Reference
- Contributing
packages/cli- OAT CLI for provider sync, docs tooling, project utilities, and diagnosticspackages/control-plane- read-only project-state library used by the CLI for structured OAT project status, listing, and recommendation datapackages/docs-config- config helpers for OAT-powered Fumadocs appspackages/docs-theme- shared React components for OAT-powered Fumadocs appspackages/docs-transforms- remark plugins and transform bundle for OAT-powered Fumadocs appsapps/oat-docs- the OAT docs site.agents/skills- bundled OAT skills.oat- OAT templates, project artifacts, repo reference, and sync state
@open-agent-toolkit/cli@open-agent-toolkit/control-plane@open-agent-toolkit/docs-config@open-agent-toolkit/docs-theme@open-agent-toolkit/docs-transforms
The Release workflow validates the exact selected tag before publication: it must
resolve to the checked-out commit and be reachable from origin/main. Checks,
types, tests and docs build run on the .nvmrc baseline with forced Turbo execution.
Publication checks out the validated commit SHA, rather than resolving a mutable
tag again, and retains its independent build and package/archive validation. PR success does not stand
in for this tagged-candidate gate.
pnpm test runs every workspace suite. Its private root command defaults
VITEST_MAX_WORKERS to 2, and the qualified CLI test task alone declares that
environment input. Other packages retain their existing worker selection. This
bounds concurrent subprocess and filesystem work on many-core developer hosts;
it preserves every test, assertion and timeout. Set the variable explicitly when
measuring another CLI budget. Turbo hashes the selected value for CLI test reuse.
The budget reduces competing subprocess and filesystem work on many-core hosts. It does not promise a hosted speedup; measure the complete workload when changing it, and preserve the suite's existing timeout and failure protections.