Extensions

Radian has seven extension mechanisms. Each one fits a different need. Pick from the need, not from the name.

Need Mechanism Detail page
Always-on project directions the model must follow Context files (AGENTS.md) context-files.md
A reusable procedure the model can run on demand Skill skills.md
Facts the model should remember across sessions Memory memory.md
An extra tool (a local server over stdio) MCP server mcp.md
Run your own command when a tool runs or the model stops Hook hooks.md
Change the colors Theme themes.md
Change the status line Footer footer.md

No mechanism blocks startup. A bad file warns once on the startup line and the session opens without it.

Where things live#

Three layers hold configuration. The user layer is ~/.radian/: the config file, the themes/ directory, the skills/ directory, the memory store. The project layer is the workspace: .agents/skills/, .mcp.json, .radian/hooks.json, and the context files. The built-in layer is compiled in: three skills and three themes. A user skill of the same name wins over a built-in one. A project skill loads only when the project is trusted.

The startup line names what loaded and warns about what did not. Trust is per directory: an untrusted project contributes no servers, no hooks, and no project skills, and the startup line says so. See sessions.md for the trust prompt.

Context files in one example#

Create AGENTS.md in the workspace root:

# Build

Run `make check` before you finish a change.

Open radian in that workspace. The startup line names the file and its size. Every model request in the session carries the file's text. No command runs it; it is always present. Use context files for directions, never for secrets.

Skill in one example#

Create .agents/skills/review/SKILL.md in a trusted project:

---
name: review
description: Review the current diff for style and tests.
---

Read the current diff. List style problems and missing tests.

Run /skills to see the row, then /skill:review to run it. The body plus your arguments become one user message. Use skills for procedures the model follows on demand, not for always-on directions.

Memory in one example#

Type /memory add The deploy needs the vpn profile "office". The record persists across sessions. Later turns find it with /memory search vpn or through the memory_search tool. Use memory for facts, use context files for directions.

MCP server in one example#

Write mcp.json with one stdio server:

{
  "servers": [
    {"id": "notes", "command": "notes-mcp", "args": ["--stdio"]}
  ]
}

Start with radian --mcp-config mcp.json. Type /mcp to see the server and its tools. A tool call asks first under the workspace tier. Use MCP for capabilities outside the built-in tools.

Hook in one example#

Add one entry to the user config file (configuration.md holds the path):

[[hooks.PreToolUse]]
matcher = "shell"
[[hooks.PreToolUse.hooks]]
type = "command"
command = "echo tool call starting >> /tmp/radian-hooks.log"

Every shell call now runs the command first. The hook's stdin is JSON with the event name and the tool input. Use hooks to observe or gate tool calls with your own programs.

Theme in one example#

Type /theme light to switch now; radian writes the name back to the config file. To tune one color without switching files, set it in the config:

[tui.colors]
user = "#0af"

Run radian theme import palette.json --name mine to convert a pi theme to a Radian file under ~/.radian/themes/, then /theme mine. Use themes for colors only; they never change behavior.

Run radian footer export deck to print the default status line as TOML. Paste it under [tui.footer] in the config file and edit the rows. Add an item to a row's left or right list to show it. Use the footer to watch model, cost, context and jobs, not to add behavior.

Load order#

At session start radian reads, in this order: the config file, the theme, the keymap, the context files (global first, then outer directories to inner), the skills (built-in last, so yours win), the MCP servers (project only when trusted), the hooks (project first, then user), and the memory store. Each step warns and continues on failure. The startup screen shows the result: theme, context files with sizes, skill count, MCP servers and tools, hook counts, and the trust state.