Connect a tracker
Settings → Streams appears once the feature is on. It holds your Stream Sources: “Stream Sources are the accounts Fermata reads issues from. Keys stay in your Keychain.”
Settings → Streams: the accounts Fermata reads issues from
gh is logged in to github.com, one click on Use gh account, which names the logged-in account, connects it, and nothing is stored: “Fermata asks the GitHub CLI for its token when it reads issues.” Without the CLI, paste a fine-grained token with read access to Issues.
Either way the credential is checked against the tracker before anything is stored; a refused key keeps the sheet open with the reason and stores nothing.
Each connected source is a row naming the kind and the account it reads (“Linear · Acme”, “GitHub · octocat”), with a health line under it. “Connected” is green; otherwise the line says what is wrong: “Not checked yet”, “Rate limited, retry shortly”, “API key expired or revoked”, “GitHub CLI is logged out”. Health is checked when the pane appears and on Check now. The pane only reads; nothing in Streams writes to Linear or GitHub.
Remove confirms with “Remove this Stream Source?” and says what removal does. A pasted key is deleted from the Keychain; a CLI connection leaves the GitHub CLI logged in. Either way, “Pieces already started from its issues keep their links.”
Three ways in

Three tiles into a spec: Import a spec, From Linear, From GitHub
- The empty spec screen. Beside Import a spec, one tile per connected tracker: From Linear and From GitHub. The pick lands in the interview you are already in; see the interview and the spec.
- The New Piece sheet. Start from Linear issue and Start from GitHub issue, wherever the sheet opens: the Loop board, Home’s quick start, the Pieces hub.
- The Backlog ”+”. The same two buttons, but the issue parks as a draft instead of starting.
origin is on github.com, because a GitHub pick is scoped to that repository. A Linear pick searches the whole workspace.
On the New Piece sheet and the Backlog ”+”, a pick only fills the sheet: the title is taken from the issue, and a picked-issue block replaces the description with the key, the title, what the chosen action will do, and a way to remove it. Lane, model, and attachments stay whatever you set. Nothing runs until you press the sheet’s own button.
Pick the issue
The picker is a two-pane sheet: the list on the left, the preview on the right.
Pick an issue: the preview is what the agent reads; ↩ formats it into the spec, ⌥↩ uses it as the requirement
Two ways to take it
The footer offers two actions, and the difference is who writes the spec.- Format and evaluate (↩): the issue becomes the spec, then Format & validate runs. For an issue that is already spec-shaped and just needs the mechanical pass.
- Use as requirement (⌥↩): the issue is saved as
kickoff.mdand the spec is written from it. For an issue that says what, not how.
Parked in the Backlog
An issue picked from the Backlog ”+” becomes a draft carrying the issue instead of a description.
An issue parked in Backlog: the key chip is all the card shows
kickoff.md. The card and its inspector show the source chip, and the piece logs the start with the key (“Started from SUP-12”) when it releases. Drafts, release, and the lanes they land on are covered on the Loop board.
The branch and the pull request
A piece started from an issue keeps the link end to end.- The branch carries the key. A Linear key lowercases into the branch slug (
sup-142-parser-crash); a GitHub issue contributes its bare number. The key is read from the source link, not the piece name, so it survives the rename at spec approval. - The pull request closes the issue. Create PR puts one closing line on the first line of the description:
Closes SUP-142, orCloses owner/repo#142for GitHub. Any other closing reference the generated title or description picked up along the way is removed, so exactly one issue closes and it is the one you started from; the Create PR sheet carries a caption saying both. As everywhere in Fermata, it opens the pull request and you merge. - A base check after opening. GitHub only closes an issue when the pull request merges into the repository’s default branch. Once the PR is open, Fermata reads its real base, and when it is not the default, the piece’s activity log warns that the issue will stay open.