koudelka/visualixir
{ "createdAt": "2015-11-07T23:59:39Z", "defaultBranch": "master", "description": "A process/message visualizer for BEAM nodes.šŖš", "fullName": "koudelka/visualixir", "homepage": "", "language": "CSS", "name": "visualixir", "pushedAt": "2022-12-09T04:55:55Z", "stargazersCount": 1328, "topics": [ "beam", "elixir", "erlang", "visualizer" ], "updatedAt": "2025-11-11T05:23:07Z", "url": "https://github.com/koudelka/visualixir"}Visualixir
Section titled āVisualixirāVisualixir is a toy visualizer for BEAM nodes, written in Elixir + Phoenix + d3, with live message sequence charts.
Itās largely intended as a teaching tool, to give newer BEAM programmers a look into the process ecosystem living inside their nodes. However, it may prove of some amusement/use to more experienced folks (itās kinda neat to trace iex and the io system).
Huge gifs are worth a thousand words:


Getting Going
Section titled āGetting Goingā- Clone this repository.
- Compile:
mix deps.get && mix compile && cd assets && npm install && cd - - Start āer up:
elixir --sname visualixir -S mix phx.server - Navigate to the GUI
If you want to visualize other BEAM nodes, youāll need to start them up with the --sname <unique_name_here> option.
I suggest you use Chrome for Visualixir, Safari and Firefoxās SVG performance seems to be lacking. :(
There are a couple example modules included, SingleNodePingPong and MultiNodePingPong. Additionally, thereās a Cluster module to start up additional :slave nodes.
Selecting Nodes
Section titled āSelecting NodesāOn the upper left of the terrible GUI is a list of nodes that Visualixir curently knows about, including itself. You can click on a nodeās name to visualize it, or you can add a new node by entering it in the text box.
Moving Around
Section titled āMoving AroundāDrag the background to pan around.
Move processes around and pin them down by dragging and dropping. To un-pin, double click.
Zoom by scrolling (mousewheel or two-finger swipe).
Message Tracing
Section titled āMessage TracingāOption-dragging (alt-dragging), will open a new āconversationā, you can drop a set of pids into the upper left box to start tracing, you should see messages they send/receive in the adjoining box. Its outline will change to red to remind you that youāre tracing it. You can click the Stop Msg Tracing button to halt all message tracing.
The live message sequence charts have a configurable fade time, but thereās no GUI for it yet, see web/static/js/message_sequence.js
The charting library is here, and itād love some pull requests. <3
Warning
Section titled āWarningāDo not run Visualixir on production nodes, seriously. Iāve tried to make it somewhat safe, but I suspect you can get into some bad message-tracing scenarios thatāll compromise your node.
Caveats
Section titled āCaveatsāThis a prototype, obviously, the code is a steaming pile of garbage. Visualixir is largely intended to be a playground for screwing around with visualization ideas. Iād love to see what folks come up with, PRās are gladly accepted! š (the GUI needs a lot of help)