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 (overview, name, rule)
  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: {containers: [{situations: [...]}]} in lock order (does not pick a Card; no why, not ranked)
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 shelf), limit (page size, default 10), and offset. Follow next_offset until it is absent. It does not take a file target and does not return a host verdict (host: "citations_only"). Cited criteria help you decide; the decision is yours. If a query matches nothing, query_fallback is true and you still see the unfiltered shelf, paged.

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.2.3.tar.gz (203.2 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.2.3-py3-none-any.whl (303.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: open_ux-0.2.3.tar.gz
  • Upload date:
  • Size: 203.2 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.2.3.tar.gz
Algorithm Hash digest
SHA256 cfe3401c1bfc274ed49017a945ba9c327e8791ad2281e5a2aaf3a50fda5ba308
MD5 7566df81da6b6afad3b093f4af679f48
BLAKE2b-256 9ef97a7e37b1bb9d1a5d820e0ceae399fd764c73bd222a8710278a3c2c6805e9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: open_ux-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 303.6 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.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e572cb6144cd0a7e03d6ac92e1d1a9079f02e704d7384408e526bc7d1d47af73
MD5 00e626dea134be0ad240a19b962d0736
BLAKE2b-256 a23999ba2a2dbe4d1702dba545b0759203fbf14f55be69910f9b88f31068ed64

See more details on using hashes here.

Provenance

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

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.4

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