Skip to content

Repository files navigation

AutomatiQ

Your activity, into automation.

Discord Python License Test Status Lint Status PyPI Version

AutomatiQ

Note

Alpha. Things will break and change. See VISION.md for what this project is trying to become.

AutomatiQ is a tool that aims to reduce hallucinations and simplify reverse engineering of websites for AI agents. It works by asking you to normally browse your target website, while AutomatiQ records all your interactions and network logs to produce an artifact folder. This artifact folder acts as a source of truth for your AI agent to build web automations, scrapers with higher accuracy, speed and quality without wasting tokens.

The good thing is, Agents will be able to generate direct HTTP-based scripts without ever touching browser during runtime, drastically increasing speed and reducing memory footprint.

Warning

Sensitive data: recordings are unredacted - request/response bodies, cookies, and credentials (including typed passwords) are stored verbatim. Treat every session folder as a secret: never commit or share it.

How it works

  1. Record. A visible Brave window opens with CDP instrumentation. Capture runs until you close the last window or call stop_recording.
  2. Compile. Network traffic is decoded into the workspace dump. With a vision model configured, action clips are annotated so the session folder describes what the user actually did.
  3. Consume. The session README.md documents every artifact. Your MCP client reads it and writes the script.

Quickstart

Paste the following into your agent harness:

Install AutomatiQ (`pip install automatiq`, Python 3.11+) and register an MCP server in this client:
name `automatiq`, transport `stdio`, command `automatiq`, args `[]`. After a restart if needed, 5 tools should be live

Install

Python 3.11+. A managed Brave is downloaded on first run if none is found.

pip install automatiq

MCP setup

{
  "mcpServers": {
    "automatiq": {
      "command": "automatiq"
    }
  }
}
Codex, OpenCode, and oh-my-pi

Codex (~/.codex/config.toml):

[mcp_servers.automatiq]
command = "automatiq"
args = []

OpenCode (opencode.json):

{
  "mcp": {
    "automatiq": {
      "type": "local",
      "command": ["automatiq"]
    }
  }
}

oh-my-pi (mcpServers):

{
  "mcpServers": {
    "automatiq": {
      "command": "automatiq"
    }
  }
}

For debugging, run the stdio server directly: automatiq or python -m automatiq.

Sponsors

Want to Sponsor this Project? Contact me via discord: @moltensteel

Our Sponsors

Maintaining this open-source project sustainably is made possible thanks to our sponsors.


NodeMaven - High Quality Proxies

NodeMaven — High Quality Proxy Infrastructure

Running web automation and scraping scripts reliably requires high-quality proxies to avoid rate limits, IP bans, and CAPTCHA blocks.

  • 99.9% uptime with sticky sessions up to 7 days.
  • All proxies have a fraud score under 97%No KYC required.
  • Earn up to 10% cashback on the data you use.

Special codes for AutomatiQ users:

  • AUTOMATIQ3535% off Mobile and Residential Proxies
  • AUTOMATIQ4040% off ISP (Static) Proxies

Swiftproxy - Residential & Static Proxies

Swiftproxy — Residential & Static Residential Proxies

Whether you're building browser agents, AI-powered automation workflows, or large-scale data pipelines, Swiftproxy provides the proxy infrastructure to keep your sessions stable and your blocks low.

  • 90M+ clean residential IPs across global locations.
  • Static residential proxies for stable sessions, account isolation, and multi-account workflows.
  • Non-expiring traffic on dynamic residential proxies — use it whenever you need it.
  • Free testing available to evaluate performance before integrating.

AutomatiQ community offer:

  • PROXY9010% off Residential and Static Residential Proxies

RapidProxy - Residential Proxy Network

RapidProxy — High-Performance Residential Proxy Network

Built for developers and teams running web scrapers, browser automation, AI agents, and monitoring tools at scale.

  • 90M+ residential IPs with smart rotation for resilient requests.
  • High-concurrency support for workloads at scale.
  • AI-powered CAPTCHA bypass to reduce interruptions.
  • Non-expiring traffic — use purchased bandwidth whenever you need it.

AutomatiQ community offer:

  • Free trial available.
  • Pricing starts at $0.65/GB.
  • RAPID1010% off

Tools

Tool Purpose
start_recording(url, session_name?, proxy?, include_video?) Opens a visible Brave window. Returns session_id immediately. Captures network, WebSockets, actions, and video.
stop_recording(session_id) Requests a graceful end (~1s). Compilation continues.
wait_for_completion(session_id?, timeout_s?) Blocks until a terminal state or timeout. Call in a loop. Sessions also end when the last browser window closes.
get_status(session_id?) One session, or (no id) a newest-first list.
annotate_user_interactions(session_id?, focus?) Re-runs vision analysis. Poll with wait_for_completion.

Workflow: start_recording → poll wait_for_completion → on completion, read readme_path first. Artifacts are plain files under ./automatiq_sessions/<session_name>/ in the MCP server's working directory (add that folder to .gitignore).

First run can sit in initializing for a minute while Brave downloads. macOS will ask for screen recording permission. Crashed sessions still save the recording plus crash_report.txt.

Vision model

AutomatiQ sees requests, WebSocket frames, and raw actions. A vision pass adds what those miss: which on-screen control was used, whether the step succeeded, and a session_flow narrative. That is the difference between a HAR-like dump and a session the client can turn into a script with less guessing.

Paste a key into ~/.automatiq/config.toml (created on first run):

[models]
recorder_api_key = "your-key-here"

The key must match the provider of [models] recorder (any LiteLLM provider). Keys are read from this file only, at the start of each recording. start_recording reports whether a key was found.

include_video=true (default) cuts an MP4 per action cluster for that analysis. Pass include_video=false when you want a faster capture and no clips. You can run annotate_user_interactions later if you add a key after the recording.

Configuration

Settings live in ~/.automatiq/config.toml, created with a commented template on first run. Missing keys from new releases are appended in place; the previous file is saved as config.toml.bak.

Priority: tool parameter > AUTOMATIQ_* env var > ~/.automatiq/config.toml > built-in defaults.

[models]
recorder = "gemini/gemini-3.1-flash-lite"
recorder_api_key = ""
base_url = ""                    # OpenAI-compatible local endpoint

[recorder_proxy]
enabled = false
server  = ""                     # http://user:pass@host:3128 or socks5://host:1080
# provider = "myproxies:rotate"  # importable "module:callable"

[telemetry]
enabled = true

Local models: set base_url and prefix the model with openai/ so LiteLLM uses the OpenAI protocol.

[models]
recorder = "openai/llama3.3"
base_url = "http://localhost:11434/v1"

Key edits apply on the next recording. Model changes need a server restart.

Proxy for the recording browser only (LLM calls and blocklist downloads are unchanged):

  • one-off: start_recording(url, proxy="socks5://127.0.0.1:1080")
  • permanent: [recorder_proxy] above
  • rotating: provider = "module:callable" that returns a proxy URL; falls back to server on failure

Precedence for proxy: tool param > AUTOMATIQ_RECORDER_PROXY_* > provider > server.

Environment variables
Env var Default Meaning
AUTOMATIQ_HOME ~/.automatiq Root for config, browsers, logs, blocklist
AUTOMATIQ_OUTPUT_DIR ./automatiq_sessions (server cwd) Session folders
AUTOMATIQ_RECORDER_MODEL gemini/gemini-3.1-flash-lite LiteLLM model string (must support images)
AUTOMATIQ_API_BASE unset OpenAI-compatible endpoint
AUTOMATIQ_BROWSER_CHANNEL release Brave channel (recorder is Brave-only)
AUTOMATIQ_BROWSER_EXECUTABLE_PATH auto Explicit browser binary
AUTOMATIQ_FPS 3 Screen capture frames/sec
AUTOMATIQ_LOG_LEVEL INFO stderr minimum; session log under ~/.automatiq/logs/ is DEBUG+
AUTOMATIQ_MERGE_GAP 1.5 Inactivity (s) that splits action clusters
AUTOMATIQ_SEGMENT_PAD 2 Padding (s) around each action clip
AUTOMATIQ_MAX_FRAMES_PER_PROMPT 8 Frames sampled per vision prompt
AUTOMATIQ_TELEMETRY 1 Set 0 to disable
AUTOMATIQ_BLOCKLIST_SOURCES empty name1=url1,name2=url2 hosts-file blocklists
AUTOMATIQ_RECORDER_PROXY_SERVER unset Proxy URL for the recording browser

Telemetry

Anonymous usage telemetry is enabled by default. It reports OS, Python and AutomatiQ versions, which tools ran and how often, durations, error classes, and session outcomes. It never reports URLs, file paths, prompts, or keys. Disable with [telemetry] enabled = false or AUTOMATIQ_TELEMETRY=0.

Development

git clone https://github.com/StoneSteel27/AutomatiQ.git
cd AutomatiQ
uv sync
uv run pre-commit install
uv run pytest -q
uv run automatiq   # MCP stdio server

License

MIT

About

Simplify Web Reverse-engineering for AI Agents

Topics

Resources

Contributing

Stars

166 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages