Skip to main content

Get started

How Spruce Thinks

Spruce's model is built on a few small ideas. Get these and everything else falls into place.

Two roots: Spruce project + code repos

Spruce separates planning from code.

  • A Spruce project is a versioned folder that holds your plan: artifacts, templates, views, actions, and config. It lives in your OS application-data directory and is itself a git repository, so you can push it to a remote and your team shares the same state.
  • A code repository is where your source code lives. You link code repos to a Spruce project. A project can have zero, one, or many linked repos.

The two stay on disk as separate git repositories with separate remotes. Spruce's UI weaves them together, but they sync independently.

Everything is a file

Your plan is plain text on disk, inside your Spruce project folder. Artifacts are markdown files. Templates are markdown files. Saved views are markdown files. Actions are markdown files. You can grep them, git diff them, or open them in any editor. When you push the Spruce project, your teammates see the same state after a pull — git is the sync layer.

Artifacts are the unit of work

An artifact is a structured markdown document: frontmatter fields (status, priority, assignee, relationships) plus a markdown body. Every feature, task, bug, chore, or memo is an artifact. They're created, edited, and linked inside Spruce, but on disk they're just files under artifacts/ in your Spruce project.

Spruce ships with five built-in artifact types:

TypeUse for
featureA unit of user-facing work, with optional child tasks and bugs
taskA concrete unit of implementation work
bugA defect, regression, or unexpected behavior
choreInternal work with no direct user impact (build upgrades, OE, dependency bumps)
memoA top-level container for grouping related features, written thinking, epics, PRFAQs

See Artifact Types for the full breakdown.

Templates are your schema

Each artifact type has a template that defines its fields, valid values, and UI behaviour. Templates are also files, stored in templates/ inside your Spruce project, so your team's schema is versioned with the rest of your plan. Edit a template to change how every artifact of that type behaves. See Editing Built-in Templates.

Worktrees connect artifacts to code

When you're ready to implement an artifact, click Start. Spruce creates a git branch in the linked code repo named after the artifact's ID (e.g. artifact/SPR-xxxxx) and a dedicated worktree: an isolated checkout at a path keyed off the same ID (e.g. <repo>/.worktrees/SPR-xxxxx/). You can create terminal sessions inside that worktree and work on multiple artifacts in parallel without branches interfering. See Branches and Worktrees.

Artifact header with the Start button highlightedArtifact header with the Start button highlighted

Agents are real collaborators

Spruce treats AI coding agents as first-class participants. You configure an action (a project-defined terminal command) that launches an agent (Claude Code, Codex, or any CLI agent) inside an artifact's worktree. The agent reads the artifact, writes code, and comments back through Spruce's MCP tools.

Comments show whoever authored them: your name on user comments, the agent's runtime name (e.g. claude or codex) on agent comments. Replies on an open thread can also be forwarded into a running agent session so the agent picks up your feedback mid-loop. See Comments and Agents & Actions.

The shape of a session

A typical loop in Spruce starts by sketching the work in an artifact, then drives it through three agent phases (plan, implement, review), reviewing the output between each:

  1. Sketch the work

    Create or open an artifact, write a short description, set fields, link related work.

  2. Start

    Click Start. Spruce creates a branch and worktree, both keyed to the artifact ID.

  3. Plan

    Run the Plan action. The agent reads the artifact and proposes an implementation plan as comments on the artifact. Review the plan, reply with corrections, iterate until you're happy.

  4. Implement

    Run the Implement action. The agent writes code in the worktree against the agreed plan. Review the diffs in the tool panel's Git tab; leave line comments where you want changes.

  5. Review

    Run the Review action. The agent self-reviews the diff and surfaces issues. Address what's worth addressing, push back on what isn't.

  6. Ship

    Push the code branch, open a PR, move the artifact to Done.

  7. Sync

    Sync the Spruce project so your team sees the status change.

The plan / implement / review actions ship as defaults; you can edit them or add your own. See Action Recipes.

Split view: an artifact on the left, a worktree terminal running an agent on the rightSplit view: an artifact on the left, a worktree terminal running an agent on the right