# Raxol

> >

- **Type:** Skill
- **Install:** `agentstack add skill-droodotfoo-agent-skills-raxol`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [DROOdotFOO](https://agentstack.voostack.com/s/droodotfoo)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [DROOdotFOO](https://github.com/DROOdotFOO)
- **Source:** https://github.com/DROOdotFOO/agent-skills/tree/main/skills/raxol
- **Website:** https://droo.foo/

## Install

```sh
agentstack add skill-droodotfoo-agent-skills-raxol
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Raxol Skill

Elixir TEA framework for terminal UIs + AI agent orchestration. The same TEA model
runs in the terminal, browser (LiveView), SSH, and as MCP tools/resources. OTP
provides supervision, crash isolation, and hot reload.

Raxol v2.6 is a 15-package monorepo (Elixir 1.20 / OTP 29). The packages this skill
covers:

- `raxol_core` -- TEA runtime, buffer/rendering, events, directives, telemetry
- `raxol` -- umbrella + terminal surface (termbox2 NIF + IO fallback)
- `raxol_agent` -- agent framework: TEA/Process agents, turn driver, memory,
  self-improving skills, backends, harnesses, teams
- `raxol_mcp` -- MCP server/client: tool auto-derivation, focus lens, resources
- `raxol_liveview` -- Phoenix LiveView bridge (buffer -> HTML, a11y)
- `raxol_plugin`, `raxol_sensor` -- plugin SDK, sensor fusion

Payments/ACP (`raxol_payments`, `raxol_acp`) and the Symphony orchestrator
(`raxol_symphony`) have their own skills -- see below.

## What You Get

- TEA agent and Process agent patterns with lifecycle examples
- Turn driver + memory stack + self-improving skills (v2.6)
- Workflow engine: graph DSL, checkpointing, human-in-the-loop, saga rollback
- AI backends (HTTP, Mock, native ClaudeCode/Cursor, OpenRouter) + harness selection
- MCP server (auto-derive tools from the widget tree) and MCP client
- LiveView surface (buffer -> HTML, themes, accessibility)
- Multi-agent orchestration (teams, cockpit, message protocol)
- Headless sessions and agent testing patterns (unit, integration, E2E)

## Two Agent Models

|                | TEA Agent (`use Raxol.Agent`)       | Process Agent (`use Raxol.Agent.UseProcess`) |
| -------------- | ----------------------------------- | -------------------------------------------- |
| Loop           | Message-driven (`update/2`)         | Tick-driven (observe/think/act)              |
| Rendering      | Optional `view/1`                   | Headless only                                |
| Input          | Messages from agents, commands, MCP | Events buffer, directives                    |
| Best for       | Agents with UI, reactive workflows  | Autonomous background agents                 |
| Crash recovery | OTP restart, fresh `init/1`         | `context_snapshot` + `restore_context`       |
| AI backend     | Manual (call in async commands)     | Built-in via Strategy                        |

For a full LLM chat turn (memory + skills + user model + tool loop) use the
`Raxol.Agent.Turn` driver -- see `agents/turn-memory.md`.

## See also

- `raxol-payments` -- agentic commerce: Xochi/Riddler/ACP, agent wallets, privacy tiers
- `raxol-symphony` -- tracker-driven coding-agent orchestrator (Symphony)
- `droo-stack` -- general Elixir patterns (pipes, pattern matching, ExUnit)
- `design-ux` -- TUI design principles (terminal layout, box-drawing, density)
- `claude-api` -- Anthropic SDK integration in Elixir

## Reading Guide

| Task                              | File                           |
| --------------------------------- | ------------------------------ |
| Build a TEA agent + messaging     | `agents/tea-agent.md`          |
| Build an autonomous agent         | `agents/process-agent.md`      |
| Full LLM turn: memory + skills    | `agents/turn-memory.md`        |
| Reusable actions / LLM tools      | `agents/actions-pipelines.md`  |
| Multi-agent teams / cockpit       | `agents/teams-orchestrator.md` |
| Orchestrate steps as a graph      | `workflow/graph.md`            |
| AI backend + harness selection    | `ai/backends.md`               |
| Consume external MCP servers      | `ai/mcp-client.md`             |
| Expose your app as MCP tools      | `mcp/server.md`                |
| Render a TEA app in LiveView      | `surfaces/liveview.md`         |
| Headless sessions + MCP tools     | `headless/sessions.md`         |
| Testing agents and actions        | `testing/agent-testing.md`     |

## Message Protocol

All TEA agents receive these in `update/2`. Defined once here, referenced
from other files.

```elixir
# Async message from another agent
{:agent_message, from_id, payload}

# Sync call -- MUST reply with send(pid, {:agent_reply, ref, reply})
{:call, caller_pid, ref, message}

# Team broadcast
{:team_broadcast, team_id, payload}

# Async command / directive results
{:command_result, result}
{:command_result, {:shell_result, %{output: string, exit_status: int}}}
{:command_result, {:action_result, module, result_map}}
{:command_result, {:action_error, module, reason}}
{:command_result, {:pipeline_result, result_map}}
{:command_result, {:pipeline_error, step_module, reason}}
```

## Key Conventions

- All agents auto-register in `Raxol.Agent.Registry` by `:id`
- Always return `{model, command}` from `update/2`, never bare `model`
- `view/1` returning `nil` = headless (no rendering overhead)
- Effects are struct-based `Directive`s (v2.6): `Raxol.Core.Runtime.Directive`
  (`stop/1`, `schedule/2`, `spawn_task/1`) and `Raxol.Agent.Directive`
  (`async/1`, `shell/2`, `send_agent/2`). The `use Raxol.Agent` helpers wrap these.
- Session agents register as `agent_id`, Process agents as `{:process, agent_id}`,
  MCP clients as `{:mcp_client, name}`
- Agent package: `packages/raxol_agent/`

## Common Pitfalls

1. **Wrong update/2 return** -- must return `{model, Command.none()}` not bare `model`
2. **Forgetting call reply** -- `{:call, pid, ref, msg}` requires `send(pid, {:agent_reply, ref, reply})`; caller blocks with timeout
3. **Mixing agent models** -- TEA callbacks and ProcessBehaviour callbacks are separate behaviours
4. **Sync call deadlocks** -- Agent A calls B, B calls A = deadlock. Break cycles with async `send_agent/2`
5. **String vs atom keys** -- Headless `send_key` uses atoms for special keys (`:tab`), strings for characters (`"q"`)
6. **Real backends in tests** -- always use `Backend.Mock`, never HTTP

## Design Context

Raxol treats each rendering surface (terminal, web, SSH, MCP) as a functor
from the TEA model. Same `update/2`, same model, different projections. In v2.6
MCP is a first-class surface (`raxol_mcp`): widgets auto-export tools via the
`Raxol.MCP.ToolProvider` behaviour, model state is exposed via `ResourceProvider`,
and `FocusLens` filters tools by attention. When building features, consider how
they surface as MCP tools -- see `mcp/server.md`.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [DROOdotFOO](https://github.com/DROOdotFOO)
- **Source:** [DROOdotFOO/agent-skills](https://github.com/DROOdotFOO/agent-skills)
- **License:** MIT
- **Homepage:** https://droo.foo/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-droodotfoo-agent-skills-raxol
- Seller: https://agentstack.voostack.com/s/droodotfoo
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
