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 filter)
get_situation One Card plus facets / rule pointers
suggest_situations Rank Cards from task text (allowlisted)
list_guidelines Paged catalog index
search_guidelines Filter index by query / jobs / lane
get_guideline Full rule body by id
audit Say the need (jobs Card/container or guideline_ids); get matching criteria

audit accepts optional query 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.3.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.3-py3-none-any.whl (302.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: open_ux-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 505724729535e52047fd16f4c5c6874d2f64f0641ea07372692f31a07779a24f
MD5 11860c34934f861dbc1ae6f5bcac5482
BLAKE2b-256 3f15d099d7dffdbe73a5add18745f2a0a6344f34ef699d4fababec1734e9cd74

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ux-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: open_ux-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 302.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 eba09cff1698d92d2f618d81226641c50ce5e9ac4123469af3d4ad17404857be
MD5 ba4c5b8b08395345b454d7c3674db00e
BLAKE2b-256 ab6381893f2fe909ae25401c3fc296d87dc8561f70a39d6d29f367fdd75f5142

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_ux-0.1.3-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

0.1.4

2 files

This release

0.1.3 This release

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