Configuration

Everything you change in Yardarm is written to Mastra Code's own config files — atomically, preserving keys the app doesn't know about — so the mastracode CLI picks up the same configuration.

Slash commands

Type / in the composer to see everything available — the full Mastra Code command surface plus app commands. Highlights:

Command What it does
/plan /build /fast switch mode
/model switch model
/goal set a goal
/threads manage threads
/permissions session permissions panel
/sandbox full sandbox + session settings
/mcp /hooks /skills inspect MCP servers, hooks, skills
/workflows run and manage stored workflows
/om Observational Memory status
/cost token usage per thread
/diff show working-tree changes
/review review a PR or the local changes
/setup re-run the setup wizard
/update check for app updates
/browser browser-tool settings
/github GitHub signals integration
/observability observability integration
/prune prune old storage data
/report-issue report a mastracode issue
/help the full list

You can define your own commands as plain Markdown files: ~/.mastracode/commands/**/*.md (global) or .mastracode/commands/**/*.md (per project). They appear in the autocomplete like built-ins. A few terminal-only commands (e.g. /voice) are listed in /help and point you to the CLI tab.

Settings reference

Open with Cmd+, (Ctrl+,).

Tab What's there
Appearance light / dark / system theme (also togglable from the sidebar footer)
Preferences default auto-approve (yolo), CLI theme, default thinking level, tool-output previews, new-chat sandbox defaults, token compression + verbosity steering, per-tool toggles to disable built-in agent tools
API Keys provider API keys (stored in mastracode's auth.json) or environment-variable references — read from your login shell at launch, never stored; standard variables like ANTHROPIC_API_KEY are detected automatically
Models default model per mode, subagent, goal judge, and memory role; model packs
Providers OAuth logins (Claude / Codex / Copilot), Ollama detection, custom local providers
Voice dictation engine, STT provider and model
Browser browser-automation settings for web tools, including the viewport size
Connectors one-click OAuth sign-ins for GitHub, GitLab, Supabase, Netlify, Vercel, and Sentry (see Connectors), plus GitHub signals (/github) and Observability (/observability)
MCP Servers Model Context Protocol servers — global by default, or project-specific via the scope toggle + project picker, with live status (see below)
Agents custom subagents — global by default, or project-specific via the scope toggle + project picker (see below)
Languages optional language-server downloads for IDE diagnostics — Web (HTML/CSS/JSON), YAML, Python, and ERB packs with per-pack download / update / remove
About versions, runtime boot status, global CLI install + update, app updates, storage pruning (/prune), re-run setup

MCP servers (Settings → MCP Servers)

MCP servers (~/.mastracode/mcp.json globally, or a project's .mastracode/mcp.json, merged over global) are edited as raw JSON (/mcp opens this tab). The editor defaults to the Global scope — servers available in every project; switch to Project and pick one of your projects to manage servers for that project only. Saving restarts the affected agent processes.

The tab also shows each server's live status (connected + tool count, connecting, or an error) — for the global scope this works even without a chat open; for a project it needs a chat open in that project. Servers that use OAuth show Needs authentication with an Authenticate button: the sign-in opens in your browser, and the server connects when it completes. A Reconnect button revives servers that dropped.

Each server row also has an enable/disable switch — turn a server off without touching the JSON (persisted in mastracode's state and shared with the CLI); flipping it back on reconnects the server immediately.

The Global scope adds two server discovery switches: opt in to also load the MCP servers you've already configured for Claude Code or Codex, so you don't have to duplicate them in mastracode's config. Running agents pick the change up after a restart (a banner offers one).

Custom subagents (Settings → Agents)

Custom subagents (~/.mastracode/agents/*.md globally, or a project's .mastracode/agents/*.md) are helpers the main agent can delegate tasks to via the subagent tool (/subagents opens this tab). The editor defaults to the Global scope — agents available in every project; switch to Project and pick one of your projects to manage agents for that project only. Your agents are listed below the create field; creating an agent (or clicking one in the list) opens its editor in a dialog. Each file has a frontmatter block (name, description — required, model, maxSteps, forked) and the body is the subagent's instructions. Saving restarts the affected agent processes; the ids explore, plan, execute and general are reserved.

A collapsible Templates section on the same screen holds 18 ready-made subagents — 12 team roles (product manager, architect, developer, QA engineer, security engineer, tech writer, …) and 6 domain specialists (SaaS, Shopify, mobile, Chrome extensions, AI apps, e-commerce); expand it to browse them. Click Add on any of them (or Add all per group) and it's written as an ordinary .md file into the selected scope, so you can edit it like any other agent afterwards. Added templates disappear from the list, and adding never overwrites an existing file, so your customizations are safe. On an id collision, a project-scoped agent overrides the global one.

Per-project configuration

Click the gear next to the project name in the sidebar to configure a single project:

Project-specific MCP servers and custom subagents are managed in Settings → MCP Servers and Settings → Agents (pick the project there). Edits restart the affected agent processes, so they take effect immediately.

Configuration paths (shared with the mastracode CLI)

Global:

Per project (Project Settings gear in the sidebar):

Edits made in the app are written atomically and preserve unknown keys, so the same files stay usable from the CLI. Config edits restart the affected agent processes so changes take effect.

App data

The app's own state (projects, chats, transcripts, checkpoints) lives in a SQLite database (yardarm.db) in Electron's userData directory — separate from mastracode's files:

Chat worktrees live under worktrees/<projectId>/<chatId> in the same directory. The database runs in WAL mode with periodic maintenance (vacuum/optimize, size-bounded transcripts) so long-lived installs don't degrade.

Optional language-server packs downloaded from Settings → Languages are stored under lsp-servers/<pack>/<version> in the same directory (e.g. ~/Library/Application Support/yardarm/lsp-servers on macOS). Removing a pack from Settings → Languages deletes its folder; deleting the whole app-data directory removes them along with everything else.

Keeping Yardarm updated

Settings → About → Updates:

Self-install works on packaged macOS builds. Elsewhere (or in dev builds) the app offers a View release link instead. Update checks and the optional language-server pack downloads you trigger yourself (Settings → Languages) are the only network traffic Yardarm itself makes — everything else goes to the model providers you configured.