Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Udon Workflow Specification and IaC Implementation · GitHub
Skip to content
@OpenUdon

Udon Workflow Specification and IaC Implementation

Portable workflow specification and runtime orchestrator to execute OpenAPI endpoints

Project Noodles

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.

The map

RepositoryRole
uwsThe specification, its JSON Schemas, and Go validation and conversion helpers. Currently 1.7.0.
openudonWorkflow authoring, review, packaging, and handoff to a trusted executor.
ramenStateful reconciliation engine. Turns API-source-backed desired resources into reviewable UWS plans, with local SQLite state and history.
browsertoolsTurns website UI evidence into reviewed UWS browser capability profiles, with guided authoring and headless Chromium capture.
browserdriverThe trusted Playwright process that executes browser profiles and browser authentication.
apitoolsOpenAPI document tooling and provider API-source metadata: discovery, validation, caching, operation inventories.
authoringShared authoring orchestration used by OpenUdon and Ramen: sessions, transcripts, interview graphs, decision evidence.
evidenceShared 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.

How the pieces fit

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.

Where to start

  • 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.

Principles that run across the family

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.

Naming

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.

License

Apache-2.0 across the family. Each repository carries its own copy.

Popular repositories Loading

  1. arazzo arazzoPublic

    Handling Arazzo Document in GO

    Go 2

  2. uws uwsPublic

    Udon Workflow Specification

    Go 2

  3. jsonschema jsonschemaPublic

    Handling JSON Schema Draft 4, Draft 7 and 2020-22 in GO

    Go 1

  4. oas oasPublic

    Handling Swagger 2.0, OpenAPI Schema 3.0 and 3.1 in GO

    Go

  5. schema schemaPublic

    Describing hierarchical and dynamic configuration data schemas

    Go

  6. openudon openudonPublic

    UWS workflow authoring, review, package, and executor-handoff tool

    Go

Repositories

Showing 10 of 19 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…