Can you make your own visual inspector/debugger?

I’m looking into the possibility of developing my own visual inspection tool for Elixir Processes. I’ve read up on existing debugging tools such as listed in this article: Three Ways to Debug Code in Elixir | AppSignal Blog. Would we be able to develop a similar kind of inspection tool ourselves in Elixir, one where you would be able to look at all processes which are alive and see messages being sent to each other for example? Or are these debuggers part of Elixir itself with much more access to information than we have building on top of Elixir?

I’m asking as I’ve been looking into how I could hook into and inspect different aspects of processes. However, I have found several things to be hard/impossible, such as adding my custom behavior to the receive macro or inspecting the state of a process. The linked debugging tools seem to have access to this information though. How do these work?

Some examples of “custom” visual inspectors for elixir/erlang systems: