This tutorial was AI-generated and is being fleshed out. Content may be incomplete or change.

Plumbing Reference

Complete reference for all deciduous commands, node types, and edge types.

Quick Reference Card

# Initialize
deciduous init

# Add nodes
deciduous add goal "Title" -c 90 -p "User prompt"
deciduous add decision "Title" -c 75
deciduous add option "Title" -c 70
deciduous add action "Title" -c 85 --commit HEAD
deciduous add outcome "Title" -c 95
deciduous add observation "Title" -c 80

# Connect nodes
deciduous link FROM TO -r "Reason"
deciduous link FROM TO --edge-type chosen -r "Why chosen"

# View graph
deciduous nodes                    # List nodes
deciduous nodes -b feature/auth    # Filter by branch
deciduous edges                    # List edges
deciduous tui                      # Terminal UI
deciduous serve                    # Web viewer

# Export
deciduous sync                     # JSON for web
deciduous dot --png                # PNG visualization
deciduous writeup -t "Title"       # PR markdown

# Multi-user sync
deciduous diff export -o patch.json --branch feature-x
deciduous diff apply .deciduous/patches/*.json
deciduous diff status

All Commands

deciduous init

Initialize deciduous in the current directory.

Creates .deciduous/, .claude/commands/, docs/, and CLAUDE.md.

deciduous update

Update tooling files to latest version (overwrites slash commands, web viewer).

deciduous add

deciduous add <NODE_TYPE> <TITLE> [OPTIONS]

Arguments:
  NODE_TYPE   goal | decision | option | action | outcome | observation
  TITLE       Title of the node

Options:
  -d, --description   Optional description
  -c, --confidence    Confidence level (0-100)
  -p, --prompt        User prompt that triggered this
  -f, --files         Associated files (comma-separated)
  -b, --branch        Git branch (auto-detected)
  --no-branch         Skip branch auto-detection
  --commit            Link to git commit (use HEAD for current)

deciduous link

deciduous link <FROM> <TO> [OPTIONS]

Arguments:
  FROM   Source node ID
  TO     Target node ID

Options:
  -r, --rationale     Rationale for connection
  -t, --edge-type     Edge type (default: leads_to)

deciduous status

deciduous status <ID> <STATUS>

Arguments:
  ID       Node ID
  STATUS   active | completed | abandoned

deciduous nodes

deciduous nodes [OPTIONS]

Options:
  -b, --branch        Filter by git branch
  -t, --node-type     Filter by node type

deciduous edges

List all edges with their types and rationales.

deciduous graph

Export full graph as JSON to stdout.

deciduous serve

deciduous serve [OPTIONS]

Options:
  -p, --port    Port number (default: 3000)

deciduous tui

deciduous tui [OPTIONS]

Options:
  -d, --db    Database path (default: auto-discover)

deciduous sync

Export graph to docs/graph-data.json for static hosting.

deciduous backup

Create a timestamped database backup in .deciduous/backups/.

deciduous commands

Show recent deciduous command log.

deciduous dot

deciduous dot [OPTIONS]

Options:
  -o, --output     Output file (default: stdout)
  -r, --roots      Root node IDs for BFS traversal
  -n, --nodes      Specific nodes (e.g., "1-11" or "1,3,5")
  -t, --title      Graph title
  --rankdir        Direction: TB or LR
  --png            Generate PNG (requires graphviz)
  --auto           Auto-generate branch-specific filename

deciduous writeup

deciduous writeup [OPTIONS]

Options:
  -t, --title         PR title
  -r, --roots         Root node IDs
  -n, --nodes         Specific nodes
  -o, --output        Output file (default: stdout)
  --png               PNG file to embed
  --auto              Auto-detect PNG from branch
  --no-dot            Skip DOT graph section
  --no-test-plan      Skip test plan section

deciduous diff export

deciduous diff export [OPTIONS]

Options:
  -o, --output    Output file (required)
  -b, --branch    Filter by branch
  -n, --nodes     Specific nodes
  --author        Author name

deciduous diff apply

deciduous diff apply [OPTIONS] <FILES...>

Options:
  --dry-run    Preview without applying

deciduous diff status

List available patches in .deciduous/patches/.

deciduous migrate

Add change_id columns for multi-user sync (run once when upgrading).

Node Types

Type Purpose Example
goal High-level objective "Add user authentication"
decision Choice point "Choose auth method"
option Approach considered "Use JWT tokens"
action Implementation step "Adding JWT middleware"
outcome Result "Auth working in prod"
observation Discovery or insight "Existing code uses sessions"

Edge Types

Type Meaning Usage
leads_to Natural progression Default for most connections
chosen Selected option decision → action
rejected Not selected decision → option (with reason)
requires Dependency When one thing needs another first
blocks Preventing progress When something is blocked
enables Makes possible When one thing unlocks another

Configuration

Configuration lives in .deciduous/config.toml:

[branch]
# Branches that are NOT considered "feature branches"
main_branches = ["main", "master", "develop"]

# Auto-detect git branch when creating nodes
auto_detect = true

Environment Variables

Variable Purpose Default
EDITOR Editor for TUI file opening vim

TUI Keyboard Shortcuts

Navigation

j/kUp/Down
gg/GTop/Bottom
Ctrl+d/Ctrl+uPage Down/Up
EnterToggle detail
qQuit

Filtering

/Search
fFilter type
bFilter branch
BFuzzy branch search
RToggle sort order
Ctrl+cClear filters

Files

oOpen files in editor
OView commit details
FToggle file browser
pPreview file
dShow diff

Other

sGoal story
rRefresh
?Help

You've completed the tutorial!

You now know how to use deciduous for persistent decision memory in AI-assisted development. Start logging decisions, and they'll survive context loss forever.

Browse the live graph to see deciduous tracking its own development.