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.
- π― 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
Head to dashboard.optexity.com and sign up for a free account.
Once logged in, navigate to the API Keys section in your dashboard and create a new key.
Install the Optexity Recorder extension from the Chrome Web Store. This extension captures your browser interactions and converts them into automation workflows.
- Python 3.11+
- Git
Choose one of the options below.
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
python3 -m venv .venv
source .venv/bin/activateInstall Optexity directly from PyPI:
pip install optexity optexity install-browsers
OR
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
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.
The fastest way to create an automation is by recording your actions directly in the browser.
-
Navigate to the target website: Open Chrome and go to the website you want to automate (e.g.,
https://stockanalysis.com/) -
Start capturing: Click the Optexity Recorder extension icon and hit Start Capture
-
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
-
Stop and save: When finished, click Complete Capture. The automation is automatically saved to your dashboard as a JSON file.
- Perform actions slowly and deliberately for better accuracy
- Avoid unnecessary scrolling or hovering
- The recorder captures clicks, text input, and form selections
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 statusGET /is_task_runningβ whether a task is currently executingPOST /inferenceβ main endpoint to allocate and execute tasks
With the server running on http://localhost:9000, you can allocate a task by sending an InferenceRequest to /inference.
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 frominput_parametersthat uniquely identify this task (used for deduplication and validation). Only one task with the sameunique_parameter_nameswill be allocated. If nounique_parameter_namesare provided, the task will be allocated immediately.
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:
- Forwards the request to your control plane at
api.optexity.comusingINFERENCE_ENDPOINT(defaults toapi/v1/inference). - Receives a serialized
Taskobject from the control plane. - Enqueues that
Tasklocally and starts processing it in the background. - Returns a
202 Acceptedresponse:
{
"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.
You can monitor the task on the dashboard. It will show the status, errors, outputs, and all the downloaded files.
For detailed documentation, visit our documentation site:
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!
We welcome contributions! Here's how you can help:
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.)
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
Join our Discord community to:
- Chat with the founders directly
- Get real-time support
- Share your automations
- Connect with other users
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run pre-commit checks:
pre-commit run --all-files - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Check out our examples directory for sample automations:
This project is licensed under the terms specified in the LICENSE file.
- π Documentation
- π¬ Discord Community
- π Report Issues
- π Discussions
- π§ Email Support
Made with β€οΈ by the Optexity team