PhoenixReplay CLI
A package records Phoenix LiveView sessions and replays them from assigns, with skills for agent setup and debugging.
- 110 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- Recordings contain user input and assigns data; keys such as `password` and `token` are hidden but the rest needs your own sanitizer
- A replay dashboard in production without your own authentication exposes other people's sessions
Install
- Works in
Manual install
mix igniter.install phoenix_replayThe first install command in the README. The installer mounts the dashboard at `/dev/replay` in development only.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Recordings contain user input and assigns data; keys such as `password` and `token` are hidden but the rest needs your own sanitizer
- A replay dashboard in production without your own authentication exposes other people's sessions
This is third-party code. Review the repository files before installing.
What it does
PhoenixReplay records LiveView and LiveComponent events, navigation and assigns on the server and replays a session by re-rendering your templates with recorded values. There are no DOM snapshots, so a half-minute session takes a few kilobytes. A browser recorder adds the pointer, touches, scrolling and form input. The package installs with `mix igniter.install phoenix_replay` and opens a dashboard at `/dev/replay`. It ships two skills in `skills/`: `phoenix-replay-setup` wires up recording, and `phoenix-replay-debugging` reads recordings through `PhoenixReplay.Trace` to see what a user did and why a LiveView failed. The `mix phoenix_replay.list` and `mix phoenix_replay.show` commands expose the same data.
Who it is for. Elixir developers on Phoenix LiveView whose users report bugs and who want to hand recording analysis to an agent instead of reproducing the path by hand.
Good fit when
- A user reports an error on a LiveView page and the steps are unknown
- You want to see Ecto queries and HTTP calls behind each click
- An agent is asked to analyse a recording from a `/replay/<id>?at=<index>` link
- Session recording with sampling and limits is added to a Phoenix project
- Only sessions with errors or slow queries are kept, plus a small share of the rest
Not a fit when
- The app is not on Phoenix LiveView: recording relies on assigns and templates
- You need DOM snapshots and full-screen capture like browser recorders
- The dashboard would be opened in production without your own authentication
Example request
Read recording /replay/abc123 up to event 42, explain what the user did and find why the LiveView crashed.Limitations
The dashboard mounts at `/dev/replay` for development only by default, and in production it must sit behind your own authentication. Recordings contain what users typed: values of keys such as `password`, `token` and `secret` are replaced with `[FILTERED]`, but the rest is best scrubbed with your own sanitizer. MP4 export needs `ffmpeg` and the optional `playwright_ex` and `muontrap` dependencies. Sessions without user interaction are discarded. The last commit is from 10 October 2026.
How to disable. Remove `PhoenixReplay.Recorder` from `on_mount` in `live_session`, drop the dashboard route and delete the `phoenix_replay` dependency from `mix.exs`. Delete saved recordings on disk or in the database separately.
FAQ
How do I turn recording on?
Add `on_mount: [PhoenixReplay.Recorder]` to the needed `live_session`. For sampling set `sample_rate`, for example `0.1`, and `max_events`.
How do I see queries and logs behind each click?
Enable collectors in `config :phoenix_replay`, such as `PhoenixReplay.Collector.Ecto` with your repo and `PhoenixReplay.Collector.Finch`.
Where do I open the dashboard in production?
Mount `phoenix_replay "/replay"` in a `scope` with your own authorization pipeline, for example `:require_admin`.
What does the debugging skill do with recording contents?
It reads them as data. Text from forms and logs could be written by any visitor, so the agent does not run commands found there.
How do I export a recording as video?
With `mix phoenix_replay.export <id>` or from the player. It needs `ffmpeg` and the optional `playwright_ex` and `muontrap` dependencies.
Discussion
No questions or reviews yet.
Related
CLI toolsA Claude Code plugin for Elixir, Phoenix and LiveView: specialist agents, verification and rules against common mistakes
Tidewave Phoenix
tidewave_phoenix
An MCP server for Phoenix: the agent runs code in the context of a running development application, reads live logs and talks to the project as through IEx
Upstash Redis SDK
redis-js
Reference skill for @upstash/redis: data structures, caching, rate limits, locks and full-text search
Three skills for TypeScript logging: review code and move to wide events, build an audit trail and analyze local logs
The RubyLLM skill and plugin help an agent write chats, tools, MCP and structured output in Ruby and Rails applications
Redis's official 15 skills teach an agent data structures, search, clustering, security and agent memory, plus a docs MCP server.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| PhoenixReplay (this card) | no | 110 | ||
| Elixir Phoenix Plugin for Claude Code | no | 574 | a plugin with rules and agents for Elixir and Phoenix development; here recording and analysis of real LiveView sessions | |
| Tidewave Phoenix | no | not required | 861 | an MCP server for developing and debugging a Phoenix app from inside; here replay of user sessions from assigns |
README in short
Recording happens on the server where assigns are already known, so a replay shows exactly what the server rendered. Details are covered in the HexDocs documentation.