Project Noodles is the umbrella for UWS and the tools built around it.
UWS — the Udon Workflow Specification — describes a workflow as an overlay on documents that already define the operations. OpenAPI, AsyncAPI, GraphQL, OpenRPC, Protocol Buffers, OData, AWS Smithy, Google Discovery, and browser profiles all describe what a service can do. UWS adds what those documents cannot express: operation binding, workflow structure, request values, outputs, triggers, and control flow. Because operations are referenced by ID rather than re-described, a UWS document stays small — it never duplicates request and response shapes, and never redeclares an endpoint.
The repositories here cover the path from a source document to a reviewed, executable workflow: authoring, evidence and review, packaging, reconciliation, and handoff to execution.
| Repository | Role |
|---|---|
| uws | The specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0. |
| openudon | Workflow authoring, review, packaging, and handoff to a trusted executor. |
| ramen | Stateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history. |
| browsertools | Turns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture. |
| browserdriver | The trusted Playwright process that executes browser profiles and browser authentication. |
| apitools | OpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories. |
| authoring | Shared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence. |
| evidence | Shared trust primitives — record shapes, digests, redaction — deliberately product-neutral. |
Source-document parsing lives in dependency-light libraries that stand alone: oas, asyncapi, graphqlschema, awssmithy, googlediscovery, arazzo, jsonschema, schema, and tfconfig.
A source document describes the operations. An authoring tool reads it and produces a UWS workflow. A runtime executes that workflow behind an explicit trust boundary.
source document authoring handoff
───────────────── ───────────────── ─────────────────
OpenAPI, AsyncAPI, ──► openudon ──► UWS ──► trusted executor
GraphQL, OData, ramen doc boundary
Smithy, Discovery, browsertools
browser profile + authoring, evidence
Two entry points, depending on what you are describing:
A workflow you want executed. OpenUdon interviews you against the source
document, records the decisions as evidence, and packages a reviewed workflow.
The package crosses a documented boundary to a runtime; the reference runtime is
udon, which is not yet public.
A desired state you want reconciled. Ramen holds the desired resources and their history in local SQLite, computes what must change, and emits a UWS plan for the same boundary. Terraform/OpenTofu and Ansible conversion are on-ramps into that model rather than alternative runtimes.
When a task is exposed only through a web UI and no API source document exists, Browsertools turns observed UI evidence into a reviewed browser profile that behaves like any other UWS source, and Browserdriver executes it.
- Understanding the format — read uws,
beginning with the human-readable specification in
versions/. - Building a workflow — start with openudon.
- Managing infrastructure state — start with ramen.
- Automating a site with no API — start with browsertools, then browserdriver.
The source document stays authoritative. A workflow references operations by ID. That keeps documents small, and it bounds what a workflow can invoke to what the contract actually declares.
Execution is deterministic and reviewable. Plans are inspected and approved before they run, and the same inputs produce the same plan.
Trust boundaries are explicit. Credentials, sessions, and browser processes live on the runtime side of a documented boundary. UWS documents carry no secrets, no login flows, and no credential resolution — the specification states this normatively, and each tool enforces it independently.
Evidence is recorded, not assumed. Authoring decisions carry their justification, so a reviewer can see why a workflow says what it says.
Udon and ramen are both noodles, so Noodles is the bowl they arrive in. The naming is the only part of this project that is not load-bearing.
Apache-2.0 across the family. Each repository carries its own copy.