From 1196a958915c1c2a1203eab814bcbf188191434a Mon Sep 17 00:00:00 2001 From: abrichr Date: Wed, 29 Jul 2026 21:19:11 -0400 Subject: [PATCH 1/4] feat: add OpenAdapt Execute buyer page --- components/CommercialOffer.js | 6 ++ components/NavHeader.js | 1 + components/Pricing.js | 4 +- pages/execute.js | 167 ++++++++++++++++++++++++++++++++++ pages/partners.js | 3 + public/llms.txt | 1 + public/sitemap.xml | 6 ++ tests/executePage.test.js | 21 +++++ 8 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 pages/execute.js create mode 100644 tests/executePage.test.js diff --git a/components/CommercialOffer.js b/components/CommercialOffer.js index a95812b..8b52ba1 100644 --- a/components/CommercialOffer.js +++ b/components/CommercialOffer.js @@ -86,6 +86,12 @@ export default function CommercialOffer({ hostedOffer }) { +

+ Building vertical software or operating workflows for clients?{' '} + + Explore OpenAdapt Execute. + +

) diff --git a/components/NavHeader.js b/components/NavHeader.js index b22b4d7..c4a026d 100644 --- a/components/NavHeader.js +++ b/components/NavHeader.js @@ -30,6 +30,7 @@ const SOLUTIONS_LINKS = [ ] const PRODUCT_LINKS = [ + { label: 'OpenAdapt Execute', href: '/execute' }, { label: 'Run locally', href: '/start' }, { label: 'How it works', href: '/how-it-works' }, { diff --git a/components/Pricing.js b/components/Pricing.js index e8c4742..1499f93 100644 --- a/components/Pricing.js +++ b/components/Pricing.js @@ -406,10 +406,10 @@ export default function Pricing({ hostedOffer = null }) { annually, plus scoped integration work.

- Discuss OEM + Explore OpenAdapt Execute diff --git a/pages/execute.js b/pages/execute.js new file mode 100644 index 0000000..f2c8c6e --- /dev/null +++ b/pages/execute.js @@ -0,0 +1,167 @@ +import Head from 'next/head' +import Link from 'next/link' + +import Footer from '@components/Footer' + +const description = + 'OpenAdapt Execute gives software and service providers verified execution in the systems their products cannot integrate with.' + +const STEPS = [ + { + number: '01', + title: 'Qualify one transaction', + body: 'We bind the intended inputs, identity checks, effect proof, target environment, and exception path to one workflow version.', + }, + { + number: '02', + title: 'Send an authorized request', + body: 'Your product sends a structured transaction to the private partner API. OpenAdapt dispatches it to the approved customer-controlled runner.', + }, + { + number: '03', + title: 'Receive a durable result', + body: 'The execution returns a verified receipt when the required proof passes, or a typed exception when an authorized person or reconciliation is needed.', + }, +] + +const OUTCOMES = [ + { + label: 'VERIFIED', + body: 'The runner completed the authorized work and proved the configured business effect.', + }, + { + label: 'DECISION_REQUIRED', + body: 'An authorized operator receives one focused question on phone or computer, then the runner rechecks the live state before it continues.', + }, + { + label: 'RECONCILIATION_REQUIRED', + body: 'The action may have reached the target, but the proof is incomplete. OpenAdapt does not repeat a consequential write blindly.', + }, + { + label: 'HALTED_BEFORE_EFFECT', + body: 'The runner refused before a business effect when identity, target, authorization, or policy evidence did not match.', + }, +] + +export default function ExecutePage() { + return ( +
+ + OpenAdapt Execute | Verified execution for your product + + + + + + + +
+
+
+

OpenAdapt Execute

+

+ Verified execution for the systems your product cannot integrate with. +

+

+ Your product already knows the transaction. OpenAdapt completes it through the customer's browser, desktop, RDP, or Citrix session, then returns a verified receipt or a typed exception. +

+
+ + Qualify one transaction + + + Discuss an OEM integration + +
+

+ OpenAdapt Execute is a private partner API and an OEM integration. We provision it with a qualified workflow and a commercial agreement. +

+
+
+ +
+
+

The execution boundary

+
+
+

+ Keep business logic in your product. Put the last mile under a governed contract. +

+

+ Vertical software, service providers, and operations teams often prepare the right structured data but cannot write it into each customer system. OpenAdapt carries the authorized transaction across that final boundary without turning your product into a general-purpose computer agent. +

+
+
+
+
Your product
+
Chooses the transaction and supplies authorized, structured input.
+
+
+
Customer-controlled runner
+
Observes and acts inside the approved browser, desktop, remote session, or private network boundary.
+
+
+
OpenAdapt
+
Binds the workflow, authorization, identity, effect proof, evidence, and exception path.
+
+
+
+
+
+ +
+
+

From request to receipt

+
+ {STEPS.map((step) => ( +
+

{step.number}

+

{step.title}

+

{step.body}

+
+ ))} +
+
{`POST /executions\n→ 202 { execution_id, state: "QUEUED" }\n\nwebhook → { outcome: "VERIFIED", receipt: { ... } }\n     or { state: "DECISION_REQUIRED", decision_task: { ... } }`}
+

+ Execution is asynchronous. A run can wait for an authorized decision, survive a restart, or require reconciliation without losing its transaction identity. +

+
+
+ +
+
+

Clear outcomes

+

+ A receipt names what the runner proved and what needs attention. +

+
+ {OUTCOMES.map((outcome) => ( +
+

{outcome.label}

+

{outcome.body}

+
+ ))} +
+
+
+ +
+
+

Start with one deployment

+

+ Bring one transaction, one target environment, and one measurable business effect. +

+

+ We qualify the first workflow with your team. That creates the reusable execution contract, customer-runner plan, mobile operator decision path, and evidence needed to scale it through your product. +

+
+ Qualify one transaction + Talk to partnerships +
+
+
+
+
+
+ ) +} diff --git a/pages/partners.js b/pages/partners.js index 42995ba..4d52b7c 100644 --- a/pages/partners.js +++ b/pages/partners.js @@ -93,6 +93,9 @@ export default function PartnersPage() { inside customer boundaries. The runtime is MIT-licensed; the partnership adds commercial terms, qualification method, and support boundaries. + {' '} + See OpenAdapt Execute for OEM integrations. +

diff --git a/public/llms.txt b/public/llms.txt index 9c713be..2369270 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -79,6 +79,7 @@ Every template corresponds to something that actually runs. Proven references ex ## Buy, qualify, and partner - [Pricing](https://openadapt.ai/pricing): Three ways to start. **OpenAdapt Community** — free, MIT-licensed local runtime and qualification tools, no Cloud account required. **Workflow Qualification Sprint** — from $15,000 with a ten-business-day target, qualifying one application, one environment, and one measurable business effect; native, RDP, and Citrix qualifications are typically $25,000–$40,000; the sprint is paid even when the correct outcome is not to automate. **OpenAdapt Cloud** — $500/month managed browser execution for non-regulated data, with no production SLA and no regulated deployment included. Production, pilot, and OEM paths follow a successful qualification. +- [OpenAdapt Execute](https://openadapt.ai/execute): Private partner API and OEM integration for software and service providers that already know the transaction but cannot complete it in a customer system. It returns a verified receipt or a typed exception through an approved customer-controlled runner. - [Qualify a workflow](https://openadapt.ai/qualify): Submit one exact application, environment, workflow, volume, verification path, and deployment boundary for a paid qualification. - [Partner program](https://openadapt.ai/partners): Application-based tracks for vertical software/OEM, RCM and BPO operators, integration and services firms, and MSP/deployment partners. - [Contribute data for credits](https://openadapt.ai/contribute): Opt-in program to contribute sanitized workflow evidence to the shared hardening corpus in exchange for credits. diff --git a/public/sitemap.xml b/public/sitemap.xml index 7cd508f..c3e2b7e 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -66,6 +66,12 @@ weekly 0.9 + + https://openadapt.ai/execute + 2026-07-29 + weekly + 0.9 + https://openadapt.ai/download 2026-07-16 diff --git a/tests/executePage.test.js b/tests/executePage.test.js new file mode 100644 index 0000000..0762248 --- /dev/null +++ b/tests/executePage.test.js @@ -0,0 +1,21 @@ +const assert = require('node:assert/strict') +const fs = require('node:fs') +const path = require('node:path') +const test = require('node:test') + +const read = (relativePath) => + fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8') + +test('Execute has qualification and OEM routes', () => { + const page = read('pages/execute.js') + + assert.match(page, /href="\/qualify"/) + assert.match(page, /href="\/partners#apply"/) + assert.match(page, /
/) +}) + +test('Execute is reachable from product, partner, and pricing routes', () => { + assert.match(read('components/NavHeader.js'), /href: '\/execute'/) + assert.match(read('pages/partners.js'), /href="\/execute"/) + assert.match(read('components/Pricing.js'), /href="\/execute"/) +}) From 61771b12b5985cd7b5f5ff55788651919fc34842 Mon Sep 17 00:00:00 2001 From: abrichr Date: Wed, 29 Jul 2026 21:21:00 -0400 Subject: [PATCH 2/4] test: remove brittle Execute page assertions --- tests/executePage.test.js | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 tests/executePage.test.js diff --git a/tests/executePage.test.js b/tests/executePage.test.js deleted file mode 100644 index 0762248..0000000 --- a/tests/executePage.test.js +++ /dev/null @@ -1,21 +0,0 @@ -const assert = require('node:assert/strict') -const fs = require('node:fs') -const path = require('node:path') -const test = require('node:test') - -const read = (relativePath) => - fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8') - -test('Execute has qualification and OEM routes', () => { - const page = read('pages/execute.js') - - assert.match(page, /href="\/qualify"/) - assert.match(page, /href="\/partners#apply"/) - assert.match(page, /
/) -}) - -test('Execute is reachable from product, partner, and pricing routes', () => { - assert.match(read('components/NavHeader.js'), /href: '\/execute'/) - assert.match(read('pages/partners.js'), /href="\/execute"/) - assert.match(read('components/Pricing.js'), /href="\/execute"/) -}) From 2d183cd9338522f0952c9f8672a0611eca285657 Mon Sep 17 00:00:00 2001 From: abrichr Date: Wed, 29 Jul 2026 21:22:05 -0400 Subject: [PATCH 3/4] fix: align Execute page with versioned state contract --- pages/execute.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/pages/execute.js b/pages/execute.js index f2c8c6e..481111d 100644 --- a/pages/execute.js +++ b/pages/execute.js @@ -26,21 +26,25 @@ const STEPS = [ const OUTCOMES = [ { - label: 'VERIFIED', + label: 'verified', body: 'The runner completed the authorized work and proved the configured business effect.', }, { - label: 'DECISION_REQUIRED', - body: 'An authorized operator receives one focused question on phone or computer, then the runner rechecks the live state before it continues.', - }, - { - label: 'RECONCILIATION_REQUIRED', + label: 'reconciliation_required', body: 'The action may have reached the target, but the proof is incomplete. OpenAdapt does not repeat a consequential write blindly.', }, { - label: 'HALTED_BEFORE_EFFECT', + label: 'halted_before_effect', body: 'The runner refused before a business effect when identity, target, authorization, or policy evidence did not match.', }, + { + label: 'rejected_policy', + body: 'The authorization or policy contract rejected the request before execution could proceed.', + }, + { + label: 'failed_platform', + body: 'The execution platform failed before it could establish a verified business result.', + }, ] export default function ExecutePage() { @@ -121,7 +125,7 @@ export default function ExecutePage() { ))} -
{`POST /executions\n→ 202 { execution_id, state: "QUEUED" }\n\nwebhook → { outcome: "VERIFIED", receipt: { ... } }\n     or { state: "DECISION_REQUIRED", decision_task: { ... } }`}
+
{`POST /v1/executions\n→ 202 { schema_version: "openadapt.execute-accepted/v1",\n        execution_id, state: "queued" }\n\nwebhook → { schema_version: "openadapt.execute-webhook/v1",\n            event_type: "execution.terminal", receipt: { outcome: "verified" } }`}

Execution is asynchronous. A run can wait for an authorized decision, survive a restart, or require reconciliation without losing its transaction identity.

@@ -142,6 +146,12 @@ export default function ExecutePage() { ))} +
From af2b8021432d3999bb53e905219f850dfe7510c5 Mon Sep 17 00:00:00 2001 From: abrichr Date: Wed, 29 Jul 2026 21:24:29 -0400 Subject: [PATCH 4/4] fix: complete Execute terminal outcome copy --- pages/execute.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pages/execute.js b/pages/execute.js index 481111d..b32997b 100644 --- a/pages/execute.js +++ b/pages/execute.js @@ -43,7 +43,11 @@ const OUTCOMES = [ }, { label: 'failed_platform', - body: 'The execution platform failed before it could establish a verified business result.', + body: 'The execution platform failed before any possible business effect.', + }, + { + label: 'rolled_back_verified', + body: 'A configured compensating action completed and OpenAdapt independently verified its business effect.', }, ]