A visual workspace for spec-driven development

FABER is a desktop app for developers who write the spec first. A Card carries its Plan; drop it into a Column and a Claude Code Run builds from that Plan, in its own git worktree, under your own login.

6 default Columns, To-Do to Done. Works with Claude Code, Jira, Git, GitLab and GitHub.

Every Card with its Plan, its Column and its Runs

Cards come from Jira or are written here. Each carries its Plan, the spec the work is built from, with its Column, its Worktree and every Run. Open one and the Run's session sits beside the list. See how a Plan is reviewed

The spec first, then the Run, on your own machine

Every Run starts from a Plan you approved: a Claude Code session on your own machine, under your own login, in a git worktree of its own. FABER never holds an API key, and the spec it builds from is a file in your repo.

Agent Runtime
Claude Code, the unmodified CLI
Credential
Your own subscription login
State
Files in .faber/, committed
Worktrees
One per Card, branched from main
Runs
Parallel across Cards, serial per Card
Jira
Proposes a transition, never silent

One Card, from spec to Done

Drop the Card into Plan and a Run writes the spec as a Plan. Approve it, drop the Card into Implement, and the code follows the Plan; Test and Review run on their own. Done proposes the Jira transition.

  1. Run · faber-planDrag the Card into Plan: a Run writes the Plan from the Issue.
  2. Plan approvedAnnotate it, request a revision, approve the revision you read.
  3. Run · implementDrag it into Implement: the Run builds from the Plan in its own Worktree.
  4. For Review · JiraTest and Review follow on their own; Done proposes the Jira transition.

The Plan drives the Run, one Worktree per Card

Starts a Run from the approved Plan

Drop a Card into Implement and a Run starts at its Worktree root, with the Card and its Plan in the prompt.

  • FAB-66 moved to TestImplement succeeded in 11 minOpen
  • FAB-70 needs inputKeep the old animation behind a flag, or remove it?
  • EXP-412 now For ReviewConfirm the Jira transition, or dismiss it

Checks out one Worktree per Card

Each Card gets its own git worktree, branched from fresh main; Runs of different Cards never collide.

Gates Implement on an approved Plan

A Plan is draft, approved or superseded; Implement refuses to start until you approve the snapshot you read.

FAB-92 · Plan approval
3 of 5
  • Plan written by faber-plan
  • 2 annotations answered by the agent
  • Revision 2 reviewed
  • Annotations resolved
  • Approved, Implement unlocked

Lists every Session, resumable

The Sessions view lists each Claude Code session in the Workspace, terminal ones included, and resumes it.

SpendWise / Sessions
  • 77Implement · FAB-77.worktrees/FAB-77 · opusRunning14m
  • 81Plan · FAB-81.worktrees/FAB-81 · opusRunning3m
  • 70Review · FAB-70.worktrees/FAB-70 · opusNeeds input24m
  • TTerminal sessionspendwise-api · sonnetResumable1h
  • 66Implement · FAB-66.worktrees/FAB-66 · opusDone2h
  • 61Test · FAB-61.worktrees/FAB-61 · opusDone3h

Reviews the spec like a document

The Plan is your spec. The agent writes it from blocks: callouts, diagrams, tables, annotated code and open questions. You annotate a block or a phrase and request a revision; the agent answers each note as addressed or declined.

Read the setup steps

Notes
Comment, revision request, question
History
One snapshot per revision
Revision prompt
The open notes only, never the whole Plan
Approval
Bound to the revision you read

Terminal, editor and git beside the Board

Each tool opens in the Card's Worktree by default, and in the main clone when no Card is open.

A shell in the Workspace, a Project or a Card's Worktree, in tabs. The Test Column runs the same command the agent ran, in the same checkout.

See how a Run starts

Questions

What developers ask before they open their first Workspace.

Does FABER need an API key?

No. Every Run is the unmodified Claude Code CLI signed in with your own subscription; the API key variables never reach it.

Which Jira fields does FABER change?

None without you. Jira owns the title, criteria and status; FABER proposes a transition and waits for your confirmation.

Where are the Cards and Plans stored?

In the Workspace: .faber/board.json, one file per Card and plans/<slug>/plan.mdx, the spec, all committed. Session ids and logs stay local.

Can two Cards run at once?

Yes, each in its own Worktree. A Column marked exclusive, such as Test, queues its Runs one at a time.

Set up FABER in 3 steps

1

Install Claude Code and sign in

FABER spawns the unmodified claude binary under your subscription login and strips every API key from its environment.

Prerequisites
3 of 4
  • Claude Code 2.1.310 or later
  • Signed in with your subscription
  • API key variables stripped from the Run
  • Atlassian token in the keychain
2

Open a Workspace

Point the Onboarding Wizard at a directory. It finds the Projects and the agent's rules, skills and hooks already there, or scaffolds them from the bundled Catalog.

3 Projects linked, 3 Components found
  • spendwise-apiGit repository
  • spendwise-webGit repository
  • spendwise-jobsCloned from GitLab
  • .claudeSkills, Rules, Guardrails
  • .mcp.jsonMCP Servers
  • AGENTS.mdRule
3

Pull an Issue

Search the linked Jira board and pick the Issues to mirror. Jira keeps the title and the criteria; FABER keeps the rest.