webui

webui is a command for coding agents from alaliqing/claude-paper. It costs 6 tokens per session (951 once invoked), scanned C, original, MIT.

A command that starts the Claude Paper web viewer, a browser-based interface for viewing Claude Paper content. It installs missing web dependencies and builds the production Nuxt.js server when needed.

In plain words
What is it for?
Opening the Claude Paper web interface, installing its required packages on first use, and rebuilding the viewer when its plugin version changes.
Why use it?
It provides a single way to launch the viewer and handles first-run setup or rebuilds after plugin updates. Nuxt.js is the web framework used by this viewer.

Command

Part of the claude-paper plugin — 3 skills, 1 command, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/alaliqing/claude-paper/webui
Clone the repo
git clone --depth 1 https://github.com/alaliqing/claude-paper

Or install claude-paper, the plugin that ships this one along with the rest of its 3 skills, 1 command, 1 hook.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for webui

README.md
[![agentmods](https://agentmods.dev/badge/commands/alaliqing/claude-paper/webui.svg)](https://agentmods.dev/commands/alaliqing/claude-paper/webui)
Your own site
<a href="https://agentmods.dev/commands/alaliqing/claude-paper/webui"><img src="https://agentmods.dev/badge/commands/alaliqing/claude-paper/webui.svg" alt="Measured on agentmods" height="20"></a>
Per session 6 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 951 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00006 $0.00951
Opus 5 $0.00003 $0.00476
Sonnet 5 $0.00001 $0.00190
Haiku 4.5 $0.00001 $0.00095

Measured 3d ago against content hash 33238ccd42c6, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

webui scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

rm -rf node_modules package-lock.json

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

if curl -s http://localhost:5815/api/papers > /dev/null 2>&1; then
plugin/commands/webui.md · 128 lines

How it starts

The opening of the file, as written. The whole thing — 128 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Your task

Start the Claude Paper web viewer using the production Nuxt.js server.

Step 1: Check and Install Dependencies (First Run Only)

if [ ! -f "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/.package-lock.json" ] || [ ! -d "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/@nuxt" ]; then
  if [ ! -d "${CLAUDE_PLUGIN_ROOT}/src/web/node_modules/@nuxt" ]; then
    echo "ERROR: node_modules is corrupted, performing clean install..."
    cd "${CLAUDE_PLUGIN_ROOT}/src/web"
    rm -rf node_modules package-lock.json
    npm install
    echo "Web dependencies installed!"
  else
    echo "First run - installing web dependencies..."
    cd "${CLAUDE_PLUGIN_ROOT}/src/web"
    npm install
    echo "Web dependencies installed!"
  fi
else
  echo "Dependencies already installed"
fi

Step 2: Build Production Server (auto-rebuilds on plugin update)

cd ${CLAUDE_PLUGIN_ROOT}/src/web

PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json').version)")
BUILD_VERSION=""
if [ -f ".output/.build-version" ]; then
  BUILD_VERSION=$(cat ".output/.build-version")
fi

if [ ! -f ".output/server/index.mjs" ] || [ "$PLUGIN_VERSION" != "$BUILD_VERSION" ]; then
  echo "Building production server (v${PLUGIN_VERSION})..."
  npm run build
  echo "$PLUGIN_VERSION" > .output/.build-version
  echo "Build complete!"
else
  echo "Production build is up to date (v${BUILD_VERSION})"
fi

Step 3: Check Port Availability

# Get version info for comparison
PLUGIN_VERSION=$(node -e "console.log(require('${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json').version)")
BUILD_VERSION=""
if [ -f ".output/.build-version" ]; then
  BUILD_VERSION=$(cat ".output/.build-version")
fi

if lsof -i :5815 > /dev/null 2>&1; then
  echo "INFO: Port 5815 is already in use"
  PID_FILE="/tmp/claude-paper-webui.pid"
  if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
    # Check version match - restart if plugin was updated
    if [ "$PLUGIN_VERSION" = "$BUILD_VERSION" ]; then
      echo "Claude Paper web UI is already running (version ${PLUGIN_VERSION})"
      echo "Access it at: http://localhost:5815"
      exit 0
    else
      echo "Version mismatch: running ${BUILD_VERSION}, need ${PLUGIN_VERSION}"
      echo "Stopping old server..."
      kill $(cat "$PID_FILE") 2>/dev/null
      sleep 2
      rm -f "$PID_FILE"
      echo "Old server stopped, will restart with new version"
    fi
  else
    echo "ERROR: Port 5815 is occupied by another process"
    exit 1
  fi
fi

Read the full file on GitHub · 128 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 128 lines · 6 tokens per session scan C 33238ccd42c6

Subscribe to this mod's changes

webui is a command published in the GitHub repository alaliqing/claude-paper (333 stars, last pushed 20d ago), licensed MIT. It adds 6 tokens to every session and 951 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.