Skip to main content

Camel AI

CI License: MIT Python

Automate and test any software through its real UI — no target-app API needed.

Camel AI drives software the way a human does: clicking, typing, and reading the screen. Web apps via Playwright, native Windows apps via UI Automation, and anything else via vision (screenshot + coordinate clicks). It audits UI/UX (dead buttons, console errors, broken flows) and automates goal-driven tasks.

The only API camel ever touches is an LLM API (the brain — and you can use a subscription instead). It never needs the target software's API, because it operates the UI directly. That's the point: it works on the software that has no API, a paywalled API, or one you can't get access to.

Two ways to drive it, sharing one LLM-agnostic core:

  1. MCP server — plug into Claude Code, Claude Desktop, Cursor, or Windsurf. Uses your existing subscription. No API key.
  2. Any-LLM agent — point your own model (OpenAI, Ollama, LM Studio, vLLM, Groq, …) at it via a tiny LLMProvider interface.

See it

It automates a login by itself (types the credentials, clicks in, lands on the app):

Camel AI automating a login

Enterprise dashboard (camel dashboard) — audit sites, see findings, use your logged-in browser:

Camel AI dashboard

Every run produces a fix-brief your AI coder can act on:

Camel AI audit report

Install (one line) + connect a free brain

Windows

irm https://raw.githubusercontent.com/DilawarShafiq/camel-ai/main/install.ps1 | iex

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/DilawarShafiq/camel-ai/main/install.sh | bash

The installer sets everything up (Python, the browser engine) and launches a setup wizard. Pick any brain and paste one key — Gemini, OpenAI, Anthropic Claude, OpenRouter (hundreds of models), Groq, Mistral, DeepSeek, Together, a local Ollama model, or any custom OpenAI-compatible endpoint. The default is Gemini's free tier (no credit card) so it costs nothing out of the box, but you're never locked to one provider. Then:

camel dashboard           # enterprise web UI (audit, findings, see your windows)
camel audit https://mysite.com        # a full UI/UX test → HTML report (no brain needed)
camel login https://portal.com        # sign in once; reuse it with --real-browser
camel audit https://portal.com --real-browser   # test the app behind your login
camel run "download this month's invoices"       # AI does a goal
camel jobs add "https://mysite.com" --at 09:00   # schedule it
camel daemon              # run scheduled jobs autonomously
camel see                 # show every open window + a screenshot
camel whatsapp connect    # chat with Camel AI from your phone (experimental)

You paste one free API key; you never touch Python or a terminal beyond the install line.

Standard install (PyPI)

Camel AI is published on PyPI as aicamel:

pip install "aicamel[desktop,vision]"    # or: pipx install / uv tool install
python -m playwright install chromium
camel setup

Enterprise / scaling install (Docker)

For teams, CI, and servers — a reproducible, versioned container (no build-from-source on each machine):

docker run -p 8765:8765 ghcr.io/dilawarshafiq/camel-ai:latest        # dashboard
docker run ghcr.io/dilawarshafiq/camel-ai audit https://mysite.com  # one-off audit

The image (see Dockerfile) ships the browser engine baked in and runs the web, vision, dashboard, scheduler, and MCP features headless — ideal for CI gates and scheduled runs. Published to GHCR on every release. (Native desktop automation is Windows-only and not in the Linux image.)

CLI

camel audit https://example.com --out report.html   # full web audit → HTML report
camel doctor                                         # check browsers + extras
camel mcp-config                                     # print the MCP client snippet
camel                                                # run the MCP server (stdio)

Goal-driven, multi-agent (inside your MCP host)

Drop integrations/claude/ into your Claude Code project (.claude/agents/ and .claude/skills/). Then just say what you want:

"Test the checkout flow on localhost:3000 and tell me what breaks."

The ui-test skill plans it and hands execution to the ui-tester subagent (one per flow, in parallel for broad audits). Your subscription is the brain — no API key. The run is visible and pauses for you on 2FA/login.

Use as an MCP server (subscription users, no API key)

Add to your MCP client config (Claude Desktop / Cursor / Claude Code):

{
  "mcpServers": {
    "camel": { "command": "camel" }
  }
}

Then ask your AI: "Open http://localhost:3000 and audit every button." Set CAMEL_HEADLESS=1 to hide the browser window.

Tools exposed

  • open_page(url) — navigate
  • snapshot() — title, url, every visible interactive element + selector
  • click(target) / type_text(target, text) — target by CSS selector or plain visible text (e.g. click("Sign in")); real controls win over stray text
  • audit_interactivity(max_elements) — clicks everything, flags dead controls, navigations, dialogs, DOM changes, console errors (resets to a clean state before each control so verdicts don't contaminate each other)
  • check_accessibility() — images without alt, unnamed buttons/links, unlabeled fields, missing page title/lang, duplicate ids (no external library)
  • get_console_errors() — JS errors, page errors, failed requests
  • screenshot() — full-page PNG path
  • plus desktop_*, vision_*, and wait_for_login (see below)

Tests

pip install -e ".[dev]" && pytest — offline suite over the report logic and the interactivity/accessibility classification (against a local HTML fixture).

Use with your own LLM (any model)

import asyncio
from camel.agent import run_audit, OpenAICompatibleProvider

# Local Ollama — no API key
prov = OpenAICompatibleProvider(model="llama3.1",
                                base_url="http://localhost:11434/v1")
print(asyncio.run(run_audit(prov, "Audit every button on http://localhost:3000")))

Any LLM works — implement LLMProvider.chat(messages, tools) -> message.

Supported systems (one universal package, auto-detected)

camel is pure Python — one wheel (py3-none-any) runs everywhere. The installer/pip auto-detects the OS and CPU and pulls the right pieces; you never choose a build. Per-OS desktop drivers install themselves via environment markers (Windows→uiautomation, macOS→atomacos, Linux→pyatspi).

System Web + vision Native desktop Notes
Windows 10/11 (64-bit, x64/ARM64) ✅ UIA 32-bit unsupported (browser engine needs 64-bit)
macOS 12+ (Intel & Apple Silicon) ⚠️ AX (experimental) grant Accessibility permission
Linux (glibc; x86_64 & ARM64) ⚠️ AT-SPI (experimental) needs AT-SPI packages

Requires Python 3.10+. camel doctor reports your platform and what's ready. (macOS/Linux native desktop drivers are written but not yet CI-verified.)

Testing → a fix brief for an AI coder

The point of the testing side isn't a report a human skims — it's a structured hand-off another AI/developer can act on to repair the app. Every run produces a fix brief (schema: camel.fixbrief/v1): ranked findings, each with a location, the evidence observed, the user impact, and a concrete suggested_fix. Duplicate issues are collapsed with an occurrence count.

camel audit https://mysite.com --out report.html --fix-brief fixes.json

Then hand fixes.json to Claude Code / any coding agent — or pull it live via the fix_brief MCP tool — and it fixes the app into a logical, non-broken product. Works across any industry app (medical billing, financial, marketing…) that runs in a browser, on any OS.

Three drivers — web, desktop, anything

Install the extras you need:

pip install 'aicamel[desktop,vision]'      # Windows desktop + universal fallback
Driver Reaches How it "sees" Reliability
Web (browser.py) Websites / web apps DOM + a11y tree (Playwright) High
Desktop (desktop.py) Native Windows apps UI Automation control tree Good
Vision (vision.py) Anything on screen Screenshot → LLM picks coords Fallback

Strategy: try Web/Desktop first (structured, fast, precise); drop to Vision only when there's no accessibility info to read.

Human-in-the-loop (2FA / CAPTCHA / login) — no API

wait_for_login(message, until_url_contains=..., until_selector=...) pauses the automation, lets you finish the sensitive step in the visible browser, and resumes automatically the moment it detects success. The automation never touches your 2FA code. An optional Notifier (e.g. WhatsApp) can ping you that a handoff is waiting.

Architecture

        goal (natural language) ──► MCP host (subscription = brain, multi-agent)
                                          │ calls camel MCP tools
   ┌───────────────┬──────────────────────┼───────────────┬────────────────┐
   Web driver     Desktop driver        Vision driver   Human-handoff    Notifier
  (Playwright)   (Windows UIA)      (screenshot+click)   (2FA/CAPTCHA)  (WhatsApp…)
        └──────────────┴───────── shared core, one interface ─────────────────┘

Frontends:  server.py (MCP → subscription, no API key)
            agent.py  (any LLM → OpenAI-compatible / local Ollama)

Download files

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

Source Distribution

aicamel-0.0.9.tar.gz (241.3 kB view details)

Uploaded Source

Built Distribution

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

aicamel-0.0.9-py3-none-any.whl (61.8 kB view details)

Uploaded Python 3

File details

Details for the file aicamel-0.0.9.tar.gz.

File metadata

  • Download URL: aicamel-0.0.9.tar.gz
  • Upload date:
  • Size: 241.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for aicamel-0.0.9.tar.gz
Algorithm Hash digest
SHA256 277ca35ffc08c3172ac519e6320b579e18dfe5eed78e4ca8868aca584dc52b63
MD5 b10b048670787649a8f85769d23c2552
BLAKE2b-256 e55cbc98ec0551a376e05387b677b4cda1cc85caf4c2bc20bd603f2cccb566c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for aicamel-0.0.9.tar.gz:

Publisher: publish.yml on DilawarShafiq/camel-ai

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

File details

Details for the file aicamel-0.0.9-py3-none-any.whl.

File metadata

  • Download URL: aicamel-0.0.9-py3-none-any.whl
  • Upload date:
  • Size: 61.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for aicamel-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 fb94333f6ecd9915f2b16772f99b64230480c85bae35be1fd7312fff848aefc0
MD5 55739c8a4ecb3a7bb440530e82d773b1
BLAKE2b-256 310ce8b4c4390e97da7d7ab058c1929d9f10eb6df86e22e7075b2f2456ec3bd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for aicamel-0.0.9-py3-none-any.whl:

Publisher: publish.yml on DilawarShafiq/camel-ai

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