Skip to main content

Open Frame

Open Frame

Open-source desktop automation engine for AI agents and scripts.

Open Frame sees what is on screen, finds targets, interacts with UI, and verifies outcomes. It is built to be deterministic, scriptable, and auditable.

Open Frame approving an invoice in the browser

Above: Open Frame drives a live invoice UI — FIND “Post payment”, CLICK the match, VERIFY “Payment posted to Northline.”

Open Frame is an independent project and is not affiliated with or endorsed by any third-party automation vendor.

Open Frame is the deterministic execution layer behind AI agents, not the agent itself.

How this differs from assistant UX tools

  • Open Frame executes deterministic capture/recognize/act/verify primitives.
  • External LLM agents (or scripts) decide what tool call to make next.
  • The engine returns compact structured outputs and artifact paths for debugging.

Status

Beta (v0.2.0) — macOS-first. Available on PyPI as off-camber-open-frame. Evidence for this release comes from CI plus a local macOS live gate (including MCP stdio smoke); see release gates. Changelog: CHANGELOG.md.

Who this is for

  • Developers automating desktop workflows.
  • Teams who want agent-callable UI execution without bloating context windows.
  • Contributors building recognizers, flows, or integrations.

Quickstart (beta funnel)

1. Install

pip install "off-camber-open-frame[mcp,ocr,act,flow]"
brew install tesseract

On macOS, grant your terminal or IDE host Screen Recording and Accessibility (System Settings → Privacy & Security), then restart that app.

2. Diagnose

open-frame doctor

All required checks should report pass (overall: ok). Optional extras that are not installed show as skip and do not fail the report.

3. Connect an MCP client

Point Claude Desktop or Cursor at the stdio server:

open-frame mcp serve

Copy-paste client config: MCP server setup.

4. Run a first flow

open-frame find "Submit" --json
open-frame run examples/flows/mcp-dry-run-wait/flow.yaml --dry-run --json

If open-frame is not on your PATH yet:

python -m openframe.cli doctor

Local development (repo clone)

python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,ocr,act,flow,mcp]"
open-frame doctor
open-frame mcp list-tools --json

If python3.11 is not available on a fresh macOS machine:

brew install python@3.11

Next steps

License

Apache License 2.0 — free to use, modify, and self-host. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

off_camber_open_frame-0.2.0.tar.gz (73.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

off_camber_open_frame-0.2.0-py3-none-any.whl (61.6 kB view details)

Uploaded Python 3

File details

Details for the file off_camber_open_frame-0.2.0.tar.gz.

File metadata

  • Download URL: off_camber_open_frame-0.2.0.tar.gz
  • Upload date:
  • Size: 73.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for off_camber_open_frame-0.2.0.tar.gz
Algorithm Hash digest
SHA256 051f1ff45b6277213f6e2d172185880bab8103afffe15cc113e122e7cec8857a
MD5 62eaab13a71d2d8fa0a85acee944ed29
BLAKE2b-256 d8ceef01c526b137ef108b95fad3bdea64a8e803340aaaa90bfd5e543f0af38a

See more details on using hashes here.

Provenance

The following attestation bundles were made for off_camber_open_frame-0.2.0.tar.gz:

Publisher: publish-pypi.yml on Off-Camber/open-frame

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file off_camber_open_frame-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for off_camber_open_frame-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ebea83d3b4887c13b524fac3d37e09c2b7137b20319404beded998b857c57af
MD5 7f7ed775c3e228bf99622f916f3dfd7c
BLAKE2b-256 ec1cd9dd6c968deb4f0980b50d4949e7658c4fbef8af814ea3787ecc39f3b65b

See more details on using hashes here.

Provenance

The following attestation bundles were made for off_camber_open_frame-0.2.0-py3-none-any.whl:

Publisher: publish-pypi.yml on Off-Camber/open-frame

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page