Mission Control
A command centre for each project, in the client's colours — what needs you, what is running, the board, an activity log and the project's context.
Mission Control is one page per project that answers "what's going on, and what do you need from me?" at a glance. It shows the project under its own company branding, so the page for a client's project carries that client's logo and colours.
Open it from Mission Control in the left sidebar (one entry per project, with a count of what is waiting on you), or with Open Mission Control on a project's page. Mission Control on its own opens the overview of all projects.
All projects
The overview is a grid of project cards. Each card shows the project's logo and accent colour and four numbers:
- Needs you: permission prompts, plans to review, sub-agents waiting for permission, herdr agents in the project's folder that are waiting or finished, and finished sessions you have not read yet.
- Running: sessions working now, or with background work still going.
- Done today: sessions that finished work today.
- Spend today, with this week's spend below.
A project's Mission Control
The header carries the brand (logo, company name, accent colour) and the project's totals: active agents, spend today, spend this week and the time of the last activity. New session starts a session in the project; the gear opens the project's settings.
Overview has four panels:
| Panel | What it shows |
|---|---|
| Needs you | Everything waiting on you, most urgent first: permission prompts, plans to approve, sub-agents blocked on a permission, herdr agents in the project's working folder that are waiting or done, unread finished sessions, then flagged sessions. Click a row to go there. |
| Running now | Sessions that are working, with their sub-agents (a progress bar and what each one is doing) and background agents, workflows and commands. Open goes to the session; Stop stops the session or a single background task. Sessions started by an automation are marked. |
| Activity | Sessions started, turns finished or stopped (with what each cost), failures, automations that fired and pages published, newest first. |
| Context | The project's MEMORY.md, its reference files and its pages. |
Board is the regular task board, focused on this project (with the project's own columns, if it has any). Leaving the tab puts the board's project filter back as it was.
Everything updates live as agents work; nothing polls.
This machine
The overview ends with This machine: how much of your computer Fabric is using (cores and memory), which chats are using it, and which tests and builds are running or waiting their turn. Each busy chat has Pause work / Resume: pausing stops that chat's running commands (tests, builds, servers) until you resume them; the chat itself and its tools keep working. Not available on Windows.
Heavy commands take turns
Test runners and build tools each use every core, so several chats running test suites at once could put a hundred processes on a laptop and freeze it. Fabric runs at most two heavy commands at a time across all chats (one on machines with fewer than 12 cores); the others wait their turn before they start and then run normally, so each gets the cores it expects and finishes sooner.
- Heavy means tests, builds, verify, type checks and packaging, also behind wrappers (
timeout 900 pnpm test,unshare -rn ./netns.sh pnpm verify,sudo -E make,bash -lc 'pnpm test'). - Fabric also watches what commands actually do. A command using several cores takes a turn while it runs even when nothing in its text says it is heavy (a project script that runs your test suite itself), and so does heavy work in ChatGPT, Copilot and other non-Claude chats.
- A command seen doing heavy work is remembered by its first words (for example
pnpm ecf api returns), so its next run waits its turn. They are stored inrun-gate-learned.jsonin Fabric's settings folder as one-way hashes, never as text. - Dev servers and watchers are never queued. The command itself is never changed: same output, same result, and its time limit only starts when it runs.
- A wait lasts at most 30 minutes, and sending the chat a message lets its waiting command go ahead right away.
- Everything agents start runs at below-normal priority, so your own apps come first.
| Setting | Effect |
|---|---|
FABRIC_HEAVY_RUN_SLOTS | How many heavy commands may run at once. |
FABRIC_RUN_GATE=0 | Turns the queue off. |
FABRIC_RUN_GATE_LEARN=0 | Stops remembering heavy commands. |
FABRIC_AGENT_PRIORITY=0 | Runs agents' commands at normal priority. |
Branding a project
On the project's page, open Settings and scroll to Branding:
- Company name: the client or company the project is for.
- Logo (light) and Logo (dark): SVG, PNG, JPG or WebP up to 2 MB. If only one is set it is used in both modes.
- Accent colour for light and dark mode.
Anything you leave empty falls back, field by field, to the app-wide company brand (when it is on), and then to Fabric's own look. A project without its own accent uses its project colour. When a company brand is shown, the small Powered by Fabric credit is shown with it.
The branding applies to Mission Control (the header, cards, buttons and highlights) and to the dot next to the project in the sidebar. It does not change the theme of the rest of the app or of the project's sessions: the app-wide brand theme stays yours to choose, and switching themes as you move between sessions would be jarring.
Logos are stored with the project, in a hidden .branding folder inside its assets folder. They are not listed as reference files and are not given to agents.
Spend and the activity log
Each project keeps a small activity log, mission-log.jsonl in the project's folder (the newest few hundred entries). Spend is the cost of each turn as it finishes, added up for today (since midnight) and this week (since Monday).
Spend counts from the moment Mission Control first sees a session. For a session that was already running before you updated, the first turn after the update is not counted, because its own cost cannot be told apart from the session's earlier history.
Background tasks started before the window opened appear once the session reports them; When you open Mission Control it asks the server once which sessions have background tasks running, and shows all of them.