Coming Soon — Join the Waitlist

Your OpenAPI spec,
always in sync with reality

ApiNotes Sentinel captures real HTTP traffic from your test suite and automatically patches your OpenAPI spec to match. No more specs that lie. No more drift. No more manual diffs.

Free open-source CLI · Optional cloud platform for teams · Works with GitHub & GitLab CI

No spam. Unsubscribe any time.

Free CLI foreverOpenAPI 3.0 & 3.1Works offlinenpm install

API specs drift from the real API. Always.

😩

Consumers get surprised

A field your spec promised no longer exists. Integrations break in production.

⏱️

Manual sync is expensive

Developers spend hours cross-referencing logs, code and spec files by hand.

🔥

Breaking changes slip through

No one catches that a required field was added or a response schema changed.

How ApiNotes Sentinel works

Run your existing test suite. The CLI does the rest — no code changes required.

Step 1

Run your test suite

Point Sentinel at your existing tests. It starts a local proxy, injects the URL into your test runner, and records every request and response.

Step 2

Diff against your spec

Captured traffic is compared against your OpenAPI file. Missing fields, undocumented status codes, nullable mismatches — all identified automatically.

Step 3

Patches written to disk

Sentinel generates JSON Patch operations and writes them directly to your YAML or JSON spec file — preserving comments, formatting, and $ref structure.

The core loop

Run testsProxy captures trafficCompare vs OpenAPI specGenerate patchesWrite back to spec file

Everything your team needs

From a solo developer patching specs locally to an enterprise team with governance, rulesets and consumer notifications.

Traffic capture proxy

Free

A lightweight local HTTP/HTTPS proxy intercepts test traffic. No code changes needed — just set an env var and run your tests.

Smart schema patching

Free

Three-phase engine handles additional properties, nullable values, type widening, enum extensions and $ref deduplication — keeping your spec DRY.

Coverage reporting

Free

See exactly which endpoints and status codes your tests exercise. Spot gaps before they become production incidents.

Visual diff viewer

Cloud

Side-by-side colour-coded diffs between any two spec snapshots. Breaking changes highlighted in red with a badge.

PR comment bot

Cloud

Every PR automatically gets a structured summary — breaking changes, new endpoints, coverage, and a link to the full diff. Works with GitHub and GitLab.

Consumer notifications

Team

When a breaking change lands, the consumers who depend on that endpoint are notified automatically — email, Slack, or custom webhook.

Governance rulesets

Team

Define naming conventions, require examples, enforce breaking change policies. Built-in rulesets and custom JS bundles.

Auto-generated changelogs

Team

Every run produces a timestamped changelog entry — author, PR link, and a human-readable list of every API change. Shareable via public URL.

HAR & Postman import

Free

Don't want to run tests through a proxy? Feed in a HAR file or Postman collection instead — the same diff and patch engine runs on the recorded traffic.

Install and run in minutes

The CLI is free, open source, and works completely offline.

Install

$ npm install -g @apinotes/sentinel

1. Initialise — create a config file

$ sentinel init openapi.yaml

 Created sentinel.yml
  Edit it to tell Sentinel how to start your server and run your tests.

sentinel.yml

capture:
  openapi.yaml:
    server:
      url: http://localhost:3000
      command: node server.js
      ready_endpoint: /health
    requests:
      run:
        command: npm test
        proxy_variable: SENTINEL_PROXY

ruleset:
  - breaking-changes
  - naming:
      properties: camelCase
      pathComponents: param-case

2. Capture traffic and patch your spec

$ sentinel capture openapi.yaml --update documented

 Starting server... ready
 Running tests via proxy (npm test)
 45 requests captured

Routing interactions
  ✓  43 matched documented paths
  ⚠   2 unmatched (undocumented endpoints)

Generating patches
  ✓  POST /users          Added 'role' to 201 response body
  ✓  GET  /users/{id}     Marked 'nickname' as nullable
  ✓  POST /orders         Added 422 response schema
  ⚠  POST /auth/login     Required field 'device_id' never observed

Coverage
  ✓  GET  /users          Request Body, 200 response
  ✓  POST /users          201 response
  ×  GET  /users/{id}     (no traffic)

  78% coverage of documented operations

✔ openapi.yaml patched — 3 changes written
✖ 1 unpatchable diff — see above

Exit code 1

3. Run in CI — diff + lint all specs

$ sentinel run

Scanning for OpenAPI specs...
  Found: openapi.yaml, admin.yaml

Diffing against base branch
  openapi.yaml  ❌ 1 breaking change  ✅ 2 new endpoints
  admin.yaml    ✅ No breaking changes

Linting rulesets
  openapi.yaml  ⚠ 2 naming violations
  admin.yaml    ✅ All rules passed

→ PR comment posted to GitHub PR #142
.github/workflows/sentinel.ymlGitHub Actions
name: ApiNotes Sentinel Check
on: [pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Sentinel Check
        run: npx @apinotes/sentinel run
        env:
          SENTINEL_TOKEN: ${{ secrets.SENTINEL_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Automatic PR comments for your team

Every pull request gets a structured summary — breaking changes flagged in red, no noise.

SN
apinotes-sentinel-bot commented on this pull request

🛡️ API Changes Detected

APIBreakingNew endpointsUpdated schemasCoverage
openapi.yaml❌ 1 breaking✅ 2 added✅ 3 updated84%
admin.yaml✅ None✅ None✅ 1 updated91%

View full diff on ApiNotes Sentinel →

Built for every role on your team

From solo devs to enterprise engineering orgs.

👩‍💻
Free

Solo Developer

Run the CLI locally. Get spec patches written directly to your file. No account, no internet connection required.

🧑‍🔧
Paid — Individual

Team Developer

Push results to the cloud from CI. See visual diffs on pull requests and share spec links with teammates.

🧑‍💼
Paid — Admin

API / Tech Lead

Manage governance rulesets for the org. Review API changelogs. Set breaking change policies. Get notified when consumers are affected.

📊
Paid — Viewer

Engineering Manager

View API health scorecards and coverage dashboards. Track breaking change frequency and documentation completeness over time.

Simple pricing

The CLI is free forever. Pay only for the cloud platform.

Free

$0

CLI · Local use · Forever free

  • CLI — full offline usage
  • Up to 3 registered APIs
  • Up to 3 team seats
  • 30 days run history
  • Visual diffs
  • PR comments (GitHub & GitLab)
  • Changelogs (last 20 entries)
  • Consumer notifications
  • Custom rulesets
  • Governance scorecards
Most popular

Team

$29/mo per org

For teams shipping APIs together

  • Everything in Free
  • Unlimited APIs
  • Up to 20 seats
  • 1 year run history
  • 5 GB spec snapshot storage
  • Unlimited changelogs
  • Public changelogs
  • Consumer email notifications
  • Up to 3 custom rulesets
  • Governance scorecards

Enterprise

Custom

For large orgs with compliance needs

  • Everything in Team
  • Unlimited seats
  • Unlimited history & storage
  • Unlimited custom rulesets
  • Slack & webhook notifications
  • SSO / SAML
  • Audit logs
  • Self-hosted option
  • 99.95% SLA + dedicated support

Frequently asked questions

Does the CLI send my code or spec to a server?
No. When you run without SENTINEL_TOKEN, the CLI works entirely offline — no requests are made to any external server. Your spec files, source code, and traffic are never transmitted.
How is this different from Swagger Editor or Spectral?
Swagger Editor validates your spec's structure. Spectral enforces style rules. ApiNotes Sentinel does something different: it captures your real HTTP traffic, compares it against your spec, and automatically patches the spec to match observed behaviour. It's a live sync tool, not a linter.
What OpenAPI versions are supported?
OpenAPI 3.0 and OpenAPI 3.1. Swagger 2.x is not supported in v1.
Can I use it with any test framework?
Yes. The CLI injects a proxy URL into your test command via an environment variable. Any HTTP client in any test framework — Jest, Vitest, pytest, RSpec, etc. — will automatically route through the proxy. No code changes required.
What if my API has parameterised paths not yet in the spec?
The path inference engine groups unmatched traffic, detects patterns like UUID or numeric IDs, and proposes /users/{userId} style patterns. In interactive mode it asks you to confirm; in automatic mode it accepts the best proposal.
How does the PR comment work?
Set SENTINEL_TOKEN and GITHUB_TOKEN in your CI environment and run sentinel run. Sentinel scans for OpenAPI specs, diffs against the base branch, runs rulesets, and posts (or updates) a single PR comment with the results. It never spams multiple comments.
When is ApiNotes Sentinel launching?
We're actively building. Leave your email above and you'll be notified the moment the CLI and cloud platform are available — plus an early-adopter discount.

Ready to keep your specs honest?

ApiNotes Sentinel is coming soon. Leave your email and be the first to know — plus an early-adopter discount.

No spam. Unsubscribe any time.