Integrations
Optional integrations that make santree fit your existing setup.
Claude Code
Santree lives next to Claude Code — it launches claude, reads its hooks, and embeds its session state.
Statusline
A custom statusline showing git info, model, context usage, and cost.
Add to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "santree helpers statusline"
}
}
Format: repo | branch | S: staged | U: unstaged | A: untracked | Model | Context% | $Cost
The context-usage segment renders as a colored progress bar — green / yellow ≥60% / red ≥80%.
Remote control
Enable Remote Control to continue local Claude Code sessions from your phone, tablet, or any browser. This lets you kick off work with santree worktree work and monitor or steer the session remotely.
Run /config inside Claude Code and set Enable Remote Control for all sessions to true. This writes remoteControlAtStartup: true to ~/.claude.json. Run santree doctor to verify.
Session state signaling
Surfaces the current Claude Code session state in the dashboard, statusline, and tmux window names. You can tell at a glance whether a session is actively working, waiting for permission approval, idle, or exited.
| State | Meaning |
|---|---|
active |
User submitted a prompt, Claude is working |
waiting |
Claude needs permission approval |
idle |
Claude finished and is waiting for next prompt |
exited |
Session ended |
Install:
santree helpers session-signal install
Adds hooks for Notification, Stop, UserPromptSubmit, and SessionEnd to ~/.claude/settings.json. Existing hooks are preserved.
Preview the JSON without writing: santree helpers session-signal install --dry
Verify with santree doctor — look for the “Session Signal Hooks” row under Claude Code.
English Tutor
When enabled, Claude Code spots grammar mistakes in your prompts and replies with a one-line correction (original -> correction (reason)) before doing the actual work. Mistake-free prompts are ignored. Useful if English isn’t your first language.
Install:
santree helpers english-tutor install
Adds two hooks (UserPromptSubmit, SessionStart) and a scoped Edit permission for the practice log to ~/.claude/settings.json. Existing hooks and permissions are preserved.
Preview the JSON without writing: santree helpers english-tutor install --dry
Corrections are appended to ~/.config/santree/english-practice-log.md (or $XDG_CONFIG_HOME/santree/english-practice-log.md). The SessionStart hook replays this log into context on new sessions so Claude can spot recurring patterns.
Remove with santree helpers english-tutor uninstall.
Multiplexers
Santree auto-detects whichever multiplexer is active and uses it for new-window flows (work, fix, review).
| Multiplexer | Detection | Notes |
|---|---|---|
| tmux | $TMUX set |
Default. Works on every platform. |
| cmux | $CMUX_SURFACE_ID set |
macOS only. Requires the cmux.app GUI running. |
| none | neither set | New-window flows degrade to “run manually” / inline only. |
There is no env var override — each adapter declares its own runtime check.
cmux caveats
cmux is macOS-only and tightly bound to the cmux.app GUI. Two upstream issues affect santree’s integration:
manaflow-ai/cmux#1472 — programmatically created workspaces have dead PTYs, so
sendCommandis unimplemented (returnsunsupported) and post-creation flows degrade. tmux remains the recommended backend until #1472 lands.santree doctorsurfaces a warning when cmux is active.
manaflow-ai/cmux#2048 — cmux ships its own Claude CLI at
/Applications/cmux.app/Contents/Resources/bin/claude, wired to the active cmux workspace. When santree detects cmux is active, it uses that bundled binary in preference to a globally-installedclaude.
Editors
Set SANTREE_EDITOR to whatever launches your editor with a path argument:
export SANTREE_EDITOR=zed # or cursor, code, nvim, idea, subl, webstorm, …
Defaults to code. GUI editors (Code, Cursor, Zed, JetBrains) automatically get --wait when launched from Ctrl+O in the multi-line context input, so the dashboard pauses until you close the file.
worktree open also accepts --editor <cmd> to override per-invocation.
Diff tools
Set SANTREE_DIFF_TOOL to a pager that accepts a unified diff on stdin:
export SANTREE_DIFF_TOOL=delta # syntax highlighting + side-by-side
# or
export SANTREE_DIFF_TOOL=diff-so-fancy
Used by:
santree worktree diff(CLI) — passed to git as-c core.pager=<tool>. The pager handles render + scroll, as usual.- The dashboard
[v]overlay — santree captures the pager’s stdout and handles scrolling itself in Ink. - The Reviews-tab diff (
gh pr diffsource) — same as the worktree overlay.
For delta specifically, santree:
- Forces
--light/--darkbased on the detected theme (delta’s syntax-theme defaults are tuned for dark backgrounds and become unreadable on light ones). - Disables hyperlinks (
delta.hyperlinks=false) — OSC 8 escape sequences mangle the dashboard’s column-truncation math. - Disables line numbers (
delta.line-numbers=false) — they eat ~6 cols of an already-narrow right pane.
These overrides are passed via GIT_CONFIG_PARAMETERS, scoped to the dashboard invocation only — your global delta config is untouched.