Core Concepts

FlightDeck has a small number of concepts. Once they click, everything else in the app follows from them.

Project

A project is a Git repository you have open in FlightDeck. You launch FlightDeck from inside a repo, and that repo becomes your first project. You can open several projects at once — each keeps its own agent sessions, worktrees, Git state, and base branch, and each runs in parallel in the background.

Agent tab (session)

An agent tab is the core unit of work. Each one bundles together:

  • one task branch — named flightdeck/<your-task-slug> by default,
  • one Git worktree — a checkout of that branch under .flightdeck/worktrees/, separate from your main checkout,
  • one primary agent process — the AI coding agent (OpenCode, Claude Code, Codex, Cursor, …) running in that worktree,
  • optional child shells — extra terminals in the same worktree.

Because every tab has its own worktree and branch, agents work at the same time without ever sharing a working directory. Your original checkout at the repo root stays untouched and serves as the base.

Worktree

A worktree is a Git feature that lets one repository have multiple working directories checked out at once, each on a different branch. FlightDeck creates one worktree per agent tab under .flightdeck/worktrees/<slug>, so each agent edits files in isolation. When you finish or abandon a tab, FlightDeck removes its worktree (the branch itself is kept unless you delete it).

Base branch

The base branch is the branch your task branches start from and merge back into — usually main. FlightDeck detects it automatically and tracks how far each agent branch has drifted from it, so you can see when a worktree needs a rebase or a base pull.

Child terminal

A child terminal is an extra shell you open inside an agent's worktree (Ctrl-t). It shares the worktree with the primary agent but runs independently — handy for running tests, inspecting output, or making a manual commit. See Terminals & Split View.

Agent status

Every agent reports a live status — at minimum idle vs in progress — shown as a colored indicator next to its tab:

  • 🔴 working — the agent is mid-turn,
  • 🟢 idle — the agent is waiting for a prompt,
  • 🔵 manual — a status label you set yourself (Ctrl-s), which never hides the real process state.

FlightDeck reads these from the agent's own lifecycle events, never from terminal output — so typing a prompt can't fool it. See Working with Agents.

The Git safety boundary

This is the guarantee that makes FlightDeck safe to point at real repositories.

What FlightDeck may do (all reversible or explicitly confirmed):

  • detect the repo root, base branch, and dirty state,
  • create the .flightdeck/ directory and append to .gitignore,
  • create and attach branches, create and recover worktrees,
  • push a branch — only after you confirm — and show you a PR compare URL,
  • remove a managed worktree (a dirty one only after you confirm discarding changes),
  • run a guarded local merge-back, a confirmed rebase, and a base pull after a PR merges.

You — or your agent — make every commit. The Git Workflow page covers each of these operations in detail.