Skip to main content

Open-source recognition and action for anything on a display.

Project description

Open Frame

Open-source recognition and action for anything on a display.

Open Frame is a platform for seeing what's on screen, locating targets, interacting with them, and verifying the result — without brittle selectors or vendor lock-in. Built under the Off-Camber identity.

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

Status

Active development. v0.1.0 is live on PyPI as off-camber-open-frame.

MVP goalpost: a declarative flow that automates Outlook → Microsoft 365 → create document → email, repeatably across desktop apps. See docs/MVP_GOALPOST.md.

Documentation

Doc Purpose
Vision What we're building and for whom
Architecture System layers, modules, and interfaces
Action plan Phased tasks and checklists
Decisions Record of key design choices
Capture manual test Live macOS validation checklist for Phase 1 capture
OCR setup Install and run the Tesseract recognizer
Accessibility setup Configure macOS Accessibility permission for AX recognition
Act setup Install and safely run click/type actions
Act manual test End-to-end capture → find → click validation steps
Verify setup Configure and use click verification with run artifacts
Flow setup Define and run YAML flows
Acceptance runs Record three consecutive MVP flow runs
API Programmatic Session SDK usage and extension points
Contributing Development workflow and macOS permission setup
Publish to PyPI Trusted publishing setup and release checklist
v0.1.1 backlog Short-term stabilization priorities after first release

Quick start (capture)

# Lower-level primitive available now
open-frame capture --out screen.png
open-frame capture --out crop.png --x 100 --y 200 --width 800 --height 500

# Capture active or named windows
open-frame capture --out active.png --window-title "Outlook"
open-frame capture --out active.png --window-id 123

# Inspect visible windows (and displays)
open-frame list-windows
open-frame list-windows --json --displays

# OCR find on a frame
open-frame find "Submit" --frame screen.png --json
open-frame find "Submit" --frame screen.png --overlay-out overlay.png --json

# Find and click
open-frame click "Submit" --dry-run --json
open-frame click "Save" --verify 'text-gone:"Save"' --json

# Run a flow file
open-frame run flow.yaml --dry-run --json

# Phase 5 smoke flow
open-frame run examples/flows/outlook-new-email/flow.yaml --dry-run --json
open-frame run examples/flows/outlook-browser-outlook/flow.yaml --dry-run --json
open-frame run examples/flows/outlook-m365-email/flow.yaml --dry-run --json

Planned next commands

# Run the MVP reference flow (prepared desktop: Outlook + browser signed in)
open-frame run examples/flows/outlook-m365-email/flow.yaml

open-frame find "New Email" --click

License

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

Project details


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.1.1.tar.gz (33.3 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.1.1-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: off_camber_open_frame-0.1.1.tar.gz
  • Upload date:
  • Size: 33.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for off_camber_open_frame-0.1.1.tar.gz
Algorithm Hash digest
SHA256 823bf69c62870927f623d09118854ad96416210b00cd4375b726016f2d04d39a
MD5 2d811c57ae7af086ef61e3774bb07c79
BLAKE2b-256 605d5ec068882720b4b33d45c4ca1bd21393ed7646998512394905b09dee1e57

See more details on using hashes here.

Provenance

The following attestation bundles were made for off_camber_open_frame-0.1.1.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.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for off_camber_open_frame-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 699c5eb7099e968816b27343c2bc8275999ed9bd8e9a7a8d1bf9258af982c76d
MD5 97b39b871992dfdc62b29b8ee3cb0735
BLAKE2b-256 54baefe2942d6e6b3e27170f047c51cf8f66e7f0122a0826a48594c831e38431

See more details on using hashes here.

Provenance

The following attestation bundles were made for off_camber_open_frame-0.1.1-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 Pingdom Monitoring Sentry Error logging StatusPage Status page