Navigate, organize, and document ideas in a nested tree structure with keyboard-driven controls. Fast, focused, and entirely in your terminal.
Everything you need to manage complex projects, without ever leaving the terminal.
Navigate your tree with h/j/k/l, zoom in and out of hierarchy levels seamlessly.
Infinitely nestable nodes. Zoom into any branch and work with focused context using breadcrumb navigation.
Toggle tasks done with space. See rollup counts like 3/7 on parent nodes.
Press / to search across all nodes. Real-time filtering with breadcrumb context.
Attach a markdown doc to any node. Opens in your $EDITOR with auto-generated frontmatter.
Toggle ASCII tree views scoped to the current node or the full tree with t / T.
Keep projects separate with the --db flag. Each database is fully self-contained.
Every action has a keybinding. Add, edit, move, reorder, delete, search -- all without touching a mouse.
A clean, focused interface built with Bubble Tea and Lip Gloss.
◆ Fractal › Side Projects › Learn Rust ▸ Read "The Book" chapters 1-8 [doc] 5/8 ○ ● ○ ● ○ ────────────────────────────────────────────────────────────
◆ Fractal Side Projects ├── Learn Rust │ ├── ● │ ├── ○ │ └── ○ ├── Home Automation │ ├── ● │ └── ○ └── Blog Redesign └── ○ ────────────────────────────────────────────────────────────
Pure Go, no CGO, no external dependencies. Just install and run.
$ go install github.com/cochranjd/fractal@latest
$ git clone https://github.com/cochranjd/fractal.git $ cd fractal $ make build $ ./fractal
$ fractal $ fractal --db ~/work.db $ go run ./cmd/seed --clean
Vim-inspired keybindings that feel natural from day one.
| j / k | Move cursor up / down |
| l / enter | Zoom into node |
| h | Zoom out to parent |
| / | Search all nodes |
| a | Add child node |
| e | Edit node title |
| space | Toggle done / not-done |
| x | Delete node |
| dd | Mark node for moving |
| p | Paste moved node here |
| J / K | Reorder node up / down |
| t / T | Tree view / full tree |
| o | Open doc for selected node |
| O | Open doc for current node |
| X | Delete node's document |
| esc | Cancel current action |
Minimal dependencies. Pure Go. No CGO required.