Metadata-Version: 2.4
Name: openadapt
Version: 1.10.0
Summary: Beta launcher for openadapt-flow: compile demonstrated GUI workflows into deterministic, governed local replay
Project-URL: Homepage, https://openadapt.ai
Project-URL: Documentation, https://docs.openadapt.ai
Project-URL: Repository, https://github.com/OpenAdaptAI/openadapt
Project-URL: Canonical Engine, https://github.com/OpenAdaptAI/openadapt-flow
Project-URL: Bug Tracker, https://github.com/OpenAdaptAI/openadapt/issues
Author-email: Richard Abrich <richard@openadapt.ai>
License-Expression: MIT
License-File: LICENSE
Keywords: agent,automation,computer-use,gui,ml,rpa,vlm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <3.13,>=3.10
Requires-Dist: click>=8.0.0
Requires-Dist: openadapt-flow[hosted]<2.0.0,>=1.20.1
Provides-Extra: all
Requires-Dist: openadapt-capture<2.0.0,>=1.0.4; extra == 'all'
Requires-Dist: openadapt-evals>=0.1.0; extra == 'all'
Requires-Dist: openadapt-flow<2.0.0,>=1.20.1; extra == 'all'
Requires-Dist: openadapt-flow[capture]<2.0.0,>=1.20.1; extra == 'all'
Requires-Dist: openadapt-flow[linux]<2.0.0,>=1.20.1; (sys_platform == 'linux') and extra == 'all'
Requires-Dist: openadapt-flow[macos]<2.0.0,>=1.20.1; (sys_platform == 'darwin') and extra == 'all'
Requires-Dist: openadapt-flow[privacy]<2.0.0,>=1.20.1; extra == 'all'
Requires-Dist: openadapt-flow[rdp]<2.0.0,>=1.20.1; extra == 'all'
Requires-Dist: openadapt-flow[windows]<2.0.0,>=1.20.1; extra == 'all'
Requires-Dist: openadapt-grounding>=0.1.0; extra == 'all'
Requires-Dist: openadapt-ml>=0.2.0; extra == 'all'
Requires-Dist: openadapt-retrieval>=0.1.0; extra == 'all'
Requires-Dist: openadapt-viewer>=0.1.0; extra == 'all'
Requires-Dist: playwright>=1.44; extra == 'all'
Provides-Extra: browser
Requires-Dist: playwright>=1.44; extra == 'browser'
Provides-Extra: capture
Requires-Dist: openadapt-capture<2.0.0,>=1.0.4; extra == 'capture'
Requires-Dist: openadapt-flow[capture]<2.0.0,>=1.20.1; extra == 'capture'
Provides-Extra: core
Requires-Dist: openadapt-capture<2.0.0,>=1.0.4; extra == 'core'
Requires-Dist: openadapt-evals>=0.1.0; extra == 'core'
Requires-Dist: openadapt-flow[capture]<2.0.0,>=1.20.1; extra == 'core'
Requires-Dist: openadapt-ml>=0.2.0; extra == 'core'
Requires-Dist: openadapt-viewer>=0.1.0; extra == 'core'
Provides-Extra: dev
Requires-Dist: build>=1.2.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: evals
Requires-Dist: openadapt-evals>=0.1.0; extra == 'evals'
Provides-Extra: flow
Requires-Dist: openadapt-flow<2.0.0,>=1.20.1; extra == 'flow'
Provides-Extra: grounding
Requires-Dist: openadapt-grounding>=0.1.0; extra == 'grounding'
Provides-Extra: linux
Requires-Dist: openadapt-flow[linux]<2.0.0,>=1.20.1; (sys_platform == 'linux') and extra == 'linux'
Provides-Extra: macos
Requires-Dist: openadapt-flow[macos]<2.0.0,>=1.20.1; (sys_platform == 'darwin') and extra == 'macos'
Provides-Extra: ml
Requires-Dist: openadapt-ml>=0.2.0; extra == 'ml'
Provides-Extra: privacy
Requires-Dist: openadapt-flow[privacy]<2.0.0,>=1.20.1; extra == 'privacy'
Provides-Extra: rdp
Requires-Dist: openadapt-flow[rdp]<2.0.0,>=1.20.1; extra == 'rdp'
Provides-Extra: retrieval
Requires-Dist: openadapt-retrieval>=0.1.0; extra == 'retrieval'
Provides-Extra: viewer
Requires-Dist: openadapt-viewer>=0.1.0; extra == 'viewer'
Provides-Extra: windows
Requires-Dist: openadapt-flow[windows]<2.0.0,>=1.20.1; extra == 'windows'
Description-Content-Type: text/markdown

# OpenAdapt

[![CI](https://github.com/OpenAdaptAI/OpenAdapt/actions/workflows/main.yml/badge.svg)](https://github.com/OpenAdaptAI/OpenAdapt/actions/workflows/main.yml)
[![PyPI](https://img.shields.io/pypi/v/openadapt.svg)](https://pypi.org/project/openadapt/)
[![Downloads](https://img.shields.io/pypi/dm/openadapt.svg)](https://pypi.org/project/openadapt/)
[![Python 3.10–3.12](https://img.shields.io/badge/python-3.10%E2%80%933.12-blue)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/license-MIT-3e6b4f.svg)](LICENSE)
[![Discord](https://img.shields.io/badge/Discord-community-5865F2?logo=discord&logoColor=white)](https://discord.gg/yF527cQbDG)

**Automate the UI-only work your APIs can’t reach.**

OpenAdapt is the verified execution layer for consequential work trapped behind
human interfaces. It turns a demonstration into an inspectable workflow that
runs across browser, Windows, macOS, Linux, RDP, and Citrix/VDI. Healthy runs
use no generative-model calls. Consequential actions are identity-gated,
declared results are verified, and uncertainty halts for review instead of
becoming a wrong click.

Use a supported API when one fits. Use OpenAdapt when the interface is
unavoidable and the outcome needs proof.

[Website](https://openadapt.ai) ·
[Documentation](https://docs.openadapt.ai) ·
[Desktop downloads](https://openadapt.ai/download) ·
[OpenAdapt Cloud](https://app.openadapt.ai) ·
[Qualify a workflow](https://openadapt.ai/qualify)

> **Repository role:** this is the flagship OpenAdapt project, the source of
> `pip install openadapt`, and the stable community entry point. The compiler
> and governed runtime are implemented in
> [`openadapt-flow`](https://github.com/OpenAdaptAI/openadapt-flow). This
> repository provides the unified `openadapt` CLI and compatibility surface,
> not a second engine. Lifecycle: **Beta**.

## Try it locally

OpenAdapt requires Python 3.10–3.12. Install the browser capability for the
bundled tutorial:

```bash
python -m pip install --upgrade 'openadapt[browser]'
```

Run the complete bundled tutorial with one command. It needs no account,
target application, API key, or operating-system automation permissions:

```bash
openadapt quickstart
```

You now have:

- `openadapt-quickstart/recording/`: the demonstrated interaction and retained target evidence
- `openadapt-quickstart/bundle/`: the inspectable compiled workflow
- `openadapt-quickstart/run/REPORT.md`: the ordered actions, evidence, outcome, and any halt reason

Inspect the program and its deployment gaps:

```bash
openadapt flow visualize openadapt-quickstart/bundle --out graph.html
openadapt flow lint openadapt-quickstart/bundle
```

The bundled workflow is a tutorial, not a production certification. Qualifying
a real workflow adds its application boundary, action risks, identities,
effect verifiers, fault cases, and deployment policy. Continue with the
[five-minute walkthrough](https://docs.openadapt.ai/get-started/).

## Record your workflow

The browser path is an explicit capability, so native and remote-only installs
do not carry the Playwright driver:

```bash
openadapt flow record --backend web --url https://your-app.example --out rec
openadapt flow compile rec --out bundle --name my-workflow
openadapt flow replay bundle --url https://your-app.example --run-dir run
```

The first browser action downloads its matching Chromium build once. A native
desktop, RDP, or Citrix workflow never downloads or imports it.

Install only the capabilities needed for native or remote work:

```bash
python -m pip install "openadapt[capture]"          # local human demonstration
python -m pip install "openadapt[capture,windows]"  # Windows UI Automation
python -m pip install "openadapt[capture,macos]"    # macOS Accessibility
python -m pip install "openadapt[capture,linux]"    # Linux AT-SPI
python -m pip install "openadapt[capture,rdp]"      # RDP transport
python -m pip install "openadapt[privacy]"          # PII/PHI scrubbing
```

For the visual authoring and review experience, install
[OpenAdapt Desktop](https://openadapt.ai/download).

![OpenAdapt Desktop showing a completed compiled workflow with all 11 steps verified, an 8.2 second run, and no model calls](https://raw.githubusercontent.com/OpenAdaptAI/OpenAdapt/main/media/desktop-replay-verified.png)

## What makes it different

### Verified business effects

A click succeeding is not proof that the intended transaction committed.
OpenAdapt separates action delivery from outcome verification. Workflows can
bind consequential writes to an independent interface, a separate read-only
session, or persisted-state reacquisition before reporting `VERIFIED`.

### Fail-closed execution

Before a consequential action, the runtime can check authorization, workflow
state, record identity, target uniqueness, and the fresh application view.
Afterward it waits for settled state and evaluates the declared effect. If the
contract cannot be established, it returns evidence and halts.

### Deterministic healthy runs

The compiler retains structural, accessibility, visual, OCR, spatial, and
transition evidence from the demonstration. The runtime uses the strongest
signals available on each surface. A generative model may propose a governed
repair when explicitly allowed, but it is not on the healthy execution path.

### Governed repair

Repairs are versioned changes, not permission to improvise. Candidate repairs
can be reviewed, tested against the workflow’s qualification contract,
promoted, and rolled back.

## One workflow model, multiple surfaces

OpenAdapt keeps portable workflow intent separate from environment-specific
bindings:

| Product family | Execution surfaces | Strongest available evidence |
|---|---|---|
| Browser | Chromium-based web applications | DOM, accessibility, visual, OCR |
| Native desktop | Windows, macOS, Linux | UI Automation, Accessibility, AT-SPI, visual |
| Remote applications | RDP, Citrix Workspace, VDI | External pixels, OCR, anchors, keyboard, mouse |

Remote execution operates from a customer-controlled runner through the visible
client. It does not require OpenAdapt software inside the remote session.
Every workflow is qualified against its exact application, version,
environment, identity contract, and effect verifier rather than inheriting a
blanket platform claim.

See the [substrate model](https://docs.openadapt.ai/concepts/substrate-model/),
[qualification evidence](https://docs.openadapt.ai/get-started/what-works-today/),
and [CLI reference](https://docs.openadapt.ai/reference/cli/) for the full
contracts.

## Local, customer-controlled, or managed

| Operating model | Best for | Where application data and execution live |
|---|---|---|
| Local / self-hosted | Community use and local automation | Your machine or infrastructure |
| Customer-controlled | Sensitive data, native apps, RDP, Citrix, private networks | Your declared boundary; Cloud can coordinate approved metadata and artifacts |
| Managed execution | Approved browser and non-sensitive workflows | OpenAdapt-managed runners and control plane |

Raw recordings and live observations stay local by default. Artifacts cross a
boundary only through explicit sanitization and exact-byte approval. Review the
[trust center](https://openadapt.ai/security) before choosing a deployment.

The local launcher, compiler/runtime, Desktop application, substrate adapters,
verification interfaces, and basic qualification tools are MIT licensed.
OpenAdapt Cloud is the commercial multi-tenant control plane for managed
operation, fleet governance, billing, and enterprise integrations. Local
safety-critical verification is not paywalled.

## Evidence

| Evidence | Result |
|---|---|
| Public OpenEMR reference workflow | 20/20 effect-verified runs, 39.2s median, 0 model calls |
| Heart-care RVU audit customer case | Approximately $75,000/year in recovered billables and several hours of monthly audit work saved |

Read the [benchmark method and comparison](https://openadapt.ai/compare) and
the [RVU audit case study](https://openadapt.ai/customers/rvu-audit-heart-care).
Results belong to their named task and environment; workflow qualification
defines what can be claimed for a new deployment.

## Project map

- **This repository:** installer, unified CLI, release compatibility, and
  stable project URL
- **[`openadapt-flow`](https://github.com/OpenAdaptAI/openadapt-flow):**
  canonical compiler, governed runtime, CLI implementation, and conformance
  tests
- **[Documentation](https://docs.openadapt.ai):** installation, workflow
  authoring, qualification, operation, deployment, and reference material
- **[Desktop](https://github.com/OpenAdaptAI/openadapt-desktop):** native
  record, inspect, qualify, execute, and review application

The pre-1.0 monolith remains available under [`legacy/`](legacy/) for migration
history. New product and engine development belongs in `openadapt-flow`.

<details>
<summary><strong>Research and legacy history</strong></summary>

These surfaces are preserved for continuity and are not part of the supported
product. None of them are required to record, compile, replay, or verify a
workflow, and the compiler makes no generative-model calls on its healthy path.

**Research packages.** A separate research line studies whether human
demonstrations can improve the accuracy of general computer-use models. It is a
different question from compiling one demonstration into a deterministic script.

| Package | Research focus | Repository |
|---------|----------------|------------|
| `openadapt-ml` | Training and inference for multimodal GUI-action models | [openadapt-ml](https://github.com/OpenAdaptAI/openadapt-ml) |
| `openadapt-evals` | Benchmark evaluation for GUI agents | [openadapt-evals](https://github.com/OpenAdaptAI/openadapt-evals) |
| `openadapt-retrieval` | Multimodal demonstration retrieval | [openadapt-retrieval](https://github.com/OpenAdaptAI/openadapt-retrieval) |
| `openadapt-grounding` | UI element localization / grounding models | [openadapt-grounding](https://github.com/OpenAdaptAI/openadapt-grounding) |

Install with `pip install "openadapt[ml,evals]"`. See the
[research thesis](https://github.com/OpenAdaptAI/openadapt-ml/blob/main/docs/research_thesis.md)
for methodology, results, and limits.

**Development and operations tooling.** `openadapt-wright`, `openadapt-herald`,
`openadapt-crier`, `openadapt-consilium`, `openadapt-telemetry`, and
`openadapt-viewer` support development and operations. They are not required by
the compiler runtime.

**Pre-1.0 monolith.** The historical monolithic codebase (v0.46.0) is frozen
under [`legacy/`](legacy/) and remains installable with
`pip install openadapt==0.46.0`. See
[docs/LEGACY_FREEZE.md](docs/LEGACY_FREEZE.md) for the migration guide. Early
demonstrations:
[Twitter](https://twitter.com/abrichr/status/1784307190062342237) and
[Loom](https://www.loom.com/share/9d77eb7028f34f7f87c6661fb758d1c0).

</details>

## Contributing and support

Launcher, packaging, and unified-CLI changes belong here. Compiler, runtime,
verification, repair, and backend changes belong in `openadapt-flow`.

- [Contribution guide](CONTRIBUTING.md)
- [Open an issue](https://github.com/OpenAdaptAI/OpenAdapt/issues)
- [GitHub Discussions](https://github.com/OpenAdaptAI/OpenAdapt/discussions)
- [Discord community](https://discord.gg/yF527cQbDG)
- [Report a vulnerability privately](SECURITY.md)

OpenAdapt is maintained by [OpenAdaptAI](https://github.com/OpenAdaptAI) and
released under the [MIT License](LICENSE).
