Skip to main content

Open UX

Open UX

Cited UX rules agents can list, fetch, and audit against.

Stop inventing UX guidance from memory. Open UX is a shared, open-source catalog of UX rules with citations, plus tools so an agent can find the right criteria and apply them to work it already has.

Hosted: open-ux.dev · License: MIT

What it is

A curated, machine-readable store of UX guidelines and a small tool surface so an agent can:

  1. Browse situations — pick a compose job (Situation Card) that matches the work
  2. Fetch criteria — get cited rules for that job (rule, pass_when, fail_when)
  3. Apply locally — the client judges the artifact; the host never takes the file and never returns pass/fail

There is no server-side LLM. One shared catalog for every caller — an account unlocks the hosted API; it does not give you a private rulebook.

What it is not

  • A generative design copilot or “does this look good?” scorer
  • A WCAG / accessibility compliance checker (we do not claim conformance, contrast audits, or screen-reader naming)
  • A closed corpus — the catalog and server are open source; you can self-host the same tools

Features

  • Cited catalog — one JSON file per rule, with sources you can follow
  • Public catalog site — browse rules in the browser at /catalog
  • Agent tools — list / search / get guidelines; suggest situations; audit by need (job or ids)
  • Hosted or self-host — waitlist + API key on the hosted service, or stdio locally with no auth
  • Privacy-minded hosted mode — we do not store UI payloads or prompts; see Privacy. How we cite rules: Sources

Quick start

Hosted

  1. Request access at open-ux.dev/invite
  2. After approval, redeem your invite for a bearer API key (uxmcp_…)
  3. Point your MCP client at the hosted /mcp endpoint with that key
  4. Call list_guidelines or audit with a job (no file upload)

Tools return 401 without a key.

Self-host

pip install open-ux
python -m open_ux validate-catalog
python -m open_ux stdio
OPEN_UX_MODE=hosted python -m open_ux http

The wheel includes the catalog. A change to catalog/ or the package source on master publishes a new PyPI patch so pip and hosted carry the same rules.

Browse the local site at http://127.0.0.1:8080/catalog. Point MCP clients at local stdio, or at hosted /mcp with a uxmcp_ key.

Contribute from this repo

python -m venv .venv && source .venv/bin/activate
pip install -e "packages/mcp[dev]"
python -m open_ux validate-catalog
python -m open_ux stdio

Tests

cd packages/mcp && python -m pytest

Claude plugin

Pack in clients/claude. It connects to the catalog; it does not ship a second copy of the rules. .cursor and .claude in this repo are mounts (symlinks) into that pack.

claude plugin marketplace add 3dyonic/open-ux
claude plugin install open-ux@open-ux

Enable, then paste a key from open-ux.dev/invite.

Cursor uses the same pack (.cursor-plugin/ + mcp.json). Set OPEN_UX_API_KEY under Plugins → Configure. Submit: cursor.com/marketplace/publish.

Agent tools

Tool Purpose
list_situations Page Situation Cards (optional container returns that kind's specs)
get_situation One Card plus facets / rule pointers
suggest_situations Catalog map: lock-order Card overviews (does not pick a Card)
list_guidelines Paged catalog index
search_guidelines Scope by jobs / lane; BM25-order by query; no rule bodies
get_guideline Full rule body by id
audit Say the need (jobs Card/container or guideline_ids); get matching criteria

audit accepts optional query (orders the pack) and limit (default 10, max 50). It does not take a file target and does not return a host verdict. If nothing matches, you get an empty list and a note.

Catalog layout

catalog/
  rules/{category}/{source}/   one JSON file per rule
  index.json                   generated index
  jobs.json                    Situation tree
  schema.json                  rule schema
  MANIFEST.md                  human map (no rule bodies)

Rules are never forked per tenant. Soft size budget ~50–100 KB; hard ceiling ~384 KB. Details: catalog/README.md.

Repository layout

packages/mcp      Python server (FastMCP)
catalog/          shared rules + schema
clients/claude    thin Claude plugin
docs/             privacy, assets

Python package: open-ux · npm / plugin scope: @3dyonic/open-ux

Hosted vs self-host

Hosted HTTP Self-host (stdio)
Auth Waitlist → invite → bearer uxmcp_ None
Rate limits Per-key and per-IP on /mcp None
Telemetry Aggregated usage (key hash, tools, rule ids) Off

Privacy on the hosted product: open-ux.dev/privacy (Eng constraints also in docs/PRIVACY.md). How we write and cite catalog rules, and how to ask us to change or remove one: open-ux.dev/sources.

Contributing

Issues and pull requests are welcome. Keep the catalog cited — every rule should point at a real source. Prefer small, reviewable PRs: one concern per change (catalog rows, server behavior, or docs).

Before opening a PR:

python -m open_ux validate-catalog
cd packages/mcp && python -m pytest

License

MIT

Download files

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

Source Distribution

open_ux-0.1.4.tar.gz (201.4 kB view details)

Uploaded Source

Built Distribution

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

open_ux-0.1.4-py3-none-any.whl (303.0 kB view details)

Uploaded Python 3

File details

Details for the file open_ux-0.1.4.tar.gz.

File metadata

  • Download URL: open_ux-0.1.4.tar.gz
  • Upload date:
  • Size: 201.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_ux-0.1.4.tar.gz
Algorithm Hash digest
SHA256 0e8c369f54c08ab7f37c10760820340018bc5826de9efcccf0aa3df48626815a
MD5 b1cee6ba2993ce5c02d1f62404e4d0b5
BLAKE2b-256 cde011a96ba9ceed9d5c8ed143d9ddef859c4b76ee4c4477af3061a077e5ca3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ux-0.1.4.tar.gz:

Publisher: publish.yml on 3dyonic/open-ux

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

File details

Details for the file open_ux-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: open_ux-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 303.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_ux-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ec6157b8b621f0fb218b14fe683acfe6540e43bb4f779f4beebae58d37f1fc1b
MD5 4a2662f4b51fb77293d086bbbadd28a5
BLAKE2b-256 b2e2f51521fe5bacc46310292f83565eba14ab4d2d3eba3a1d0ee7d10174cfb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ux-0.1.4-py3-none-any.whl:

Publisher: publish.yml on 3dyonic/open-ux

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

Release history Release notifications | RSS feed

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page