Skip to main content

Optexity is a platform for building and running browser and computer agents.

Project description

Optexity

Build custom browser agents with AI-powered automation. Record browser interactions, extract data, and run complex workflows via a simple API. You can extract data from websites, fill out forms, do QA testing, and more.

Features

  • 🎯 Visual Recording: Record browser interactions with the Optexity Recorder Chrome extension
  • 🤖 AI-Powered: Uses LLMs to handle dynamic content and find elements intelligently
  • 📊 Data Extraction: Extract structured data from web pages using LLM-based extraction
  • 🔄 Workflow Automation: Chain multiple actions together for complex browser workflows
  • 🚀 API-First: Run automations via REST API with simple JSON requests
  • 🎨 Dashboard: Manage and monitor your automations through the Optexity dashboard

Quick Start

1. Create an Account

Head to dashboard.optexity.com and sign up for a free account.

2. Get Your API Key

Once logged in, navigate to the API Keys section in your dashboard and create a new key.

3. Install the Recorder Extension

Install the Optexity Recorder extension from the Chrome Web Store. This extension captures your browser interactions and converts them into automation workflows.

Prerequisites

  • Python 3.11+
  • Git

Create and Activate a Python Environment (Optional)

Choose one of the options below.

Option A – Conda (includes Python 3.11 and Node.js)

conda create -n optexity python=3.11
conda activate optexity

Install miniconda here: https://docs.conda.io/projects/conda/en/stable/user-guide/install/index.html#installing-in-silent-mode

Option B – Python venv

python3 -m venv .venv
source .venv/bin/activate

Installation

Quick Installation (from PyPI)

Install Optexity directly from PyPI:

pip install optexity
optexity install-browsers

OR

Installation from Source

If you want to clone and edit from source:

git clone git@github.com:Optexity/optexity.git
cd optexity
pip install -e .
optexity install-browsers

Set required environment variables:

API_KEY=YOUR_OPTEXITY_API_KEY           # API key used for authenticated requests
GOOGLE_API_KEY=YOUR_GOOGLE_API_KEY      # API key used for Google Gemini
DEPLOYMENT=dev                          # or "prod" in production

You can get your free Google Gemini API key from the Google AI Studio Console.

Recording Your First Automation

The fastest way to create an automation is by recording your actions directly in the browser.

Steps

  1. Navigate to the target website: Open Chrome and go to the website you want to automate (e.g., https://stockanalysis.com/)

  2. Start capturing: Click the Optexity Recorder extension icon and hit Start Capture

  3. Perform your actions:

    • Click on the "Search" button
    • Enter the stock symbol in the search bar
    • Click on the first result in the search results
  4. Stop and save: When finished, click Complete Capture. The automation is automatically saved to your dashboard as a JSON file.

Recording Tips

  • Perform actions slowly and deliberately for better accuracy
  • Avoid unnecessary scrolling or hovering
  • The recorder captures clicks, text input, and form selections

Running Your Automation

Start the Inference Server

The primary way to run browser automations locally is via the inference server.

optexity inference --port 9000 --child_process_id 0

Key parameters:

  • --port: HTTP port the local inference server listens on (e.g. 9000).
  • --child_process_id: Integer identifier for this worker. Use different IDs if you run multiple workers in parallel.

When this process starts, it exposes:

  • GET /health – health and queue status
  • GET /is_task_running – whether a task is currently executing
  • POST /inference – main endpoint to allocate and execute tasks

Call the /inference Endpoint

With the server running on http://localhost:9000, you can allocate a task by sending an InferenceRequest to /inference.

Request Schema

  • endpoint_name: Name of the automation endpoint to execute. This must match a recording/automation defined in the Optexity dashboard.
  • input_parameters: dict[str, list[str]] – all input values for the automation, as lists of strings.
  • unique_parameter_names: list[str] – subset of keys from input_parameters that uniquely identify this task (used for deduplication and validation). Only one task with the same unique_parameter_names will be allocated. If no unique_parameter_names are provided, the task will be allocated immediately.

Example curl Request

curl -X POST http://localhost:9000/inference \
  -H "Content-Type: application/json" \
  -d '{
    "endpoint_name": "extract_price_stockanalysis",
    "input_parameters": {
      "search_term": ["NVDA"]
    },
    "unique_parameter_names": []
  }'

On success, the inference server:

  1. Forwards the request to your control plane at api.optexity.com using INFERENCE_ENDPOINT (defaults to api/v1/inference).
  2. Receives a serialized Task object from the control plane.
  3. Enqueues that Task locally and starts processing it in the background.
  4. Returns a 202 Accepted response:
{
    "success": true,
    "message": "Task has been allocated"
}

Task execution (browser automation, screenshots, outputs, etc.) happens asynchronously in the background worker. You can see it running locally in your browser.

Monitor Execution

You can monitor the task on the dashboard. It will show the status, errors, outputs, and all the downloaded files.

Video Tutorial

Watch the video

Documentation

For detailed documentation, visit our documentation site:

Roadmap

We're actively working on improving Optexity. Here's what's coming:

  • 🔜 Self Improvement: Agent adaption using self exploration
  • 🔜 More Action Types: Additional interaction and extraction capabilities
  • 🔜 Performance Optimizations: Faster execution and reduced resource usage
  • 🔜 Advanced Scheduling: Built-in task scheduling and cron support
  • 🔜 Cloud Deployment: Simplified cloud deployment options

Have ideas or feature requests? Open an issue or join our Discord to discuss!

Contributing

We welcome contributions! Here's how you can help:

Reporting Issues

Found a bug or have a feature request? Please open an issue on GitHub. Include:

  • A clear description of the problem
  • Steps to reproduce
  • Expected vs actual behavior
  • Environment details (OS, Python version, etc.)

Discussions

Have questions, ideas, or want to discuss the project? Use GitHub Discussions to:

  • Ask questions
  • Share ideas
  • Discuss best practices
  • Get help from the community

Community

Join our Discord community to:

  • Chat with the founders directly
  • Get real-time support
  • Share your automations
  • Connect with other users

Join Discord →

Development Setup

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run pre-commit checks: pre-commit run --all-files
  5. Commit your changes (git commit -m 'Add some amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Releasing to PyPI and GitHub (maintainers)

Releases are automated via GitHub Actions:

  • When: Every push/merge to main bumps the 4th version component in pyproject.toml (e.g. 0.1.5.50.1.5.6), commits that change, creates a GitHub Release (tag + release notes), and publishes the new version to PyPI.
  • Setup (one-time):
    1. In PyPI: Account settings → API tokens — create a token with scope Entire account (or limit to project optexity).
    2. In GitHub: Repository or OrganizationSettings → Secrets and variables → Actions — add a secret:
      • Name: PYPI_API_TOKEN
      • Value: your PyPI API token (starts with pypi-).
  • Flow: Merge a PR to main → workflow runs → version bump commit is pushed → GitHub Release (e.g. v0.1.5.6) is created with generated release notes → package is built and uploaded to PyPI. The workflow skips when the last commit is the automated bump, so it does not loop.

Examples

Check out our examples directory for sample automations:

License

This project is licensed under the terms specified in the LICENSE file.

Support


Made with ❤️ by the Optexity team

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

optexity-0.1.5.11.tar.gz (72.9 kB view details)

Uploaded Source

Built Distribution

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

optexity-0.1.5.11-py3-none-any.whl (98.4 kB view details)

Uploaded Python 3

File details

Details for the file optexity-0.1.5.11.tar.gz.

File metadata

  • Download URL: optexity-0.1.5.11.tar.gz
  • Upload date:
  • Size: 72.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for optexity-0.1.5.11.tar.gz
Algorithm Hash digest
SHA256 a6465c23b89a209795cf62b0125809f6db6d190b01fe8abb9d606125021fb200
MD5 7a5f905d38931c895d2c928c5fa06676
BLAKE2b-256 bc4f2e5d23c2b2ea7c4e4e8a47f56f96e8a1a7e58628c2693e812f2119432cbe

See more details on using hashes here.

File details

Details for the file optexity-0.1.5.11-py3-none-any.whl.

File metadata

  • Download URL: optexity-0.1.5.11-py3-none-any.whl
  • Upload date:
  • Size: 98.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for optexity-0.1.5.11-py3-none-any.whl
Algorithm Hash digest
SHA256 fc3959e485496e1eaaa5a39573b851f084fa9530f7fdc42f9ee86a8c23b4b62e
MD5 bb8b73e864fb9038fde3bf449866cf63
BLAKE2b-256 8a68fd330c56f75a21712fff6abad3e1f9a83b8b18e7fde18273bef5c2c95b86

See more details on using hashes here.

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