Raxol: an Elixir runtime with MCP tools for agents
Raxol
An Elixir runtime: one app renders to terminal, browser, SSH and MCP tools, plus a terminal coding agent with approval gates
- 81 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The coding agent edits files and runs commands, although each such action passes an ALLOW, ASK and DENY mechanism
- The SSH-hosted interface gives several users access with separate keys
Install
- Works in
Manual install
In an Elixir project run `mix mcp.server` and connect it as a stdio MCP server. To check an interface call `type_into` and `click` on named components. With the `mix raxol.code` coding agent do not disable the ALLOW, ASK and DENY mechanism.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The coding agent edits files and runs commands, although each such action passes an ALLOW, ASK and DENY mechanism
- The SSH-hosted interface gives several users access with separate keys
This is third-party code. Review the repository files before installing.
What it does
Raxol is an Elixir and OTP runtime: an app is written as one module in the TEA architecture with `init`, `update` and `view` functions and runs as a GenServer. One codebase renders to four surfaces: terminal through the termbox2 NIF, browser through Phoenix LiveView, SSH over the standard `:ssh` and an agent through MCP tools. Every interactive component automatically becomes a set of MCP tools. A button gets `click`, a text input gets `type_into`, `clear` and `get_value`, and a focus lens keeps about 15 relevant tools per step. The agent sees a structured component tree and needs no pixels. `mix mcp.server` starts an MCP server over stdio for Claude Code, and the `Raxol.MCP.Test` module provides test sessions. The package also contains a coding agent: `mix raxol.code` opens a terminal interface and `mix raxol.p` runs headless for pipelines and CI. Every tool call that changes things passes through an ALLOW, ASK and DENY mechanism. Sessions are journaled to disk and the interface is also served over SSH to many users.
Who it is for. Elixir developers building terminal and web interfaces on OTP who want Claude Code agents to drive and test them.
Good fit when
- An app must run in both terminal and browser from one codebase
- An agent should click and type in an interface through structured tools
- An interface is tested by an Elixir script with `click`, `type_into` and assertions
- You want a coding agent in the terminal that asks before each risky edit
Not a fit when
- You need a ready MCP server for an external service: Raxol builds tools from your components
- Your project is not on Elixir: the runtime needs Erlang and Elixir
- You need only a terminal interface without the other surfaces: a light TUI library is simpler
Example request
Run my app in a Raxol test session, type elixir into the search field, click submit and check that results appear.MCP
- Transport
- stdio
- Authentication
- not required
Environment variables
RAXOL_SHARE_SECRETsecret- Secret for signed links to session transcripts
Limitations
The core of the project is an Elixir framework and it serves no standalone role: the MCP tools appear on your own components. Erlang, Elixir and dependencies through `mix deps.get` are needed to run it. The coding agent is launched from a repository clone with `bin/raxol-code`.
If no model provider key is set, the interface opens a connection wizard. The `/share` transcript link needs `RAXOL_SHARE_SECRET` and a host with `Raxol.Agent.Code.ShareLive`. The hosted SSH option needs a tenants directory or `--authorized-keys` configured.
How to disable. Stop the `mix mcp.server` process and remove the entry from the client config, for example `claude mcp remove raxol`. The package leaves a project by editing `mix.exs`.
FAQ
What is Raxol?
An Elixir and OTP runtime that renders one app to terminal, browser, SSH and MCP tools for agents.
How do I start the Raxol MCP server?
With `mix mcp.server` in the project: the server runs over stdio and is meant for Claude Code integration.
Which tools do components get?
A button gets `click`, a text input gets `type_into`, `clear` and `get_value`. The focus lens keeps about 15 tools per step.
What separates `mix raxol.code` from `mix raxol.p`?
The first opens an interactive terminal agent and the second runs headless: the prompt goes in as arguments, the answer to stdout and events to stderr.
What is the license?
MIT.
Discussion
No questions or reviews yet.
Related
MCP serversFive short Elixir, Phoenix, Ecto, OTP and Oban skills for Claude Code and Codex, plus optional Mix checks.
A dependency-free CLI and MCP server that builds a call graph of a repository so the agent understands code without reading whole files
Local search and MCP server for agents: one Rust binary that indexes code, docs and logs
Python runtime for agent work: task boundaries, independent verification of results and a saved handoff between sessions
An MCP server and CLI for code research: search and understand your project and all of GitHub with fewer tokens
A local code graph with version history: an MCP server that tells the agent who calls a function and what an edit breaks
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| Raxol: an Elixir runtime with MCP tools for agents (this card) | no | not required | 81 | |
| Elixir Agent Tools | no | 192 | a toolset and skills for Elixir with no interface runtime | |
| OpenTUI | yes | 13,808 | a terminal interface library in TypeScript |
README in short
The README presents Raxol as one runtime for four surfaces and explains the BEAM virtual machine properties: per-component crash isolation, hot code reload and clustering with CRDTs. It goes on to an agents section, the coding agent with SSH access and the ACP protocol, the `mix raxol.new` quick start and a comparison with other TUI libraries.