Everything Warpforge lets you change, in the order the Settings panel presents it — plus the Factory settings each project keeps in its own menu.
Appearance
Themes
Eight themes, four dark and four light. A theme is a set of hue-saturation-lightness values written to the document root, so switching is instant and applies to every surface — editor, terminal, diffs, panels.
| Dark | Light |
|---|---|
| Forge — the default: warm near-black with a peach accent | Paper |
| Old Money | Ivory |
| Forest | Moss |
| Midnight | Sky |
Syntax highlighting follows the theme’s mode rather than its exact palette: dark themes use the One Dark highlight set, light themes their own.
Glass
- Transparent window — blur the desktop behind the app chrome. macOS and Windows only; Linux stays opaque. Takes effect immediately.
- Glass opacity — how much of the desktop shows through the app. Default 85%. The conversation is the most transparent surface; the sidebar and panels sit halfway between it and solid.
- Blur radius — background blur behind the window. Default 24. Higher values cost more to composite. macOS only — Windows Acrylic has a fixed radius.
- Main pane glass — extend the translucent treatment to the work surface. Off keeps diffs, editors and the task pane solid while the chrome stays glass.
Font sizes
Two independent scales:
- UI font size — chrome, labels, chat prose.
- Mono font size — code, diffs, the editor, the terminal.
Everything is sized in relative units, so these are true zoom controls rather than a handful of preset sizes. Reset font sizes puts both back. From the keyboard: ⌘+, ⌘-, ⌘0.
Agents
Which coding agents are enabled, whether each is installed, what version, and whether a newer one exists — with one-click install or update. See Bring your own agents for the supported list.
Each agent row also has a refresh button for its model list, showing how many models Warpforge currently knows about. Add a provider or model in the agent’s own config and it appears after a restart, or immediately via that button.
Accounts
Several logins for the same agent — personal and work, or two seats — for Claude Code and Codex. Import the login you’re currently signed in as under a name, then switch which one new sessions use.
Covered in full under Several logins for one agent.
Language servers
Warpforge knows how to install and run eight language servers. Each row shows its status — installed, available, or update available — with a one-click install.
| Language | Server | Install |
|---|---|---|
| TypeScript / JavaScript | typescript-language-server |
npm install -g typescript-language-server |
| Rust | rust-analyzer |
brew install rust-analyzer |
| Go | gopls |
brew install gopls |
| Python | pyright-langserver |
npm install -g pyright |
| JSON | vscode-json-language-server |
npm install -g vscode-langservers-extracted |
| CSS | vscode-css-language-server |
npm install -g vscode-langservers-extracted |
| HTML | vscode-html-language-server |
npm install -g vscode-langservers-extracted |
| YAML | yaml-language-server |
npm install -g yaml-language-server |
A server powers go-to-definition, find references, rename, hover docs, completions, and diagnostics — see Reading code. Open a file whose server is missing and the editor offers to install it rather than quietly falling back to plain highlighting.
Issue trackers
Connect GitHub (through the gh CLI session you already have) or Linear (a personal API key, kept in your OS keychain). A Linear key is account-wide, so each project picks the team it reads from.
See Connect a tracker.
Task history
Over time Warpforge collects a lot of finished work. Every agent turn ends as a task waiting for you, and keeping every chat forever made the app slower to start. History now cleans itself up in visible, reversible steps — you choose how long to keep things.
Waiting ──(2 weeks, no changes)──▶ Closed ──(30 days)──▶ chat removed
▲ │
└────── tasks with changes never move on their own ─────┘
└─(90 days untouched)──▶ deleted- Keep transcripts for — how long a closed task keeps its chat. After this the title, prompt, file changes and commits stay, but the chat disappears. Set to Forever to keep everything.
- Settle ignored tasks after — a finished turn with no changes that nobody touched for this long moves to Closed on its own. Tasks with changes never move on their own. Set to Off to disable.
- Delete closed tasks after — a closed task you have not touched for this long is deleted entirely. Commits are already in git, so they are not affected. Tasks that still have unmerged changes are kept. Set to Forever to keep them.
Every cleanup shows a small notice. Nothing is deleted silently.
Cleanups run when the app starts, once a day, and right after you change a setting.
Backlog storage
Where backlog items live. The daemon owns them either way:
| Format | Where items live |
|---|---|
| SQLite | Inside Warpforge’s own data, like the rest of its state |
| YAML | One file per item under .warpforge/backlog/ in the project, so items can be committed and travel with the repo |
One file per item keeps writes small and makes the directory readable — and diffable — in the project itself.
Memory
Settings for the shared memory store:
- Embedding mode — off (full-text only) or local embeddings, which turns search hybrid.
- Memories — counts per scope, so you can see what’s actually accumulated. Browse and edit them in the Memory screen (sidebar → Memory).
- Active scopes — which of global and project are on. Read-only here; edit
~/.warpforge/config.yaml. - Per-project DB — whether a project overlay database exists. Auto-created, not something you make by hand.
Dreaming
The compaction pass that reviews memories against the codebase and proposes cleanups.
- Enabled, the trigger (manual, idle, or cron), and the agent and model it runs on are read from
~/.warpforge/config.yamlundermemory.dreaming— Settings shows them read-only. - Dream project — which project the pass runs against.
- Dream now — run it on demand.
Review the resulting proposals in the Memory screen (sidebar → Memory); the pass never changes a memory itself, and each proposal says what approving it will do.
Text generation
Which agent writes the prose Warpforge drafts for you — task titles, commit messages, PR descriptions:
- Auto-name tasks — on by default. Turn it off to name tasks yourself.
- Agent for git text and Model — which harness and model do the drafting. Worth pointing at something small and fast; this work doesn’t need your best model.
Factory settings (per project)
Limits and defaults for a project’s Factory tasks live with the project, not in the Settings panel: open the project’s ⋮ menu and choose Factory settings….
| Setting | Default | What it does |
|---|---|---|
| Tasks at the same time | 1 | How many Factory tasks run at once, from 1 to 8. Only one of them runs in your project folder. |
| Pause at open draft PRs | 3 | New tasks wait while this many Factory pull requests are open. |
| New tasks per 24 hours | 10 | How many Factory tasks start in any 24 hours. |
| Keep at least (GB free) | 25 GB | New tasks wait while the disk has less free space than this. 0 turns it off. |
| Pause when quota use passes (%) | 80% | A new task waits while an agent it needs is above this. An account that is out of quota always waits. |
| Template | review-loop | The workflow template New Task starts with in Factory mode. |
| Lead agent and Model | first enabled agent | The agent and model New Task starts with in Factory mode. |
| Where it runs | Automatic | Where New Task runs a Factory task unless you change it. |
The limits apply to Factory tasks that open a pull request and to backlog batches, and they only decide when a new task starts — never a stage of a task that is already running. Start now on a queued task starts it past them.
Fun
There’s an easter egg in here. Go find it.