MIT Open source  ·  runs entirely in your browser

Open a spec. See everything.
Run anything.

OpenDoc UI turns any OpenAPI 3.0 / 3.1 / 3.2 or Swagger 2.0 document into a living workspace — navigable documentation, a genuine request runner (including OAS 3.2 QUERY), a unified schema viewer with field combinators, instant code generation, private notes and a grounded AI assistant. No backend. No account. No upload.

OAS 3.0 · 3.1 · 3.2 + Swagger 2.0 100% client-side Nothing leaves your machine Deploys as a static folder
omidgfx.github.io/opendoc-ui/demo/ Fullscreen

This is not a screenshot — it's the real app, live. Click around.

200 · OKresponse in 142 ms
Assistant answered2 sources cited
0specification dialects, from Swagger 2.0 to OpenAPI 3.2
0+hand-picked themes with light, dark and system modes
0servers required — the whole workspace is static files
0AI-gateway reference implementations, from Express to Axum
Capabilities

One document in.
A whole workstation out.

Open a specification once and every surface appears: read it, call it, generate against it, and keep notes beside it — without ever leaving the document.

Documentation browser

Tag-grouped endpoint trees, serialization-aware parameter tables, shared SchemaViewer on bodies and responses, and a scroll-aware response navigator — cycle-safe for recursive and polymorphic schemas.

Explore the docs surface

Built-in API Runner

Real requests from the browser — including OAS 3.2 QUERY — with bearer, API-key, basic auth, OAuth PKCE and cookies, recursive body forms, live final URL and bounded response inspection.

See the Runner

Code & type generation

fetch, axios and Angular snippets plus TypeScript models — generated from your schemas, secret-redacted, downloadable as a zip.

Global search that understands APIs

Ctrl/⌘ + K opens search as a shareable tab — results across paths, summaries, tags and schemas, with advanced method, access and tag filters.

Local notes & todos

Private Markdown notes pinned beside any endpoint, in fourteen theme-safe tones — exportable as JSON, never uploaded.

Everything is a URL

Endpoints, open tabs, response codes, schema modals — the entire view state is encoded in the address bar. Copy it, share it, reopen it. It just works.

#/pets/get-pet-by-id?tab=runner&code=200

17 themes, 3 modes

Hand-picked palettes with per-spec memory — your payments API can stay serious while the side project glows.

Unified SchemaViewer for the hard cases

One surface for request bodies, responses and the schema modal — always-open meta stats, multi-format generated examples, and field-level oneOf / anyOf / allOf / not menus that reach nested properties. Recursive trees stay cycle-safe; modern 3.1/3.2 keywords and bare $ref combinators are handled explicitly.

Open the SchemaViewer story
Under the hood of every endpoint

Built for the hard parts of
real OpenAPI

Branch-heavy schemas, modern methods, honest serialization and a settings surface that stays out of the way — the same workstation, pushed further.

Shared SchemaViewer

Request bodies, responses and the schema modal share one generated-example surface, meta header and property table — with named OpenAPI examples on their own tab.

request · response · modal

Field combinators

Nested oneOf, anyOf, allOf and not menus in code and tables — exclusive pick, multi-select merge, composition focus with dimming, inspection-only negation.

oneOf · anyOf · allOf · not

OAS 3.2 QUERY

RFC 10008 QUERY is first-class: discovered, documented with bodies, and runnable in the Runner without relaxing GET/HEAD body warnings.

RFC 10008

Settings & scopes

A Settings tab with Appearance gallery, navigation and AI sections, plus per-schema or global example/schema representation defaults stored in IndexedDB.

#/…/settings

Serialization awareness

style/explode descriptors, serializer playground → Runner, live final URL, location-split parameter matrices, and card layouts when panes run out of room.

style · explode · final URL

YAML auto-repair Experimental

Load-time rewrite for flow-style combinators missing sequence brackets — enough to open many generator mistakes without touching files on disk.

load-time · non-destructive

Full feature tour · Changelog

The assistant

Ask your API a question.
Get a cited answer.

The OpenDoc UI assistant answers from retrieved, redacted endpoint and schema context — grounded in your open specification, with source citations you can click straight into the docs. It can even prepare a request in the Runner for you.

  • Direct provider mode — OpenAI, Anthropic, Ollama, OpenRouter or any compatible endpoint, from the browser.
  • Hardened gateway mode — keys stay server-side, with origin allowlists, rate limits and timeouts. Nine framework examples included.
  • Skill packs & saved chats — Swagger/REST skills, conversations saved per specification, secrets redacted before anything is sent.
How it feels

From file to fluent in three moves

Point it at a spec

Drop a local .json / .yaml file, paste a remote URL, or ship pre-configured specifications with your deployment. Parsing, normalization and validation happen in the browser.

local · remote · configured

Explore & interrogate

Browse tag-grouped docs, search everything with ⌘K, pick field combinators in SchemaViewer, and ask the assistant questions with cited answers.

docs · search · SchemaViewer · AI

Run & ship

Execute authenticated requests in the Runner, generate client snippets and TypeScript models, keep notes beside endpoints, and share any view as a deep link.

runner · codegen · notes · links
Compatibility

Every generation of the format.
Measured, not approximated.

DialectParsingRenderingRunnerHighlights
openapi: 3.0.x Complete Complete Yesnullable semantics, callbacks, links, security
openapi: 3.1.x Complete Complete YesJSON Schema 2020-12 — const, prefixItems, if/then/else
openapi: 3.2.x Complete Complete Yeswebhooks, additionalOperations, first-class QUERY (RFC 10008)
swagger: "2.0" CompleteNormalized to 3.x YesformData, file uploads, collectionFormat, securityDefinitions

Multi-file reference graphs resolve in memory, with clear diagnostics for anything unresolved. Full compatibility report

  deploy — 80×14
$ npm ci && npm run build
✓ dist/ — one self-contained bundle, SPA fallback included

# …or the guided builder
$ npm run make

# …or Docker, health check and all
$ docker compose up --build --detach
✓ opendoc-ui ready on http://localhost:3000
Deployment

A folder is the
whole deployment

OpenDoc UI compiles to a single static directory. Copy dist/ to any host — or run the hardened Docker image — and the entire workspace works with no server process, no database, no runtime dependency. Air-gapped networks included.

GitHub PagesNetlifyVercelCloudflare PagesS3nginxApacheDocker
Straight answers

The questions everyone asks first

Does OpenDoc UI require a backend server?
No. Documentation, Runner, schema explorer, notes, theming and code generation all run entirely in the browser. The only optional server components — the AI gateway and the proxy agent — are strictly opt-in.
Are my specifications uploaded anywhere?
Never. Local files are parsed in the browser and stored only in your browser's local history. Nothing is uploaded and the original document is never modified. Remote URLs are fetched directly by your browser — no third party involved.
Does the Runner really send requests from my browser?
Yes — that's the point. Requests are composed from the specification and executed with the browser's fetch API against the server you select. Standard CORS rules apply, and the Runner Compatibility report tells you honestly what the browser can and cannot do for a given API.
Where do my AI provider keys go?
In direct mode, your browser talks to the provider you configure. In gateway mode, a hardened server gateway owns the credentials and enforces token auth, origin allowlists, rate limits and timeouts — the browser never sees the provider key.

All questions, answered

Free · Open source · MIT

Your API deserves a better representation.

Not a wall of YAML, not a stale export — a living workspace. Open the demo with the bundled showcase spec, or drop in one of your own. It never leaves your machine.