Skip to content

How WezTerm’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score18/100

Agent-ready 25.2 × 0.30 = 7.56

API quality 0.0 × 0.20 = 0.00

Openness 40.2 × 0.20 = 8.04

Built-in AI 0.0 × 0.15 = 0.00

Automation 12.8 × 0.15 = 1.92

(7.56 + 0.00 + 8.04 + 0.00 + 1.92) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 17.52 ÷ 1.00 = 17.5

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready25.2/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt
  • [probe] https://wezterm.org/features.html.mdPROBE docs-md: HTTP 404 at https://wezterm.org/features.html.md

Run the product headlessly / in CI for automationweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlofficial CLI documented at https://wezterm.org/cli/cli/index.html

Plug MCP servers into this product so it can use their toolsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Connect an agent via an official MCP serverweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlofficial CLI documented at https://wezterm.org/cli/cli/index.html
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.

Drive the product through a documented public APIweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlofficial CLI documented at https://wezterm.org/cli/cli/index.html
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt
  • [probe] https://wezterm.org/openapi.jsonPROBE openapi: all candidate paths 404 (https://wezterm.org/openapi.json, https://wezterm.org/swagger.json, https://wezterm.org/api/openapi.json, https://wezterm.org/.well-known/openapi.json)

Issue scoped/least-privilege API credentials for an agentweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Build against official SDKsweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 42.8 ÷ 170 × 100 = 25.2

API quality0.0/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt
  • [probe] https://wezterm.org/features.html.mdPROBE docs-md: HTTP 404 at https://wezterm.org/features.html.md
  • [probe] https://wezterm.org/openapi.jsonPROBE openapi: all candidate paths 404 (https://wezterm.org/openapi.json, https://wezterm.org/swagger.json, https://wezterm.org/api/openapi.json, https://wezterm.org/.well-known/openapi.json)

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt
  • [probe] https://wezterm.org/features.html.mdPROBE docs-md: HTTP 404 at https://wezterm.org/features.html.md
  • [probe] https://wezterm.org/openapi.jsonPROBE openapi: all candidate paths 404 (https://wezterm.org/openapi.json, https://wezterm.org/swagger.json, https://wezterm.org/api/openapi.json, https://wezterm.org/.well-known/openapi.json)

Test against a sandbox environment without touching production dataweight 1

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt
  • [probe] https://wezterm.org/features.html.mdPROBE docs-md: HTTP 404 at https://wezterm.org/features.html.md
  • [probe] https://wezterm.org/openapi.jsonPROBE openapi: all candidate paths 404 (https://wezterm.org/openapi.json, https://wezterm.org/swagger.json, https://wezterm.org/api/openapi.json, https://wezterm.org/.well-known/openapi.json)

API quality = 0.0 ÷ 60 × 100 = 0.0

Openness40.2/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [probe] https://wezterm.org/openapi.jsonPROBE openapi: all candidate paths 404 (https://wezterm.org/openapi.json, https://wezterm.org/swagger.json, https://wezterm.org/api/openapi.json, https://wezterm.org/.well-known/openapi.json)
  • [probe] https://wezterm.org/llms.txtPROBE llms.txt: HTTP 404 at https://wezterm.org/llms.txt

Export all of my data in open formats and leaveweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://wezterm.org/config/files.htmlwezterm will watch the config file that it loads; if/when it changes, the configuration will be automatically reloaded
  • [claimed-docs] https://wezterm.org/config/files.htmlwezterm allows overriding configuration values via the command line
  • [community] https://news.ycombinator.com/item?id=41223934One thing I was looking for just yesterday was a way to dump my terminal's scrollback - escape sequences and all - to stdout... wezterm does with get-text.
  • [community] https://hn.algolia.com/api/v1/items/45751995What killed iTerm2 for me was the fact that syncing settings between machines with chezmoi was next to impossible. With Wezterm it's just Lua code, easy to diff and easy to apply.

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Self-host the core productweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://wezterm.org/multiplexing.htmlA connection to a remote wezterm multiplexer made via an ssh connection is referred to as an _SSH domain_.
  • [claimed-docs] https://wezterm.org/ssh.htmlwezterm uses an embedded ssh library to provide an integrated SSH client. The client can be used to make ad-hoc SSH connections to remote hosts
  • [claimed-docs] https://wezterm.org/ssh.htmlTake a look at the multiplexing section for an alternative configuration that connects to a remote wezterm instance and preserves your tabs.
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.

Openness = 40.2 ÷ 100 × 100 = 40.2

Built-in AI0.0/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [probe] https://wezterm.org/cli/cli/index.htmlofficial CLI documented at https://wezterm.org/cli/cli/index.html

Delegate tasks to a built-in AI assistant inside the productweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Operate the product with natural-language commandsweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Built-in AI = 0.0 ÷ 20 × 100 = 0.0

Automation12.8/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe _cli_ subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.
  • [probe] https://wezterm.org/cli/cli/index.htmlofficial CLI documented at https://wezterm.org/cli/cli/index.html

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 3 (quality) × 0.6 (partial) = 5.4 of 30 max

  • [claimed-docs] https://wezterm.org/config/files.htmlwezterm will watch the config file that it loads; if/when it changes, the configuration will be automatically reloaded
  • [claimed-docs] https://wezterm.org/config/files.htmlwezterm will watch the config file that it loads; if/when it changes, the configuration will be automatically reloaded and the majority of options will take effect immediately.
  • [claimed-docs] https://wezterm.org/shell-integration.htmlThe shell integration provides a shell function named __wezterm_set_user_var which can be used to set your own user vars.
  • [claimed-docs] https://wezterm.org/cli/cli/index.htmlThe cli subcommand interacts with a running wezterm GUI or multiplexer instance, and can be used to spawn programs and manipulate tabs and panes.
  • [probe] https://wezterm.org/cli/cli/index.htmlPROBE runtime (recorded 2026-09-04, wezterm 20240203 via brew cask): fully headless control loop verified — `wezterm-mux-server --daemonize`, then `wezterm cli spawn --new-window` returned a pane-id, `wezterm cli send-text --pane-id N "echo PA_PROBE_OK"` delivered, `wezterm cli get-text` read the pane content back, `wezterm cli list` enumerated windows/tabs/panes; no GUI session required.

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Automation = 10.2 ÷ 80 × 100 = 12.8