Synthetic UX testing
Project description
ux-swarm
Point a swarm of synthetic users at any URL or screenshot, give them a task, and see their completion rate and pain points.
Highlights
- Instant testing - simulate 20 users in under a minute; no scheduling, no interviews
- Repeatable - run before and after a deploy to track whether completion rate improved
- Real signal - not a replacement for user testing, but genuine findings at a fraction of the cost and time
- Customizable personas - define your own user types and weight the swarm to match your real audience
- Accessibility included - screen reader personas ship out of the box
Overview
ux-swarm is a CLI tool for synthetic UX testing built for frontend developers who want fast, quantifiable signal during development or after launch. Share a URL or screenshot, give it a task, watch a swarm of distinct user personas try to execute it, and review completion rates, feedback, and ranked pain points.
Two modes: browser swarm sends each agent into a live Playwright session to navigate a site step-by-step — good for flows like signup, checkout, or cancellations. Screenshot swarm runs faster and cheaper, using LLM vision to evaluate an image or UI — perfect for quick reviews and mockups before you have a live URL.
Authors
Built by @masonomara at O'Mara Technology.
Usage
# browser swarm — live URL
swarm https://example.com complete the checkout flow
# screenshot swarm — image or mockup
swarm mockup.png find where to contact support
# limit agents or steps
swarm https://example.com create an account --users 10 --max-steps 5
Installation
npm
npm install -g ux-swarm
swarm config
pip
pip install ux-swarm
swarm config
uv
uv tool install ux-swarm
swarm config
Requires Python 3.11+. The npm package installs the Python tool underneath — Python must be present on your system. swarm config walks through provider selection, API key, model, and Playwright setup on first run.
Feedback and Contributing
Found a bug or have a feature request? Open an issue. For questions or ideas, start a Discussion.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ux_swarm-1.0.1.tar.gz.
File metadata
- Download URL: ux_swarm-1.0.1.tar.gz
- Upload date:
- Size: 26.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
929648165320a27794e424c21eb286737d35c02d62f479d15fcd6903663c3e8a
|
|
| MD5 |
de5d8a4a2aa18d7b066151c0a2d64e95
|
|
| BLAKE2b-256 |
ee33e458d4cf11bf0382182eb12c4ec62f53ceb0744390b2c4753fe8acd5093e
|
File details
Details for the file ux_swarm-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ux_swarm-1.0.1-py3-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4af512cd0d88941bc9d1d886ac53f7de5609d9983e86b17ff3c17137b74b5a68
|
|
| MD5 |
8ac6963e09d748abdaf57535f499db6d
|
|
| BLAKE2b-256 |
4a8724939c73b40bad36dc5d0871ba64b581beec349a7f238327613c4e3311f7
|