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.
Metadata
Release files for ux-swarm 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ux_swarm-1.1.2.tar.gz | 26.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ux_swarm-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.2 kB
Release files / ux_swarm-1.1.2.tar.gz
| Download URL | ux_swarm-1.1.2.tar.gz |
|---|---|
| Size | 26.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eae02143e967af5914d0d7495da025ad82bbb8e324c3d9e80ba40226d709303e
|
|
BLAKE2b-256 checksum How to use checksums |
bea3eee25cd33ac1a8e542d95738931d1653f19fa488562fe43677c353111f1f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / ux_swarm-1.1.2-py3-none-any.whl
| Download URL | ux_swarm-1.1.2-py3-none-any.whl |
|---|---|
| Size | 31.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee2846dd7fdd68d4db02c217bddb323b998a6300df830b0caf30abb062f9c5d0
|
|
BLAKE2b-256 checksum How to use checksums |
e00e59d9cbc5e3ca12d55c1a25d7a377735a7f42cde292d71d486f3ff3b5770a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|