Skip to main content
Glama

uiver

Local-first UI version snapshots. When an AI agent iterates on your website, each build overwrites the last โ€” the "middle" versions vanish. uiver freezes every iteration as a fully interactive, permanently browsable local webpage, so you can step back through history and compare any two versions side by side.

  • โšก Instant snapshots โ€” content-addressed store; unchanged files are never stored twice

  • ๐ŸŒ Every version stays live โ€” real pages served at http://127.0.0.1:4321/v/<project>/<id>/, not screenshots

  • ๐Ÿ”€ Compare dashboard โ€” side-by-side with synced scrolling, viewport presets, [ / ] to scrub history

  • ๐Ÿท Titles + prompts โ€” each version records what changed and the request that produced it

  • ๐Ÿค– Agent-native โ€” Claude Code skill + slash commands + MCP tools

  • ๐Ÿงน Auto-clean cycle โ€” unpinned versions expire after N days (editable in the dashboard); pinned versions are kept forever

  • ๐Ÿ“ฆ Share across machines โ€” export any version as a single portable .uiver bundle

Requires Node โ‰ฅ 18.17. Zero npm dependencies.

Install

/plugin marketplace add vvek475/uiver-plugin
/plugin install uiver@uiver

This gives Claude the ui-snapshot skill (it snapshots automatically after finishing UI changes), the /uiver:snap, /uiver:dashboard, and /uiver:versions commands, and MCP tools (ui_snapshot, ui_get_url, ui_screenshot, โ€ฆ).

CLI on your PATH (optional, for manual use)

cd uiver-plugin && npm link     # or: npm install -g .

Related MCP server: pagelens

Quickstart

cd my-website
npm run build                                # if the site needs building
uiver snap --title "hero v1" --prompt "make the hero full-bleed"
uiver open                                   # dashboard at http://127.0.0.1:4321

Snapshot again after each change. Identical output is deduplicated โ€” calling snap when nothing changed is a no-op.

CLI

uiver snap [dir]            Snapshot a built site (auto-detects dist/build/out/_site)
      --title --prompt --note --pin --project --force
uiver list                  List versions
uiver label [id] <title>    Retitle a version (default: latest) [--pin]
uiver pin|unpin [id]        Protect/unprotect from auto-clean
uiver delete <id>           Delete and reclaim space
uiver serve [--port N]      Dashboard server (foreground); --daemon for background
uiver open | stop | status  Manage the server
uiver clean [--dry-run]     Run the retention cycle now
uiver export <id>           Write a portable .uiver bundle
uiver import <file>         Import a bundle from another machine
uiver config [key value]    port, retentionDays, cleanIntervalHours, autoClean
uiver mcp                   MCP server on stdio

Dashboard

uiver open โ€” three views:

  • Single โ€” browse one version; [ / ] step older/newer in place

  • Split โ€” two versions side by side with synced scrolling and viewport presets

  • Manager โ€” file-system-style view of everything stored: per-version sizes, file lists, dedup savings, delete/export/import, and the auto-clean settings (retention days, cycle interval, on/off)

Sharing across machines

uiver export v12                 # โ†’ my-site-v12.uiver (single gzipped bundle)
# send the file any way you like, then on the other machine:
uiver import my-site-v12.uiver

Bundles are self-contained (manifest + all files, content-hash verified) and idempotent โ€” importing the same bundle twice never duplicates. Alternatively, sync the whole store by putting ~/.uiver (or UIVER_HOME) in any synced folder.

Screenshots (optional)

The ui_screenshot MCP tool and /api/screenshot endpoint render versions headlessly. They require Playwright:

npm i -g playwright && npx playwright install chromium

Everything else works without it.

Storage layout

~/.uiver/
  config.json               port, retention, clean cycle
  objects/<sha256>          every unique file, stored once
  projects/<name>/manifest.json   versions: id, title, prompt, file list
  cache/screenshots/

Override the location with the UIVER_HOME env var.

Notes & limitations

  • Snapshots freeze the frontend. If a version calls a live API, it will hit whatever that API returns today.

  • Builds that hardcode absolute asset paths (/assets/x.js) are handled via a Referer-based fallback redirect; setting your bundler's base path is cleaner.

  • The server binds to 127.0.0.1 only.

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Capture screenshots, detect visual regressions between page versions, and analyze with AI.

  • Build, version, review, and export websites, web apps, and games from a conversation.

  • UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vvek475/uiver-plugin'

If you have feedback or need assistance with the MCP directory API, please join our Discord server