Every pane in Fermata’s settings, what each control does, and which ones you are most likely to change on day one.
Settings opens with ⌘, and is organized as panes down the left, in this order: General, Sessions, Loop, Project, Streams, Notifications, Mobile, MCP, Storage, Edge, and Pro & Dev. Two of them appear only when they apply: Streams needs Edge plus its Loop intake switch, and Mobile needs Pro. Edge is listed on every channel, because it is the only place to turn Edge on.Almost everything here is a default for new work. Changing a default never reaches back into a session or a piece that is already running.Two panes are worth knowing about before the rest. Sessions and Loop hold separate defaults for the two kinds of work, so a change in one does not affect the other. Project overrides either of them for a single project. Where defaults live explains which one wins.
General
Grouped into Getting Started, Interface, Power, Updates & Privacy, and Integrations.
Setting
What it does
Replay Welcome Tour
Replays the welcome card and the short tour of Home, Canvas, Loop, and the inspector.
Show in menu bar
Puts awake, Loop, and attention status in the menu bar.
Auto-scroll console to latest
Follows new log entries as they arrive.
Wrap long console lines
Shows full entries on multiple lines instead of truncating them.
Show newest activity first
Puts the most recent events at the top of the activity feed.
Terminal font size
Point size for the embedded terminal text only.
Text Size
Scales text across the app. Icons and the embedded terminal keep their own size.
Show a scroll bar on boards that scroll sideways
Under Scroll Bar. A draggable bar with paging arrows in the margin below the board. Trackpad and mouse scrolling work either way.
Prevent the Mac from sleeping
Under Keep Mac Awake. Holds the system awake so agents keep running. Off by default. Turning it on reveals While Agents Run and While App Is Open. Worth setting before you leave a hands-off run going.
Keep the display awake too
Also prevents the screen from sleeping. Uses more power.
Automatically check for updates
Periodic update checks, plus a Check for Updates Now button.
Send anonymous usage data
Anonymous counts of which features are used. On by default.
Send crash & freeze reports
Stack traces when Fermata crashes or freezes, so bugs can be fixed. On by default.
External Editor
Which editor a session’s Open in button launches: “None”, “VS Code”, “Cursor”, “Windsurf”, “Xcode”, “Zed”, or “Custom” with your own CLI command and app path. The pane shows whether the one you picked is installed.
Claude Config Directory
Points every session at a different Claude configuration folder, and decides which settings.json the model picker mirrors and which account Home’s usage tiles probe. The helper text reads “Overrides CLAUDE_CONFIG_DIR for every session. Leave it empty to use the CLAUDE_CONFIG_DIR Fermata was launched with, or ~/.claude when there is none.”
The two privacy rows are the same two choices the first-run notice offers, worded identically. See Privacy and data for what each one sends.
Sessions
Defaults for standalone sessions, the ones you start on the Canvas. Grouped into Model, Defaults, Worktrees, and Experimental.
The Sessions pane: the model, the provider card, the permission default, and the worktree conventions shared with pieces
Setting
What it does
Default Model
The model new sessions start on. Changeable per session when you spawn it.
”Model Provider”
Shows the provider detected from your environment, with a Force Anthropic API option for anything but the direct API, and a Re-read button when a gateway is detected. See Models and providers.
Default Permissions
The permission profile new sessions get. Applies to sessions you start yourself, not to pieces. See Where defaults live.
Open Sessions In
”New Window” or “Main Window”. Main Window shows the session inline in the center, keeping the sidebar and inspector.
Use worktrees by default
Under Git Worktrees, subtitled “Each new session gets its own worktree and git branch. Pieces always do.” It governs sessions only. Off by default, so sessions run in your checkout unless you turn this on. A piece always runs in its own worktree, whatever this toggle says.
Worktree Conventions
”Applies to new sessions. Worktree location and base branch also apply to new pieces; pieces take their branch pattern from the Loop tab. Existing sessions keep the values they were spawned with.” Branch pattern applies to sessions only and takes {session} (required), {piece} (the piece a session was started from, empty otherwise), and {date}; the default is fermata/{session}. Worktree location and Base branch apply to new sessions and pieces alike. Leave Base branch empty to auto-detect each project’s default branch. Per-project overrides live in the Project tab, under Branch Behavior.
Enable experimental Agent Teams
Under Experimental: Agent Teams. Lets a session spawn in-process teammates that share its worktree. Applies to every new session, requires Claude Code 2.1.32+, and uses significantly more tokens per session.
Loop
Defaults for pieces: the model, how hands-off a run is, and how many agents may run at once. Grouped into Model, Execution, Autonomy, Interview, and Lifecycle.
The Loop pane: the piece model, the agent limits, the permission default, the gates, and the passes
Setting
What it does
Default Model
The model new pieces use. Each phase can override it.
Default Effort
Reasoning effort for new pieces. “Auto” uses the CLI default.
Git Worktrees
A fixed rule, not a toggle: “Pieces always run in their own worktree. All agents on a piece share its branch, and changes are committed per agent.” The run refuses to start without a worktree.
Worktree Conventions
Branch pattern for pieces. Takes {piece} and {date}. Applies to new pieces only. Per-project branch patterns apply to sessions, not pieces.
Limits
Parallel agents caps a single piece. Global cap is the ceiling across all of them, so the Loop cannot swamp your machine. See Limits.
Open a pull request when a hands-off run finishes
Under Pull Requests. Turn it off to finish the run locally, without a PR.
Piece Permissions
The permission profile new pieces get. Applies to the build agents and to the rework sessions you start from a review; the planning phases run without tool approvals either way. See Where defaults live.
Require Plan Approval
Parks the run at the plan gate. See Gates. The third park gate, strategy approval, has no default here; it is set per piece.
Require Review Before PR
Parks the run at review, before a pull request is opened. See Gates.
Run Code Review Before PR
A pass, not a stop. Runs the code review and attaches its findings as advisory context before opening the PR. Appears only with Edge and its Code review switch on.
Run Work Review After Agents
A pass, on by default: “After the agents finish, one fresh agent checks that the plan was followed and the work was done, and never edits anything.” See gates for what a failing verdict does.
Spec Interview Depth
How hard the interview pushes before it drafts: “Quick”, “Balanced”, or “Thorough”. The Project pane overrides it per project.
Automatically tear down the worktree when marked Done
Under Cleanup on Done. Skips the confirmation dialog and tears the worktree down. See what happens to the worktree.
Auto-Archive Done Pieces
Hides finished pieces from the Done column after 14, 30, or 90 days. “Off” by default. Archiving is reversible and deletes nothing: the spec, strategy, summary, and learnings all stay.
Piece Permissions is deliberately not the same control as the Sessions pane’s Default Permissions, and it starts on a looser setting. See how much happens without you for why.
Project
Per-project overrides. Every card inherits the global default until you switch the override on, and the card shows you what it is inheriting. The concurrency ceiling, your account, sync, and app-wide preferences stay global.
Setting
What it does
Default Model
One override governing both this project’s pieces and its sessions. A piece takes its model when it is created and then keeps it.
Default Permissions
The profile this project’s sessions run under, inheriting from the Sessions pane.
Piece Permissions
The profile this project’s pieces run under, inheriting from the Loop pane. Deliberately independent of the session override, so tightening one never moves the other.
Use Worktrees for Sessions
”Whether this project’s new sessions get their own worktree and branch. Pieces always run in a worktree.”
Require Plan Approval, Require Review Before PR, Run Code Review Before PR, Run Work Review After Agents
The same two gates and two passes as the Loop pane, for this project only. Code review appears only with Edge on.
PR Conflict Resolution
How Fermata brings the base branch into a PR branch when resolving conflicts. “Merge” is the safe default: no force-push, stable PR commits. “Rebase” rewrites the branch and force-pushes.
Branch Behavior
Overrides the global worktree conventions for this project; leave a field empty to inherit the global default. Worktree location and Base branch apply to new sessions and pieces. Session branch pattern applies to sessions only, since pieces use the Loop tab’s pattern. Base branch is a menu, not a text field: “Auto-detect · main” style, naming the repo’s detected default first, then its other local branches, with a checkmark on the one in effect. A branch no longer in the repo still gets its own row, marked “missing” in red, instead of silently falling back.
Claude Config Directory
A Claude configuration folder for this project’s sessions only. The helper text reads “Overrides CLAUDE_CONFIG_DIR for this project’s sessions. Leave it empty to use the CLAUDE_CONFIG_DIR Fermata was launched with, or ~/.claude when there is none.”
Project Instructions
Standing context handed to every agent in this project. See Project instructions.
The Project tab's Branch Behavior card: the Base branch menu with Auto-detect and the repo's local branches
Streams
Appears only with Edge on and its Loop intake switch on.
Stream Sources are the accounts Fermata reads issues from; keys stay in your Keychain. The “Connect an account” row has Linear… and GitHub…; each connected account is a row naming the kind and the account (“Linear · Acme”) with a health line, and its menu has Check now and Disconnect account…. With a project picked in the scope switcher, the pane leads with that project’s Streams and splits the accounts into the ones this project reads and “Other accounts”. With “All projects” picked, it also carries Check for new issues every, the interval for Stream checks. See Connect Linear and GitHub and Add a stream.
Settings → Streams: the accounts Fermata reads issues from
Notifications
Setting
What it does
Required Input
Approvals and agent questions. The one to leave on.
Session Completed
Sessions that finish successfully.
Failures
Failed sessions, pull requests, and planning steps. Split out from completions deliberately, so muting the chatter never mutes the one thing that has to get through.
Piece phase changes
Subtitled “As a piece moves from one phase to the next”. Notifies as a piece moves between phases.
Play sound with notifications
Adds a sound to all of the above.
Mobile
Appears once the companion is available to your account.
Pairing for the phone companion: Generate Pairing QR Code, then scan it from the phone. Once paired, the pane shows the device name, live sync health, an “End-to-end encrypted” confirmation, and Unpair. See The phone companion.
MCP
The pane appears on every channel. The server is off until you turn on MCP server, and the rows that depend on it stay greyed out until then.
Setting
What it does
MCP server
”Let an outside Claude Code drive pieces locally”. Off by default.
Ask before runs and pull requests
”Approve each one in Fermata”: adds a confirmation card in front of every run and pull request a client asks for. Off by default.
The Preferred port field defaults to 8787: type a port and press Apply. Fermata tries that port first, then the next nine, then whatever the system offers; a port change takes effect at the next start or Retry, never underneath a call already in flight.Once the server is running, the pane shows the bound host and port, a health readout, and whether Claude Code currently has the server registered. The “Endpoint” card carries Register (or Unregister) and Regenerate Token. The “Connect a client” card switches between three methods, One-off, Shell alias, and Register, and its “Copy” row has Instructions and Inline Config. See connect a client.
Storage
Setting
What it does
Auto-Save
How often session state is written to disk: 15s, 30s, or 60s.
Keep full history for
Retention before old sessions compress to a summary: “1 day”, “7 days”, “14 days”, or “Forever”. Compression is permanent. Sessions stay visible either way; pin one from its context menu to keep its full history regardless of age.
Include subagent transcripts
Keeps subagent messages alongside the parent session. Costs disk, buys you the full picture later.
Edge
The channel switch, Enable Edge features, and a “Features” card with one switch per preview feature: Code review, Web diff viewer, Loop intake, and Cost ceiling. See Edge features.
Settings → Edge: the channel switch and one switch per preview feature, Cost ceiling marked Pro
Pro & Dev
“Current Tier” reads “Free” or “Pro”. Free is the whole desktop app, and nothing here is required for normal use. Pro is unlocked by an “Invite Code” during the phone companion’s beta. It turns on the companion and the sync it runs over, the spend insights cards on Analytics, and the cost ceiling behind Edge. See the phone companion.The Edge switch is not here. It has its own pane, described on Edge features.
Pro & Dev: the current tier and the invite code
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fermata","description":"Documentation for Fermata, the native macOS software factory. A piece goes from a guided interview to an opened pull request; the Loop board runs many of them; you decide how much happens without you.","colors":{"primary":"#AF52DE","light":"#C273E4","dark":"#8A3FB5"},"logo":{"light":"https://mintcdn.com/keliosllc/Gxg2XE8PYlAtgsGS/logo/light.svg?fit=max\u0026auto=format\u0026n=Gxg2XE8PYlAtgsGS\u0026q=85\u0026s=4fda3dd5f964364dcc61b95806f559a4","dark":"https://mintcdn.com/keliosllc/Gxg2XE8PYlAtgsGS/logo/dark.svg?fit=max\u0026auto=format\u0026n=Gxg2XE8PYlAtgsGS\u0026q=85\u0026s=cafe5dc4e472951febff9d7f5a7e1d58","href":"https://docs.fermata.run"},"favicon":"https://mintcdn.com/keliosllc/Gxg2XE8PYlAtgsGS/favicon.svg?fit=max\u0026auto=format\u0026n=Gxg2XE8PYlAtgsGS\u0026q=85\u0026s=be53aed1b349a3a1ca82d38080848d16","appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://fermata.run","label":"fermata.run"}],"primary":{"type":"button","label":"Download","href":"https://fermata.run"}},"footer":{"socials":{"website":"https://fermata.run"},"links":[{"header":"Legal","items":[{"label":"Privacy Policy","href":"https://fermata.run/privacy"},{"label":"Terms of Service","href":"https://fermata.run/terms"}]}]},"seo":{"metatags":{"og:type":"website","og:site_name":"Fermata Docs","twitter:card":"summary_large_image"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Download","icon":"download","href":"https://fermata.run"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"keliosllc","hasAudioNarration":false,"actualSubdomain":"keliosllc","customDomains":["docs.fermata.run"],"gitSource":{"type":"github","owner":"kelios-io","repo":"fermata","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af724f99b8f20269efaf354","clientVersion":"0.0.4131","searchFilterCounts":[{"language":"default","tag":"Documentation","count":39},{"language":"default","tag":"How much happens without you","count":6},{"language":"default","tag":"The piece","count":6},{"language":"default","tag":"Drive Fermata from Claude","count":5},{"language":"default","tag":"Configuration","count":4},{"language":"default","tag":"Start here","count":4},{"language":"default","tag":"Reference","count":4},{"language":"default","tag":"Streams and Tracks","count":4},{"language":"default","tag":"The Loop board","count":3},{"language":"default","tag":"Surfaces","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html.dark body{background-color:rgb(var(--background-dark))}html:not(.dark) body{background-color:rgb(var(--background-light))}html.dark footer a[href*=\"mintlify.com\"]{color:#a3a1a5}"}],"page":{"pagePath":"configuration/settings","slug":"/configuration/settings","pageMetadata":{"title":"Fermata settings, pane by pane","sidebarTitle":"Settings","description":"Every pane in Fermata's settings, what each control does, and which ones you are most likely to change on day one.","href":"/configuration/settings"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Every pane in Fermata’s settings, what each control does, and which ones you are most likely to change on day one.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Frame,Heading,Note,OptimizedImage,Table}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Settings opens with `,_jsx(_components.strong,{children:`⌘,`}),` and is organized as panes down the left, in this order: General, Sessions, Loop, Project, Streams, Notifications, Mobile, MCP, Storage, Edge, and Pro \u0026 Dev. Two of them appear only when they apply: `,_jsx(_components.strong,{children:`Streams`}),` needs `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge`}),` plus its `,_jsx(_components.strong,{children:`Loop intake`}),` switch, and `,_jsx(_components.strong,{children:`Mobile`}),` needs Pro. `,_jsx(_components.strong,{children:`Edge`}),` is listed on every channel, because it is the only place to turn Edge on.`]}),`\n`,_jsxs(_components.p,{children:[`Almost everything here is a `,_jsx(_components.em,{children:`default`}),` for new work. Changing a default never reaches back into a session or a piece that is already running.`]}),`\n`,_jsxs(_components.p,{children:[`Two panes are worth knowing about before the rest. `,_jsx(_components.strong,{children:`Sessions`}),` and `,_jsx(_components.strong,{children:`Loop`}),` hold separate defaults for the two kinds of work, so a change in one does not affect the other. `,_jsx(_components.strong,{children:`Project`}),` overrides either of them for a single project. `,_jsx(_components.a,{href:`/control/defaults`,children:`Where defaults live`}),` explains which one wins.`]}),`\n`,_jsx(Heading,{level:`2`,id:`general`,children:`General`}),`\n`,_jsx(_components.p,{children:`Grouped into Getting Started, Interface, Power, Updates \u0026 Privacy, and Integrations.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Replay Welcome Tour`})}),_jsx(_components.td,{children:`Replays the welcome card and the short tour of Home, Canvas, Loop, and the inspector.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Show in menu bar`})}),_jsx(_components.td,{children:`Puts awake, Loop, and attention status in the menu bar.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Auto-scroll console to latest`})}),_jsx(_components.td,{children:`Follows new log entries as they arrive.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Wrap long console lines`})}),_jsx(_components.td,{children:`Shows full entries on multiple lines instead of truncating them.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Show newest activity first`})}),_jsx(_components.td,{children:`Puts the most recent events at the top of the activity feed.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Terminal font size`})}),_jsx(_components.td,{children:`Point size for the embedded terminal text only.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text Size`})}),_jsx(_components.td,{children:`Scales text across the app. Icons and the embedded terminal keep their own size.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Show a scroll bar on boards that scroll sideways`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Scroll Bar`}),`. A draggable bar with paging arrows in the margin below the board. Trackpad and mouse scrolling work either way.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Prevent the Mac from sleeping`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Keep Mac Awake`}),`. Holds the system awake so agents keep running. Off by default. Turning it on reveals `,_jsx(_components.strong,{children:`While Agents Run`}),` and `,_jsx(_components.strong,{children:`While App Is Open`}),`. Worth setting before you leave a hands-off run going.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Keep the display awake too`})}),_jsx(_components.td,{children:`Also prevents the screen from sleeping. Uses more power.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Automatically check for updates`})}),_jsxs(_components.td,{children:[`Periodic update checks, plus a `,_jsx(_components.strong,{children:`Check for Updates Now`}),` button.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Send anonymous usage data`})}),_jsx(_components.td,{children:`Anonymous counts of which features are used. On by default.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Send crash \u0026 freeze reports`})}),_jsx(_components.td,{children:`Stack traces when Fermata crashes or freezes, so bugs can be fixed. On by default.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`External Editor`})}),_jsxs(_components.td,{children:[`Which editor a session’s `,_jsx(_components.strong,{children:`Open in`}),` button launches: “None”, “VS Code”, “Cursor”, “Windsurf”, “Xcode”, “Zed”, or “Custom” with your own CLI command and app path. The pane shows whether the one you picked is installed.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Claude Config Directory`})}),_jsxs(_components.td,{children:[`Points every session at a different Claude configuration folder, and decides which `,_jsx(_components.code,{children:`settings.json`}),` the model picker mirrors and which account Home’s usage tiles probe. The helper text reads “Overrides CLAUDE_CONFIG_DIR for every session. Leave it empty to use the CLAUDE_CONFIG_DIR Fermata was launched with, or ~/.claude when there is none.”`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The two privacy rows are the same two choices the first-run notice offers, worded identically. See `,_jsx(_components.a,{href:`/reference/privacy`,children:`Privacy and data`}),` for what each one sends.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`sessions`,children:`Sessions`}),`\n`,_jsx(_components.p,{children:`Defaults for standalone sessions, the ones you start on the Canvas. Grouped into Model, Defaults, Worktrees, and Experimental.`}),`\n`,_jsx(Frame,{caption:`The Sessions pane: the model, the provider card, the permission default, and the worktree conventions shared with pieces`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=963ce29d3007c7fefce16459302953b0`,alt:`Fermata Settings open on the Sessions pane, showing Default Model, Model Provider, Default Permissions, Open Sessions In, and the Git Worktrees toggle`,\"data-og-width\":`1640`,width:`1640`,\"data-og-height\":`1602`,height:`1602`,\"data-path\":`images/screenshots/S26.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=7518f6c7e2b74357e58b08e87b7efc94 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=9d1ef05e6dfebfa6d5dabc89ddb62967 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=b3770a14ac5663ea015c5203458090a8 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=9af9098f9974be37e380ef07d36f4393 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=5ce632d0fa70a6f8301e1d5fa48ea955 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S26.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=503d5ad31e22923412ab9ef89f6c85bb 2500w`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Model`})}),_jsx(_components.td,{children:`The model new sessions start on. Changeable per session when you spawn it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Model Provider”`}),_jsxs(_components.td,{children:[`Shows the provider detected from your environment, with a `,_jsx(_components.strong,{children:`Force Anthropic API`}),` option for anything but the direct API, and a `,_jsx(_components.strong,{children:`Re-read`}),` button when a gateway is detected. See `,_jsx(_components.a,{href:`/configuration/models`,children:`Models and providers`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Permissions`})}),_jsxs(_components.td,{children:[`The permission profile new sessions get. Applies to sessions you start yourself, not to pieces. See `,_jsx(_components.a,{href:`/control/defaults`,children:`Where defaults live`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Open Sessions In`})}),_jsx(_components.td,{children:`”New Window” or “Main Window”. Main Window shows the session inline in the center, keeping the sidebar and inspector.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Use worktrees by default`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Git Worktrees`}),`, subtitled “Each new session gets its own worktree and git branch. Pieces always do.” It governs sessions only. Off by default, so sessions run in your checkout unless you turn this on. A piece always runs in its own worktree, whatever this toggle says.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Worktree Conventions`})}),_jsxs(_components.td,{children:[`”Applies to new sessions. Worktree location and base branch also apply to new pieces; pieces take their branch pattern from the Loop tab. Existing sessions keep the values they were spawned with.” `,_jsx(_components.strong,{children:`Branch pattern`}),` applies to sessions only and takes `,_jsx(_components.code,{children:`{session}`}),` (required), `,_jsx(_components.code,{children:`{piece}`}),` (the piece a session was started from, empty otherwise), and `,_jsx(_components.code,{children:`{date}`}),`; the default is `,_jsx(_components.code,{children:`fermata/{session}`}),`. `,_jsx(_components.strong,{children:`Worktree location`}),` and `,_jsx(_components.strong,{children:`Base branch`}),` apply to new sessions and pieces alike. Leave `,_jsx(_components.strong,{children:`Base branch`}),` empty to auto-detect each project’s default branch. Per-project overrides live in the Project tab, under Branch Behavior.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Enable experimental Agent Teams`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Experimental: Agent Teams`}),`. Lets a session spawn in-process teammates that share its worktree. Applies to every new session, requires Claude Code 2.1.32+, and uses significantly more tokens per session.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`loop`,children:`Loop`}),`\n`,_jsx(_components.p,{children:`Defaults for pieces: the model, how hands-off a run is, and how many agents may run at once. Grouped into Model, Execution, Autonomy, Interview, and Lifecycle.`}),`\n`,_jsx(Frame,{caption:`The Loop pane: the piece model, the agent limits, the permission default, the gates, and the passes`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=f94e8aa5fba1d7ce7a48a5524f60c285`,alt:`Fermata Settings open on the Loop pane, showing Default Model, Default Effort, Limits, Piece Permissions, and the Require Plan Approval, Require Review Before PR, Run Code Review Before PR, and Run Work Review After Agents toggles`,\"data-og-width\":`1640`,width:`1640`,\"data-og-height\":`1602`,height:`1602`,\"data-path\":`images/screenshots/S25.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=2916848438037e3b5bef228cd651263e 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=8832730f7a0c57b24ebe773db9b21bc3 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=2329976dfcb75b653220d82074e0a32a 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=38e2101089f0fca73a7aaf17768e1a99 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=38634e70c87bea16da1e25c38e0a752c 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S25.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=2aff7196352274e06a7d7281ae314d94 2500w`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Model`})}),_jsx(_components.td,{children:`The model new pieces use. Each phase can override it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Effort`})}),_jsx(_components.td,{children:`Reasoning effort for new pieces. “Auto” uses the CLI default.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Git Worktrees`})}),_jsx(_components.td,{children:`A fixed rule, not a toggle: “Pieces always run in their own worktree. All agents on a piece share its branch, and changes are committed per agent.” The run refuses to start without a worktree.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Worktree Conventions`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Branch pattern`}),` for pieces. Takes `,_jsx(_components.code,{children:`{piece}`}),` and `,_jsx(_components.code,{children:`{date}`}),`. Applies to new pieces only. Per-project branch patterns apply to sessions, not pieces.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Limits`})}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Parallel agents`}),` caps a single piece. `,_jsx(_components.strong,{children:`Global cap`}),` is the ceiling across all of them, so the Loop cannot swamp your machine. See `,_jsx(_components.a,{href:`/loop/limits`,children:`Limits`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Open a pull request when a hands-off run finishes`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Pull Requests`}),`. Turn it off to finish the run locally, without a PR.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Piece Permissions`})}),_jsxs(_components.td,{children:[`The permission profile new pieces get. Applies to the build agents and to the rework sessions you start from a review; the planning phases run without tool approvals either way. See `,_jsx(_components.a,{href:`/control/defaults`,children:`Where defaults live`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Require Plan Approval`})}),_jsxs(_components.td,{children:[`Parks the run at the plan gate. See `,_jsx(_components.a,{href:`/control/gates`,children:`Gates`}),`. The third park gate, strategy approval, has no default here; it is set per piece.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Require Review Before PR`})}),_jsxs(_components.td,{children:[`Parks the run at review, before a pull request is opened. See `,_jsx(_components.a,{href:`/control/gates`,children:`Gates`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Run Code Review Before PR`})}),_jsxs(_components.td,{children:[`A pass, not a stop. Runs the code review and attaches its findings as advisory context before opening the PR. Appears only with `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge`}),` and its Code review switch on.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Run Work Review After Agents`})}),_jsxs(_components.td,{children:[`A pass, on by default: “After the agents finish, one fresh agent checks that the plan was followed and the work was done, and never edits anything.” See `,_jsx(_components.a,{href:`/control/gates`,children:`gates`}),` for what a failing verdict does.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Spec Interview Depth`})}),_jsxs(_components.td,{children:[`How hard the interview pushes before it drafts: “Quick”, “Balanced”, or “Thorough”. The `,_jsx(_components.strong,{children:`Project`}),` pane overrides it per project.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Automatically tear down the worktree when marked Done`})}),_jsxs(_components.td,{children:[`Under `,_jsx(_components.strong,{children:`Cleanup on Done`}),`. Skips the confirmation dialog and tears the worktree down. See `,_jsx(_components.a,{href:`/piece/review-and-pull-request`,children:`what happens to the worktree`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Auto-Archive Done Pieces`})}),_jsx(_components.td,{children:`Hides finished pieces from the Done column after 14, 30, or 90 days. “Off” by default. Archiving is reversible and deletes nothing: the spec, strategy, summary, and learnings all stay.`})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Piece Permissions`}),` is deliberately not the same control as the Sessions pane’s `,_jsx(_components.strong,{children:`Default Permissions`}),`, and it starts on a looser setting. See `,_jsx(_components.a,{href:`/control/two-layers`,children:`how much happens without you`}),` for why.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`project`,children:`Project`}),`\n`,_jsx(_components.p,{children:`Per-project overrides. Every card inherits the global default until you switch the override on, and the card shows you what it is inheriting. The concurrency ceiling, your account, sync, and app-wide preferences stay global.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Model`})}),_jsx(_components.td,{children:`One override governing both this project’s pieces and its sessions. A piece takes its model when it is created and then keeps it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Permissions`})}),_jsxs(_components.td,{children:[`The profile this project’s sessions run under, inheriting from the `,_jsx(_components.strong,{children:`Sessions`}),` pane.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Piece Permissions`})}),_jsxs(_components.td,{children:[`The profile this project’s pieces run under, inheriting from the `,_jsx(_components.strong,{children:`Loop`}),` pane. Deliberately independent of the session override, so tightening one never moves the other.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Use Worktrees for Sessions`})}),_jsx(_components.td,{children:`”Whether this project’s new sessions get their own worktree and branch. Pieces always run in a worktree.”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Default Effort`})}),_jsx(_components.td,{children:`Reasoning effort for this project’s new pieces.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Spec Interview Depth`})}),_jsxs(_components.td,{children:[`”Quick”, “Balanced”, or “Thorough”. See `,_jsx(_components.a,{href:`/piece/interview-and-spec`,children:`The interview and the spec`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Auto-Archive Done Pieces`})}),_jsx(_components.td,{children:`”Off”, 14, 30, or 90 days, for this project.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Require Plan Approval`}),`, `,_jsx(_components.strong,{children:`Require Review Before PR`}),`, `,_jsx(_components.strong,{children:`Run Code Review Before PR`}),`, `,_jsx(_components.strong,{children:`Run Work Review After Agents`})]}),_jsx(_components.td,{children:`The same two gates and two passes as the Loop pane, for this project only. Code review appears only with Edge on.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PR Conflict Resolution`})}),_jsx(_components.td,{children:`How Fermata brings the base branch into a PR branch when resolving conflicts. “Merge” is the safe default: no force-push, stable PR commits. “Rebase” rewrites the branch and force-pushes.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Branch Behavior`})}),_jsxs(_components.td,{children:[`Overrides the global worktree conventions for this project; leave a field empty to inherit the global default. `,_jsx(_components.strong,{children:`Worktree location`}),` and `,_jsx(_components.strong,{children:`Base branch`}),` apply to new sessions and pieces. `,_jsx(_components.strong,{children:`Session branch pattern`}),` applies to sessions only, since pieces use the Loop tab’s pattern. `,_jsx(_components.strong,{children:`Base branch`}),` is a menu, not a text field: “Auto-detect · main” style, naming the repo’s detected default first, then its other local branches, with a checkmark on the one in effect. A branch no longer in the repo still gets its own row, marked “missing” in red, instead of silently falling back.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Claude Config Directory`})}),_jsx(_components.td,{children:`A Claude configuration folder for this project’s sessions only. The helper text reads “Overrides CLAUDE_CONFIG_DIR for this project’s sessions. Leave it empty to use the CLAUDE_CONFIG_DIR Fermata was launched with, or ~/.claude when there is none.”`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Project Instructions`})}),_jsxs(_components.td,{children:[`Standing context handed to every agent in this project. See `,_jsx(_components.a,{href:`/configuration/project-instructions`,children:`Project instructions`}),`.`]})]})]})]}),`\n`,_jsx(Frame,{caption:`The Project tab's Branch Behavior card: the Base branch menu with Auto-detect and the repo's local branches`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=436a3ba4b0a4ccc2409e46d7dedf9c3d`,alt:`The Project tab's Branch Behavior card with the Base branch menu open, showing Auto-detect · main followed by the repo's other local branches`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`1120`,height:`1120`,\"data-path\":`images/screenshots/S61.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=46850b8f122ad995860b3dc550a99f03 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=d76d6a4fe102614685796a9af0deb079 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=384a7dc8fe1c6557879fc4cf271004db 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=12f74aafd2989645937fe2e150dcf0e5 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=7d2a5ddc001f96a20d163a5c93ecfa6b 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S61.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=86bb0b5a2753d25addcf9774a6a7155c 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`streams`,children:`Streams`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Appears only with `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge`}),` on and its `,_jsx(_components.strong,{children:`Loop intake`}),` switch on.`]})}),`\n`,_jsxs(_components.p,{children:[`Stream Sources are the accounts Fermata reads issues from; keys stay in your Keychain. The “Connect an account” row has `,_jsx(_components.strong,{children:`Linear…`}),` and `,_jsx(_components.strong,{children:`GitHub…`}),`; each connected account is a row naming the kind and the account (“Linear · Acme”) with a health line, and its menu has `,_jsx(_components.strong,{children:`Check now`}),` and `,_jsx(_components.strong,{children:`Disconnect account…`}),`. With a project picked in the scope switcher, the pane leads with that project’s Streams and splits the accounts into the ones this project reads and “Other accounts”. With “All projects” picked, it also carries `,_jsx(_components.strong,{children:`Check for new issues every`}),`, the interval for Stream checks. See `,_jsx(_components.a,{href:`/streams/connect-trackers`,children:`Connect Linear and GitHub`}),` and `,_jsx(_components.a,{href:`/streams/add-a-stream`,children:`Add a stream`}),`.`]}),`\n`,_jsx(Frame,{caption:`Settings → Streams: the accounts Fermata reads issues from`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=01057a9d0c74268d364e046aaa8579db`,alt:`The Streams pane in Settings with a Linear row and a GitHub row, each showing a health line, Check now and Remove, and the Connect Linear and Connect GitHub buttons below`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`1120`,height:`1120`,\"data-path\":`images/screenshots/S33.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=324ee6a57bbdd10a4ba46c62fdda4844 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=74496699a27d0bff26e801d058b9f4ee 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=85cee7238ef06a5bd1d4acc742ab68fe 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=a7ba4ceb3094a247b7bfa943945bc194 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=a8fc4b9a9db5e94d4d50ae405ac269f6 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S33.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=e1c4b8919da5be325279216650f84324 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`notifications`,children:`Notifications`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Required Input`})}),_jsx(_components.td,{children:`Approvals and agent questions. The one to leave on.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Session Completed`})}),_jsx(_components.td,{children:`Sessions that finish successfully.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Failures`})}),_jsx(_components.td,{children:`Failed sessions, pull requests, and planning steps. Split out from completions deliberately, so muting the chatter never mutes the one thing that has to get through.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Piece phase changes`})}),_jsx(_components.td,{children:`Subtitled “As a piece moves from one phase to the next”. Notifies as a piece moves between phases.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Play sound with notifications`})}),_jsx(_components.td,{children:`Adds a sound to all of the above.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`mobile`,children:`Mobile`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Appears once the companion is available to your account.`})}),`\n`,_jsxs(_components.p,{children:[`Pairing for the phone companion: `,_jsx(_components.strong,{children:`Generate Pairing QR Code`}),`, then scan it from the phone. Once paired, the pane shows the device name, live sync health, an “End-to-end encrypted” confirmation, and `,_jsx(_components.strong,{children:`Unpair`}),`. See `,_jsx(_components.a,{href:`/mobile/companion`,children:`The phone companion`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`mcp`,children:`MCP`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`The pane appears on every channel. The server is off until you turn on `,_jsx(_components.strong,{children:`MCP server`}),`, and the rows that depend on it stay greyed out until then.`]})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`MCP server`})}),_jsx(_components.td,{children:`”Let an outside Claude Code drive pieces locally”. Off by default.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Ask before runs and pull requests`})}),_jsx(_components.td,{children:`”Approve each one in Fermata”: adds a confirmation card in front of every run and pull request a client asks for. Off by default.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Preferred port`}),` field defaults to 8787: type a port and press `,_jsx(_components.strong,{children:`Apply`}),`. Fermata tries that port first, then the next nine, then whatever the system offers; a port change takes effect at the next start or `,_jsx(_components.strong,{children:`Retry`}),`, never underneath a call already in flight.`]}),`\n`,_jsxs(_components.p,{children:[`Once the server is running, the pane shows the bound host and port, a health readout, and whether Claude Code currently has the server registered. The “Endpoint” card carries `,_jsx(_components.strong,{children:`Register`}),` (or `,_jsx(_components.strong,{children:`Unregister`}),`) and `,_jsx(_components.strong,{children:`Regenerate Token`}),`. The “Connect a client” card switches between three methods, `,_jsx(_components.strong,{children:`One-off`}),`, `,_jsx(_components.strong,{children:`Shell alias`}),`, and `,_jsx(_components.strong,{children:`Register`}),`, and its “Copy” row has `,_jsx(_components.strong,{children:`Instructions`}),` and `,_jsx(_components.strong,{children:`Inline Config`}),`. See `,_jsx(_components.a,{href:`/mcp/connect`,children:`connect a client`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`storage`,children:`Storage`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`What it does`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Auto-Save`})}),_jsx(_components.td,{children:`How often session state is written to disk: 15s, 30s, or 60s.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Keep full history for`})}),_jsx(_components.td,{children:`Retention before old sessions compress to a summary: “1 day”, “7 days”, “14 days”, or “Forever”. Compression is permanent. Sessions stay visible either way; pin one from its context menu to keep its full history regardless of age.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Include subagent transcripts`})}),_jsx(_components.td,{children:`Keeps subagent messages alongside the parent session. Costs disk, buys you the full picture later.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`edge`,children:`Edge`}),`\n`,_jsxs(_components.p,{children:[`The channel switch, `,_jsx(_components.strong,{children:`Enable Edge features`}),`, and a “Features” card with one switch per preview feature: `,_jsx(_components.strong,{children:`Code review`}),`, `,_jsx(_components.strong,{children:`Web diff viewer`}),`, `,_jsx(_components.strong,{children:`Loop intake`}),`, and `,_jsx(_components.strong,{children:`Cost ceiling`}),`. See `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge features`}),`.`]}),`\n`,_jsx(Frame,{caption:`Settings → Edge: the channel switch and one switch per preview feature, Cost ceiling marked Pro`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=29f2ba7386b453e130f80ad48650e765`,alt:`Settings' Edge pane: the Enable Edge features toggle at top and the Features card below listing Code review, MCP control plane, Web diff viewer, Loop intake, and Cost ceiling with a Pro badge`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`1120`,height:`1120`,\"data-path\":`images/screenshots/S54.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=9fc1f12e90dc904a4cbc9e26ed56ef99 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=ea0d653bbcf7ffd89e1f5bc2c149a53f 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=49f4edd71c87000697b5f3638c614792 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=ecddc6f8409573e0d7f51586922db57f 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=5aff3d8f0f87cba20f2da287bcc14967 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S54.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=14919f4c666f6ba5dcf4103c1760a8d1 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`pro-\u0026-dev`,children:`Pro \u0026 Dev`}),`\n`,_jsxs(_components.p,{children:[`“Current Tier” reads “Free” or “Pro”. Free is the whole desktop app, and nothing here is required for normal use. Pro is unlocked by an “Invite Code” during the phone companion’s beta. It turns on the companion and the sync it runs over, the spend insights cards on `,_jsx(_components.a,{href:`/reference/analytics`,children:`Analytics`}),`, and the cost ceiling behind `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge`}),`. See `,_jsx(_components.a,{href:`/mobile/companion`,children:`the phone companion`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The Edge switch is not here. It has its own pane, described on `,_jsx(_components.a,{href:`/configuration/edge`,children:`Edge features`}),`.`]}),`\n`,_jsx(Frame,{caption:`Pro \u0026 Dev: the current tier and the invite code`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=3d2980b28647ee1f2eec1d1f54ee4a18`,alt:`The Pro and Dev pane of Settings showing Current Tier reading Free and an Invite Code field with an Activate button`,\"data-og-width\":`1640`,width:`1640`,\"data-og-height\":`1602`,height:`1602`,\"data-path\":`images/screenshots/S31.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=280\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=912daa3041583db4ae86b487c648ae84 280w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=560\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=6600e1f38ec877899ef9d0ccdadda072 560w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=840\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=a4d9320dde139aeb5c9fbdaa7faad977 840w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=1100\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=f6e5fa514c7ec180c69e9d19e4091933 1100w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=1650\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=d6c0176d1295b8dd08d8f42517c51f57 1650w, https://mintcdn.com/keliosllc/pg1SGBNjstRDbutF/images/screenshots/S31.png?w=2500\u0026fit=max\u0026auto=format\u0026n=pg1SGBNjstRDbutF\u0026q=85\u0026s=dcbb7a2890fa7e4768841d62d29711c4 2500w`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Fermata settings, pane by pane","sidebarTitle":"Settings","description":"Every pane in Fermata's settings, what each control does, and which ones you are most likely to change on day one.","href":"/configuration/settings"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"General","slug":"general","depth":2,"children":[]},{"title":"Sessions","slug":"sessions","depth":2,"children":[]},{"title":"Loop","slug":"loop","depth":2,"children":[]},{"title":"Project","slug":"project","depth":2,"children":[]},{"title":"Streams","slug":"streams","depth":2,"children":[]},{"title":"Notifications","slug":"notifications","depth":2,"children":[]},{"title":"Mobile","slug":"mobile","depth":2,"children":[]},{"title":"MCP","slug":"mcp","depth":2,"children":[]},{"title":"Storage","slug":"storage","depth":2,"children":[]},{"title":"Edge","slug":"edge","depth":2,"children":[]},{"title":"Pro \u0026 Dev","slug":"pro-\u0026-dev","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"keliosllc","siteName":"Fermata","title":"Fermata settings, pane by pane - Fermata","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-11T18:04:52.421Z","originalFileLocation":"configuration/settings.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Every pane in Fermata\u0026#x27;s settings, what each control does, and which ones you are most likely to change on day one.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fermata\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Fermata settings, pane by pane - Fermata\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every pane in Fermata\u0026#x27;s settings, what each control does, and which ones you are most likely to change on day one.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fermata Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fermata.run/configuration/settings\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://keliosllc.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Fermata+settings%2C+pane+by+pane\u0026amp;description=Every+pane+in+Fermata%27s+settings%2C+what+each+control+does%2C+and+which+ones+you+are+most+likely+to+change+on+day+one.\u0026amp;theme=e91e1de3607ef39a751220e0\u0026amp;signature=0679bf503d304ee4c4fe8d4703e8f873454639b6a790852bb8da4755db71707e\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Fermata settings, pane by pane - Fermata\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every pane in Fermata\u0026#x27;s settings, what each control does, and which ones you are most likely to change on day one.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://keliosllc.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Fermata+settings%2C+pane+by+pane\u0026amp;description=Every+pane+in+Fermata%27s+settings%2C+what+each+control+does%2C+and+which+ones+you+are+most+likely+to+change+on+day+one.\u0026amp;theme=e91e1de3607ef39a751220e0\u0026amp;signature=0679bf503d304ee4c4fe8d4703e8f873454639b6a790852bb8da4755db71707e\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/keliosllc/9CiYnSuT-7TjO9_t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fermata\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#AF52DE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fermata.run/configuration/settings\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/configuration/settings.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fermata.run/#organization\",\"name\":\"Fermata\",\"url\":\"https://docs.fermata.run\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/keliosllc/Gxg2XE8PYlAtgsGS/logo/light.svg?fit=max\u0026auto=format\u0026n=Gxg2XE8PYlAtgsGS\u0026q=85\u0026s=4fda3dd5f964364dcc61b95806f559a4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fermata.run#website\",\"name\":\"Fermata\",\"url\":\"https://docs.fermata.run\",\"publisher\":{\"@id\":\"https://docs.fermata.run/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fermata.run/configuration/settings#webpage\",\"url\":\"https://docs.fermata.run/configuration/settings\",\"name\":\"Fermata settings, pane by pane\",\"description\":\"Every pane in Fermata's settings, what each control does, and which ones you are most likely to change on day one.\",\"dateModified\":\"2026-10-11T18:04:52.421Z\",\"isPartOf\":{\"@id\":\"https://docs.fermata.run#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fermata.run/configuration/settings#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fermata.run/configuration/settings#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Fermata\",\"item\":\"https://docs.fermata.run\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fermata settings, pane by pane\",\"item\":\"https://docs.fermata.run/configuration/settings\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.fermata.run/configuration/settings#article\",\"headline\":\"Fermata settings, pane by pane\",\"name\":\"Fermata settings, pane by pane\",\"description\":\"Every pane in Fermata's settings, what each control does, and which ones you are most likely to change on day one.\",\"url\":\"https://docs.fermata.run/configuration/settings\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fermata.run/configuration/settings#webpage\"},\"dateModified\":\"2026-10-11T18:04:52.421Z\",\"publisher\":{\"@id\":\"https://docs.fermata.run/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fermata.run#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Fermata\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Fermata\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/configuration/settings.md","siteName":"Fermata","nav":{"global":{"anchors":[{"anchor":"Download","icon":"download","href":"https://fermata.run"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Start here","pages":[{"title":"Fermata docs: a software factory for Claude Code on macOS","sidebarTitle":"What Fermata is","href":""},{"title":"Install Fermata on macOS and run it the first time","sidebarTitle":"Install and first run","href":"/start/install"},{"title":"Your first piece: from a feature idea to a pull request","sidebarTitle":"Your first piece","href":"/start/first-piece"},{"title":"How Fermata runs Claude Code, and what it adds","sidebarTitle":"Fermata and Claude Code","href":"/start/fermata-and-claude-code"}]},{"group":"The piece","pages":[{"title":"The spec interview: turn a rough idea into a spec","sidebarTitle":"The interview and the spec","href":"/piece/interview-and-spec"},{"title":"Strategy: the plan a piece is built from","sidebarTitle":"Strategy","href":"/piece/strategy"},{"title":"Agents: Claude Code agents in the piece's git worktree","sidebarTitle":"Agents","href":"/piece/agents"},{"title":"When an agent fails: continue, retry, skip, or accept","sidebarTitle":"When an agent fails","href":"/piece/when-an-agent-fails"},{"title":"Review the diff and open the pull request","sidebarTitle":"Review and the pull request","href":"/piece/review-and-pull-request"},{"title":"PR watch: keep an open pull request moving","sidebarTitle":"PR watch","href":"/piece/pr-watch"}]},{"group":"How much happens without you","pages":[{"title":"The two layers of control: lanes and permissions","sidebarTitle":"The two layers","href":"/control/two-layers"},{"title":"Lanes: choose how far a piece runs on its own","sidebarTitle":"Lanes","href":"/control/lanes"},{"title":"Gates: where an autonomous run stops for you","sidebarTitle":"Gates","href":"/control/gates"},{"title":"Permission profiles and approvals","href":"/control/permissions-and-approvals"},{"title":"Where defaults live: piece, project, or Settings","sidebarTitle":"Where defaults live","href":"/control/defaults"},{"title":"Notifications: what each banner says and when","sidebarTitle":"Notifications","href":"/control/notifications"}]},{"group":"The Loop board","pages":[{"title":"The Loop board: every piece from Backlog to Done","sidebarTitle":"The Loop board","href":"/loop/board"},{"title":"Limits: how many agents run at once","sidebarTitle":"Limits","href":"/loop/limits"},{"title":"Start a piece from a Linear or GitHub issue","sidebarTitle":"Starting from an issue","href":"/loop/from-an-issue"}]},{"group":"Streams and Tracks","pages":[{"title":"Connect Linear and GitHub","href":"/streams/connect-trackers"},{"title":"Add a stream: bring tracker issues in as Tracks","sidebarTitle":"Add a stream","href":"/streams/add-a-stream"},{"title":"Tracks: matched issues waiting for your review","sidebarTitle":"Tracks","href":"/streams/tracks"},{"title":"Review a Track, then approve or decline it","sidebarTitle":"Review and approve","href":"/streams/review-and-approve"}]},{"group":"Drive Fermata from Claude","pages":[{"title":"Drive Fermata from Claude Code over MCP","sidebarTitle":"Drive Fermata from Claude","href":"/mcp/overview"},{"title":"Connect Claude Code to Fermata's MCP server","sidebarTitle":"Connect a client","href":"/mcp/connect"},{"title":"What you can ask Claude to do through MCP","sidebarTitle":"What you can do","href":"/mcp/what-you-can-do"},{"title":"MCP consent and safety: what waits for you","sidebarTitle":"Consent and safety","href":"/mcp/consent-and-safety"},{"title":"Fermata MCP server tool reference","sidebarTitle":"MCP tool reference","href":"/reference/mcp-tools"}]},{"group":"Surfaces","pages":[{"title":"Home: what needs you, and the pieces in flight","sidebarTitle":"Home","href":"/surfaces/home"},{"title":"Canvas and standalone sessions","description":"The Canvas is the spatial view of running agents, and the place you start a one-off session. Every session is a node; a piece is a card you can expand.","href":"/surfaces/canvas-and-sessions"}]},{"group":"Configuration","pages":[{"title":"Fermata settings, pane by pane","sidebarTitle":"Settings","href":"/configuration/settings"},{"title":"Project instructions for every coding agent","sidebarTitle":"Project instructions","description":"Standing context every Claude Code agent in a project receives on every run, on top of the CLAUDE.md files and setup your Claude already provides.","href":"/configuration/project-instructions"},{"title":"Models and providers: Anthropic, Bedrock, Vertex","sidebarTitle":"Models and providers","href":"/configuration/models"},{"title":"Edge features: the preview channel","sidebarTitle":"Edge features","href":"/configuration/edge"}]},{"group":"Mobile companion","pages":[{"title":"The phone companion for iOS and Android","sidebarTitle":"The phone companion","href":"/mobile/companion"}]},{"group":"Reference","pages":[{"title":"Cost and usage: what a piece cost, by phase","sidebarTitle":"Cost and usage","href":"/reference/cost-and-usage"},{"title":"Project analytics from your Claude transcripts","sidebarTitle":"Project analytics","href":"/reference/analytics"},{"title":"Architecture: a native Mac harness for Claude Code","sidebarTitle":"Architecture overview","href":"/reference/architecture"},{"title":"Privacy and data: what stays on your Mac","sidebarTitle":"Privacy and data","href":"/reference/privacy"}]}]}]},"basePath":"","title":"Fermata settings, pane by pane - Fermata","buildId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","deploymentId":"dpl_5joLUXmnJgwqjrHAS4dxZrQTdxgh","dynamics":["07c022d89b","a74be98ba7","a9bb46feb3"],"chunks":["Frame-B_503rGq.js","DynamicMarkdown-BfddVCX7.js","zoom-image-lightbox-B3yYlvdS.js","lightbox-handle-r17bVUz3.js","Markdown-DsWjhwJ4.js","clsx-B2t_mZQG.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CUljsAY7.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Cf70306N.js"]}