Technology
Show HN: Argus, agentic QA for teams whose coding agents move faster than QA
Key Points
AI agents that test your UI like a real user — no scripts to write, no selectors to maintain. Argus is a visual UI testing agent. Describe a test, point it at an HTTP(S) page, and watch it inspect the page in an isolated Playwright browser context.
AI agents that test your UI like a real user — no scripts to write, no selectors to maintain.
Argus is a visual UI testing agent. Describe a test, point it at an HTTP(S) page, and watch it inspect the page in an isolated Playwright browser context. Runs, timelines, screenshot references, and structured reports are captured automatically.
Argus finds the bugs you didn't write tests for. Point it at a page, describe what "working" looks like, and an autonomous agent explores your UI the way a real user would — clicking, typing, scrolling — then hands you a structured report with screenshots and a timeline. No test scripts to maintain, no flaky selectors to babysit.
- Agentic, not scripted — the agent reasons about the page and adapts, it doesn't replay a fixed script
- Fits your stack — built on Playwright, works against localhost and private-network apps
- Zero setup ceremony — start testing in minutes
The fastest way to run Argus: no install, no API keys to manage, nothing to self-host.
Get started at argustest.com.
A run isn't a single model call — it's five agents handing off to each other, and you can watch each one work in the live run view:
- Validator — checks the target URL and test description are actually testable before a run starts.
- Comprehender — reads the test description and breaks it into distinct test cases.
- Explorer — crawls the app first, mapping out pages and the actions available on each.
- Strategist — turns the map and test cases into a concrete step-by-step plan.
- Executor — runs the plan in a real browser: navigating, typing, clicking, and confirming outcomes as it goes.
Nothing happens in a black box — each agent streams its reasoning as it works, down to individual actions like "Navigating to /companies" or "Confirming 'Airbnb' is on the page," so you see the app get mapped, the plan get built, and the test get executed, live.
A test is just a description of intent — Argus figures out how to interact with the page. For example, pointed at Y Combinator's site:
Target: https://www.ycombinator.com
Test the startup directory.
1. From the homepage, navigate to the companies/startup directory.
2. Search for a well-known YC company by name (e.g. "Airbnb") and confirm it appears in the results.
3. Filter the directory by a specific batch (e.g. "Winter 2024") and confirm the listed companies update to match.
4. Open a company's profile from the results and confirm its name, one-line description, batch, and website link all render correctly.
5. Navigate back to the directory and confirm the search/filter state behaves as expected — either preserved or reset, whichever the page is designed to do.
6. Resize the viewport to 375px width and confirm the nav collapses into a mobile menu, and the directory list stays scrollable and usable with no overlapping elements.
Fail the test if the known company doesn't appear in search results, if the batch filter doesn't actually filter the list, if a company profile is missing expected fields, or if the mobile layout breaks.
Argus runs this like a person would — clicking through the flow, reading the page to judge success or failure — and returns a timeline, screenshots at each step, and a pass/fail report with the reasoning behind it.
Argus is source-available and fully local-first — SQLite storage, no telemetry, your data and screenshots never leave your machine. Prefer to self-host? Follow the steps below.
- Python 3.11+,
uv
, and Node.js 20.19+ or 22.12+ - A Gemini API key for real runs
cp .env.example .env
# Set GEMINI_API_KEY in .env
uv sync --dev
uv run playwright install chromium
cd frontend && npm install && npm run build && cd ..
uv run uvicorn argus.app:app --reload --env-file .env
Open http://localhost:8000. For frontend hot reload, run npm run dev
in frontend/
alongside Uvicorn and open http://localhost:5173.
Configuration is environment-only:
| Variable | Default | Purpose |
|---|---|---|
GEMINI_API_KEY |
— | Required for real execution |
GEMINI_MODEL |
gemini-2.5-flash |
Gemini REST model |
ARGUS_DATA_DIR |
data |
SQLite and screenshot directory |
ARGUS_HEADLESS |
true |
Playwright browser mode |
ARGUS_RUN_TIMEOUT |
300 |
Run timeout in seconds |
Argus accepts normal HTTP(S) targets, including trusted localhost and private-network apps. It rejects credentials and sensitive query parameters in target URLs, and never stores provider secrets, typed browser values, or inspected page content. The settings screen only shows whether provider configuration is present.
cp .env.example .env
# Set GEMINI_API_KEY in .env
docker compose up --build
The UI is available at http://localhost:8000 and persistent data is written to ./data
.
uv run pytest
uv run ruff check argus tests
uv run pyright argus tests
cd frontend && npm run typecheck && npm run lint && npm run build
argus/runtime
: provider-neutral agent, message, tool, and session boundaryargus/providers/gemini.py
: rawhttpx
Gemini REST/SSE adapter (no provider SDK)argus/pipeline.py
: planning, one browser agent, evidence capture, and reportingargus/store.py
: SQLite runs, events, screenshots, and reportsargus/app.py
: REST API, reconnectable per-run WebSockets, and built UI servingfrontend
: dashboard/composer, live session, history, report, and read-only settings
API docs are available at /docs
. All data is local; there is no authentication or multi-user isolation in this release.
Argus is source-available under the Argus Source-Available License 1.0 (ASAL-1.0).
- Individuals & Small Teams (< 100 members): Free to use, modify, and self-host for both commercial and non-commercial purposes.
- Enterprises (100+ members): Requires a commercial license. Contact us at [email protected] to get set up.
- Releases automatically convert to the MIT License after 3 years.