# OODLC and Oodle > OODLC is an open way to write down what a service promises the people outside it. Oodle, its CLI, runs every pull request against those promises and posts one comment saying what held, what changed and what broke. Oodle 0.8.0 is v0: the catalog format and the CLI can still change between minor versions, and the changelog says when they do. It runs Node.js services (Node 20.11 or later) built with Next.js, Express, Fastify, Koa, Hono or node:http, and simulates Postgres in process. It sends nothing anywhere: no account, no API key, no telemetry. Install and wire up a service, with the GitHub workflow: ```bash npm i -D @oodlc/oodle && npx oodle init --ci npx oodle doctor npx oodle check ``` Coding agents: `npx --no-install oodle` (never the unscoped name), add `--json` for exactly one JSON document, exit codes 0 ok, 1 blocking, 2 could not run. Agents may only propose outcomes (`status: proposed`); a human approves them. ## Docs - [Your first outcome in 5 minutes](https://oodlc.com/docs/first-outcome.md): Install, wrap the service you have, promote one proposal to a promise and put it in CI. - [Guide](https://oodlc.com/docs/guide.md): Adopting a service, Next.js, a real database, writing a catalog, CI, conditions, constraints and approvals. - [CLI reference](https://oodlc.com/docs/cli.md): Every command, its output and exit codes, the GitHub Action, watch mode and the environment. - [Oodle for coding agents](https://oodlc.com/docs/agents.md): The Claude Code plugin, MCP tools, proposals, mutation testing and the security pack. - [Changelog](https://oodlc.com/docs/changelog.md): What each release added, and every change to the catalog format while Oodle is v0. ## Schemas - [Catalog files: oodlc/*.yaml](https://oodlc.com/schema/v0/catalog.json): JSON Schema (draft-07) - [Project config: oodlc/config.yaml](https://oodlc.com/schema/v0/config.json): JSON Schema (draft-07) ## Optional - [Everything above in one file](https://oodlc.com/llms-full.txt) - [Decision records](https://github.com/oodlc/oodle/tree/main/docs/decisions): why each rule works the way it does - [Source](https://github.com/oodlc/oodle) - [npm package](https://www.npmjs.com/package/@oodlc/oodle)