diff --git a/components/MastHead.js b/components/MastHead.js
index 25bdde82..f3aae9f2 100644
--- a/components/MastHead.js
+++ b/components/MastHead.js
@@ -97,7 +97,7 @@ export default function Home({ githubStats: initialGithubStats }) {
- pip install 'openadapt[browser]'
+ pip install openadapt
·
- pip install 'openadapt[browser]'
+ pip install openadapt
diff --git a/data/published-version-claims.json b/data/published-version-claims.json
index 2461dda6..63606177 100644
--- a/data/published-version-claims.json
+++ b/data/published-version-claims.json
@@ -35,8 +35,8 @@
"kind": "pypi-latest",
"source_of_truth": "public/status.json#/versions",
"release_source_of_truth": "public/status.json#/releases",
- "verified_on": "2026-08-25",
- "evidence": "Published package and GitHub release records on 2026-08-25: openadapt 1.14.0, openadapt-flow 1.33.0, openadapt-capture 1.2.2, openadapt-desktop 0.15.0.",
+ "verified_on": "2026-08-26",
+ "evidence": "Published package and GitHub release records on 2026-08-26: openadapt 1.15.0, openadapt-flow 1.33.0, openadapt-capture 1.2.2, openadapt-desktop 0.15.0.",
"packages": {
"launcher": "openadapt",
"flow": "openadapt-flow",
@@ -44,7 +44,7 @@
"desktop": "openadapt-desktop"
},
"versions": {
- "launcher": "1.14.0",
+ "launcher": "1.15.0",
"flow": "1.33.0",
"capture": "1.2.2",
"desktop": "0.15.0"
diff --git a/data/templates.js b/data/templates.js
index 3722043f..af7e0cdd 100644
--- a/data/templates.js
+++ b/data/templates.js
@@ -24,7 +24,7 @@ const FLOW_REPO = 'https://github.com/OpenAdaptAI/openadapt-flow'
// The canonical end-user quickstart enters through the flagship OpenAdapt
// package while source links below continue to point to the engine repository.
const DEMO_QUICKSTART = [
- { cmd: "pip install 'openadapt[browser]'", what: 'Install the OpenAdapt launcher, compiler, and browser capability.' },
+ { cmd: 'pip install openadapt', what: 'Install the OpenAdapt launcher, compiler, and included browser capability.' },
{ cmd: 'openadapt flow demo-record --out rec', what: 'Serve the bundled MockMed clinic app locally and record the canonical triage demonstration.' },
{ cmd: 'openadapt flow compile rec --out bundle --name triage-note', what: 'Compile the recording into a deterministic, locally executable bundle.' },
{ cmd: 'openadapt flow lint bundle', what: 'Report the bundle’s coverage gaps — expected: it finds the demo’s unarmed irreversible final click.' },
@@ -33,7 +33,7 @@ const DEMO_QUICKSTART = [
]
const RECORD_YOUR_OWN = [
- { cmd: "pip install 'openadapt[browser]'", what: 'Install the OpenAdapt launcher, compiler, and browser capability.' },
+ { cmd: 'pip install openadapt', what: 'Install the OpenAdapt launcher, compiler, and included browser capability.' },
{ cmd: 'openadapt flow record --url https://your.app --out rec', what: 'Open a headed browser on your app and demonstrate the workflow once; Ctrl-C to finish.' },
{ cmd: 'openadapt flow compile rec --out bundle --name my-task', what: 'Compile the recording into a deterministic bundle with auto-classified risk per step.' },
{ cmd: 'openadapt flow lint bundle && openadapt flow certify bundle --policy permissive', what: 'Surface coverage gaps, then gate the bundle against a policy before it ever deploys.' },
diff --git a/data/templates/batch-worklist-loop.json b/data/templates/batch-worklist-loop.json
index 6b565b07..8c9cdb12 100644
--- a/data/templates/batch-worklist-loop.json
+++ b/data/templates/batch-worklist-loop.json
@@ -31,8 +31,8 @@
"bounded max_iterations halt"
],
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow for-each
--records worklist.csv --out my-loop-bundle --map note=note",
diff --git a/data/templates/exception-routing-human-approval.json b/data/templates/exception-routing-human-approval.json
index 51221ba2..7191594b 100644
--- a/data/templates/exception-routing-human-approval.json
+++ b/data/templates/exception-routing-human-approval.json
@@ -19,8 +19,8 @@
}
],
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"faq": []
}
diff --git a/data/templates/frappe-loan-application.json b/data/templates/frappe-loan-application.json
index 1155ecb3..c5906b49 100644
--- a/data/templates/frappe-loan-application.json
+++ b/data/templates/frappe-loan-application.json
@@ -11,8 +11,8 @@
"demonstrates":
"A loan application entered once on a pinned Frappe Lending v16.2.0 fixture and accepted only when three independent oracles - a separately authenticated read-only REST session, a direct SQL read-back, and an exact table-delta audit - agree that exactly one application was written.",
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow record --url http://localhost:8000/app/loan-application --out rec && openadapt flow compile rec --out bundle --name loan-application",
diff --git a/data/templates/native-desktop-data-entry.json b/data/templates/native-desktop-data-entry.json
index c09d945f..78c66c26 100644
--- a/data/templates/native-desktop-data-entry.json
+++ b/data/templates/native-desktop-data-entry.json
@@ -19,7 +19,7 @@
}
],
"install": {
- "command": "pip install 'openadapt[browser]'",
+ "command": "pip install openadapt",
"note": "Installs the OpenAdapt launcher, compiler, and capture capability."
},
"faq": []
diff --git a/data/templates/openemr-create-patient-record.json b/data/templates/openemr-create-patient-record.json
index e8cfd2ff..e62cd84e 100644
--- a/data/templates/openemr-create-patient-record.json
+++ b/data/templates/openemr-create-patient-record.json
@@ -33,8 +33,8 @@
"non-target table-delta audit (exactly one new patient, nothing else changed)"
],
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow record --url http://localhost/openemr --out rec && openadapt flow compile rec --out bundle --name create-patient",
diff --git a/data/templates/openemr-patient-note.json b/data/templates/openemr-patient-note.json
index 9c3ee2ab..b8ad60a4 100644
--- a/data/templates/openemr-patient-note.json
+++ b/data/templates/openemr-patient-note.json
@@ -11,8 +11,8 @@
"demonstrates":
"An 18-step add-patient-note workflow on the real third-party OpenEMR public demo: log in, find the patient, open the chart, navigate to Patient Messages, enter a parameterized note, save - with each replay substituting a distinct note value.",
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow record --url https://demo.openemr.io/openemr --out rec && openadapt flow compile rec --out bundle --name add-note",
diff --git a/data/templates/openimis-claim-intake.json b/data/templates/openimis-claim-intake.json
index 78aeb1f5..e74fbd58 100644
--- a/data/templates/openimis-claim-intake.json
+++ b/data/templates/openimis-claim-intake.json
@@ -11,8 +11,8 @@
"demonstrates":
"A health-facility claim entered once in openIMIS - the open-source system used by national health-insurance schemes - compiled, and replayed with a fresh claim number, accepted only when a direct SQL read shows exactly one new claim row in status Entered for the right policyholder and facility.",
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow record --url http://localhost:8000/ --out rec && openadapt flow compile rec --out bundle --name claim-intake",
diff --git a/data/templates/openimis-eligibility-enquiry.json b/data/templates/openimis-eligibility-enquiry.json
index 314c8736..fab2eed9 100644
--- a/data/templates/openimis-eligibility-enquiry.json
+++ b/data/templates/openimis-eligibility-enquiry.json
@@ -31,8 +31,8 @@
"declared-effect check with explicit halt path"
],
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand":
"openadapt flow record --url http://localhost:8000/ --out rec && openadapt flow compile rec --out bundle --name eligibility-enquiry",
diff --git a/data/templates/patient-triage-note.json b/data/templates/patient-triage-note.json
index d4f0aa52..21027cec 100644
--- a/data/templates/patient-triage-note.json
+++ b/data/templates/patient-triage-note.json
@@ -12,8 +12,8 @@
"demonstrates":
"A nurse's triage-note workflow demonstrated once in a synthetic clinic app, compiled into a deterministic local program, and replayed with the note text as a parameter - including five injected fault classes that must halt instead of proceeding.",
"install": {
- "command": "pip install 'openadapt[browser]'",
- "note": "Installs the OpenAdapt launcher, compiler, and browser capability."
+ "command": "pip install openadapt",
+ "note": "Installs the OpenAdapt launcher, compiler, and included browser capability."
},
"tryItCommand": "openadapt flow replay bundle --param note=\"Triage note from $(date +%F)\"",
"runStats": {
diff --git a/data/templates/rdp-citrix-hosted-app-update.json b/data/templates/rdp-citrix-hosted-app-update.json
index a39e3b90..080a5ea2 100644
--- a/data/templates/rdp-citrix-hosted-app-update.json
+++ b/data/templates/rdp-citrix-hosted-app-update.json
@@ -23,7 +23,7 @@
}
],
"install": {
- "command": "pip install 'openadapt[browser]'",
+ "command": "pip install openadapt",
"note": "Installs the OpenAdapt launcher, compiler, and capture capability."
},
"faq": []
diff --git a/pages/download.js b/pages/download.js
index a00f90f8..1809a6f6 100644
--- a/pages/download.js
+++ b/pages/download.js
@@ -142,7 +142,7 @@ export default function DownloadPage({ release, fetchFailed }) {
Windows, macOS, and Linux.
- pip install 'openadapt[browser]'
+ pip install openadapt
@@ -269,7 +269,7 @@ export default function DownloadPage({ release, fetchFailed }) {
The next complete Beta set has not been
published yet. Use{' '}
- pip install 'openadapt[browser]', or watch the
+ pip install openadapt, or watch the
desktop releases page for the native build.
@@ -522,7 +522,7 @@ export default function DownloadPage({ release, fetchFailed }) {
Need the working workflow engine?
- Start with pip install 'openadapt[browser]', or bring the workflow
+ Start with pip install openadapt, or bring the workflow
you most want to automate to a 30-minute call.
diff --git a/pages/start.js b/pages/start.js
index 376ede9d..97b18355 100644
--- a/pages/start.js
+++ b/pages/start.js
@@ -5,7 +5,7 @@ import Link from 'next/link'
import Footer from '@components/Footer'
import { EVENTS, track } from 'utils/analytics'
-const INSTALL = "python -m pip install --upgrade 'openadapt[browser]'"
+const INSTALL = 'python -m pip install --upgrade openadapt'
const QUICKSTART = 'openadapt quickstart'
function Command({ command, event }) {
@@ -112,10 +112,10 @@ export default function StartPage() {
/>
- Requires Python 3.10–3.12. The browser extra is
- only for this web tutorial; its first web action
- downloads matching Chromium once. Native, RDP,
- and Citrix installs do not need it.
+ Requires Python 3.10–3.12. The base install
+ includes the browser support for this tutorial.
+ Its first web action downloads matching Chromium
+ once. Native, RDP, and Citrix runs do not use it.
/dev/null 2>&1; then
fi
case "${1:-}" in
- "")
+ ""|browser)
+ # Keep the historical browser argument compatible with saved commands.
package='openadapt'
;;
- browser)
- package='openadapt[browser]'
- ;;
*)
- err "Unknown capability '$1'. Use no argument, or: browser"
+ err "Unknown capability '$1'. Use no argument."
exit 2
;;
esac
-info "Installing OpenAdapt${1:+ with browser support}…"
+info "Installing OpenAdapt…"
uv tool install --upgrade "$package"
# Make sure the installed `openadapt` command is on PATH in future shells.
diff --git a/public/llms-full.txt b/public/llms-full.txt
index dfb4a196..7aa684be 100644
--- a/public/llms-full.txt
+++ b/public/llms-full.txt
@@ -78,7 +78,7 @@ control plane is a separate commercial product.
- Engine source: https://github.com/OpenAdaptAI/openadapt-flow
- Install route: https://github.com/OpenAdaptAI/OpenAdapt and `pip install openadapt`
-- Current published versions: launcher 1.14.0, Flow 1.33.0, capture 1.2.2, desktop 0.15.0
+- Current published versions: launcher 1.15.0, Flow 1.33.0, capture 1.2.2, desktop 0.15.0
- Product lifecycle: Beta
---
diff --git a/public/llms.txt b/public/llms.txt
index 9ef3621e..592e0a0f 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -9,7 +9,7 @@ OpenAdapt fits repetitive, consequential work where the application has no pract
## Canonical machine-readable status
- [status.json](https://openadapt.ai/status.json): The single source of truth for product lifecycle, released component versions, per-substrate availability, delivery boundary, and the linked acceptance evidence for each substrate. Public surfaces render their labels from this file. Prefer it over any prose on this site if the two ever disagree.
-- Current published versions: launcher 1.14.0, Flow (compiler/runtime) 1.33.0, capture 1.2.2, desktop 0.15.0. Product lifecycle: Beta.
+- Current published versions: launcher 1.15.0, Flow (compiler/runtime) 1.33.0, capture 1.2.2, desktop 0.15.0. Product lifecycle: Beta.
## Execution substrates and their evidence boundary
diff --git a/public/status.json b/public/status.json
index 14fe7aea..fa38a0a1 100644
--- a/public/status.json
+++ b/public/status.json
@@ -1,9 +1,9 @@
{
"$comment": "Canonical machine-readable release, capability, evidence, and deployment status for OpenAdapt. Served at https://openadapt.ai/status.json and consumed by status-aware public surfaces and tests. OpenAdapt is one Beta product across browser, Windows, macOS, Linux, RDP, and Citrix/VDI. Capability availability is distinct from the deployment boundary and from the bounded evidence scope recorded for each substrate.",
- "generated_at": "2026-08-22",
+ "generated_at": "2026-08-26",
"product_lifecycle": "Beta",
"versions": {
- "launcher": "1.14.0",
+ "launcher": "1.15.0",
"flow": "1.33.0",
"capture": "1.2.2",
"desktop": "0.15.0"
@@ -11,24 +11,24 @@
"releases": {
"launcher": {
"package": "openadapt",
- "version": "1.14.0",
+ "version": "1.15.0",
"source": "pypi",
"github_repository": "OpenAdaptAI/OpenAdapt",
- "tag": "v1.14.0",
- "release_commit": "b9e096535224e0cb4b62d89f097a6b09c318bfe5",
- "qualified_source_commit": "5de18046d4c63d57eddbe827259818b31d24ecd3",
+ "tag": "v1.15.0",
+ "release_commit": "083414d89f282631071d6914c865f0175b6d8c84",
+ "qualified_source_commit": "8d5627a69b86565a4eabe71929820fd573f1bb88",
"artifacts": [
{
"type": "bdist_wheel",
- "filename": "openadapt-1.14.0-py3-none-any.whl",
- "url": "https://files.pythonhosted.org/packages/d8/9a/2ac1a9748901c11109bf82ee4a37708f03bfe857dfdd25dcc98957acb6fc/openadapt-1.14.0-py3-none-any.whl",
- "sha256": "ac79ccb3b502f6a6c309fd05fa965ed874bee3470e45cf9ac919ef4df6c0bc8f"
+ "filename": "openadapt-1.15.0-py3-none-any.whl",
+ "url": "https://files.pythonhosted.org/packages/92/2e/ce94bea08065173e038f0d61c574ae0c25037cb9f6b78f18510c3da16a49/openadapt-1.15.0-py3-none-any.whl",
+ "sha256": "c7b20b231ba5bdd36e99188f535bdec92af0697ade61b8c76e92336613dde79c"
},
{
"type": "sdist",
- "filename": "openadapt-1.14.0.tar.gz",
- "url": "https://files.pythonhosted.org/packages/5e/20/eed353c2356b01fb608f6f472b241c3200eec310b054ff28154f6d7cfb5f/openadapt-1.14.0.tar.gz",
- "sha256": "0a5456faa6769a2186cd653050134bb3c91cb202e9a147fcd611b0671c52370f"
+ "filename": "openadapt-1.15.0.tar.gz",
+ "url": "https://files.pythonhosted.org/packages/af/12/2e80151231dfbff6fa5324f48722d90f4bbc02833fb8eb2f179f6582f070/openadapt-1.15.0.tar.gz",
+ "sha256": "db73a1d0bed9a96b58cf795146aecfe40ceae12fa147d4bf7ecd106872a4a81f"
}
]
},
diff --git a/tests/growthGenerators.test.js b/tests/growthGenerators.test.js
index ea3da9ec..5fbe47f1 100644
--- a/tests/growthGenerators.test.js
+++ b/tests/growthGenerators.test.js
@@ -134,7 +134,7 @@ test('JSON-only routed entries become complete template pages', () => {
assert.ok(t.quickstart.length >= 2, `${slug}: quickstart synthesized`)
assert.equal(
t.quickstart[0].cmd,
- "pip install 'openadapt[browser]'",
+ 'pip install openadapt',
`${slug}: quickstart starts from the flagship package`
)
}
diff --git a/tests/publicTruth.test.js b/tests/publicTruth.test.js
index 60bb0346..ec0e16f6 100644
--- a/tests/publicTruth.test.js
+++ b/tests/publicTruth.test.js
@@ -164,7 +164,8 @@ test('end-user quickstarts enter through OpenAdapt while engine links stay techn
const developerLinks = read('data/developerLinks.js')
const publicSurfaces = [install, pricing, templates, download].join('\n')
- assert.match(publicSurfaces, /pip install 'openadapt\[browser\]'/)
+ assert.match(publicSurfaces, /pip install openadapt/)
+ assert.doesNotMatch(publicSurfaces, /openadapt\[browser\]/)
assert.match(publicSurfaces, /openadapt flow/)
assert.doesNotMatch(publicSurfaces, /pip install openadapt-flow/)
assert.doesNotMatch(publicSurfaces, /uv tool uninstall openadapt/)
diff --git a/tests/templatesGallery.test.js b/tests/templatesGallery.test.js
index 59844e20..651bec5e 100644
--- a/tests/templatesGallery.test.js
+++ b/tests/templatesGallery.test.js
@@ -35,7 +35,7 @@ test('registry entries are complete, unique, and search-titled', () => {
assert.ok(t.quickstart.length >= 3, `${t.slug}: CLI quickstart`)
assert.equal(
t.quickstart[0].cmd,
- "pip install 'openadapt[browser]'",
+ 'pip install openadapt',
`${t.slug}: quickstart starts from the flagship package`
)
assert.ok(