Set up a checkout
Work from an isolated worktree so experiments and validation do not disturb another checkout. From an existing clone with an up-to-datemain:
OAC_TEST_DATABASE_URL privately to a dedicated PostgreSQL test database. Never point the test suite at an installation or product database. The test database rules list the required role permission.
For native package pin changes, follow the live acceptance rules.
Build and run components
From the repository root:${OAC_DEV_HOME:-$HOME/.oac}/build/daemon/oac-daemon.
Use the service guide to run the Core migrator and server with a separate development database. The configuration appendix owns standalone process settings. For a complete operator installation, use the installation guide; building Core alone is a separate contributor workflow.
For frontend development, run pnpm dev:web using the fixture or Core connection in the Web package guide.
Repository map
Choose an extension boundary
Use the protocol map to find the code and guide for a new Harness, Sandbox Provider, model provider, API operation or Runtime message. The guide owns registration, supported operations and the checks that qualify an implementation. For workspace capabilities such as Skills, Plugins, MCP and system packages, start with Environments.Validate a change
Run checks for the affected boundary while developing. The repository required checks define completion, includingmake check and any changed native component’s real acceptance.
Fixture browser acceptance uses loopback ports 18092 and 4174. Select unused ports with
AGENTS_FIXTURE_PORT and AGENTS_WEB_PORT when running parallel validation. Keep databases, ports and containers separate between validation workers. Compilation, fixture success and live model/provider acceptance establish different facts; report skipped or unavailable checks explicitly. Follow the independent blind review workflow after validation.
Change documentation
The repository-rootdocs.json configures the Mintlify site using the Almond theme, a dark graphite background, green accents and monospace headings. It references the existing Markdown sources; .mintignore excludes application code and styles from the site. Connect Mintlify to the repository root on the default branch. Use Node 22 LTS, install the CLI with npm install -g mint, and run mint dev from the repository root to preview the site. Before publishing, run mint validate and inspect its output for parsing errors as well as its exit status, then run mint broken-links.
Use index.md for published section indexes: Mintlify excludes README.md and CONTRIBUTING.md from pages. Keep relative Markdown links explicit (./page.md or ../page.md) so they work in the repository and distribution. Each published Markdown page needs a matching .md-to-page redirect in docs.json for website navigation. Links to repository-only guides and source files should point to GitHub. Write literal angle-bracket placeholders inside code spans, and use Markdown reference comments ([//]: # (comment)) for generated-region markers so the sources render in both GitHub and Mintlify. Change generated content through its generator.
Find the owning source in the documentation ownership map and follow the documentation rules. Readers use the authored Markdown in the repository. Generated OpenAPI schemas and the Harness catalog have their own generators; see Contract and schema rules.
The distribution has an explicit documentation list in scripts/core-distribution-manifest.py. When you move a bundled file or change a heading, update its inbound links and run the distribution documentation checks.