A web viewer for rageshake logs produced by the Matrix Rust SDK and Element X apps (Android, iOS). All processing runs locally in your browser — no data is sent anywhere.
Live at https://manuroe.github.io/shakeview/
Click "Try with demo logs" on the landing page to explore the app without a real log file.
npm install
npm startcli/rageshake.ts provides compact, LLM-friendly views over rageshake archives
(summary, module overview, span tree, lifecycle timeline, filtered slices) — every
command emits bounded output sized for an agent's context window.
npm run rageshake -- <command> <path> [options] # dev, runs via tsxFor consumers (agents, scripts), build the standalone bundle once and run it with
plain node — it is the package's bin:
npm run build:cli
node dist-cli/rageshake.mjs <command> <path> [options]Run with no arguments for the full command reference.
rageshake serve [dir] serves the built viewer and a directory of rageshakes on one origin
(http://127.0.0.1:7357 by default), so an archive can be opened by link instead of by
dropping it in — and a specific line pointed at:
rageshake serve ~/Downloads
# http://127.0.0.1:7357/#/logs?archive=/rageshake.tar.gz&file=console.2026-07-21-14.log.gz&line=1234line= is the number the CLI prints in each line's [<line>|f<tag>] prefix, and file= is
the log that f<tag> stands for in the # files: legend above the output — so a line you
found in the terminal is one click from its context in the viewer. Naming the file keeps it
quick: one log parses in ~0.3s, where merging all 56 logs of a real archive takes ~2.4s. Drop
file= to open the whole archive merged instead; line=A-B highlights a range. The server is
read-only, bound to localhost, and safe to start twice (the second run reuses the first).
The extension enhances listing pages of any rageshake server deployment by redirecting /api/listing/* pages into the bundled viewer and rendering them with the same archive-style screen used by the web app. It auto-detects rageshake archive pages using the standard /api/listing/* path — no configuration needed.
| Without extension | With extension |
|
|
Note: The extension is not yet published on the Chrome Web Store or Firefox Add-ons. It must be installed manually as an unpacked/temporary extension.
Chrome / Edge
npm run build:extensionOutput is written to extension-dist/.
- Go to
chrome://extensions(oredge://extensions). - Enable Developer mode (toggle, top-right).
- Click Load unpacked and select the
extension-dist/folder.
To pick up changes: run npm run build:extension, then click the ↺ refresh icon on the extension card.
Firefox — temporary (session only)
extension-dist/ uses a Chrome-format manifest that Firefox does not support. Build the Firefox-specific bundle first:
npm run build:extension:firefoxThen:
- Go to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on… and select
extension-dist-firefox/manifest.json.
To pick up changes: re-run npm run build:extension:firefox, click Reload next to the extension, then reload the rageshakes tab (Cmd+R).
The extension is removed when Firefox closes.
Firefox — persistent (via web-ext)
npm run webext:runThis builds the Firefox bundle and launches a dedicated Firefox profile with the extension pre-loaded. Preferred for active development.
Navigate to any rageshake listing URL (e.g. https://<your-rageshake-server>/api/listing/<id>/). The content script runs automatically and opens the bundled archive-style viewer for that listing, including per-file summaries, details.json metadata, and screenshot thumbnails when present.
See AGENTS.MD for architecture notes and agent/contributor guidance.











