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/k | Up/Down |
| gg/G | Top/Bottom |
| Ctrl+d/Ctrl+u | Page Down/Up |
| Enter | Toggle detail |
| q | Quit |
Filtering
| / | Search |
| f | Filter type |
| b | Filter branch |
| B | Fuzzy branch search |
| R | Toggle sort order |
| Ctrl+c | Clear filters |
Files
| o | Open files in editor |
| O | View commit details |
| F | Toggle file browser |
| p | Preview file |
| d | Show diff |
Other
| s | Goal story |
| r | Refresh |
| ? | 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.