9 releases
Uses new Rust 2024
| 0.2.0 | Dec 8, 2025 |
|---|---|
| 0.1.9 | Dec 7, 2025 |
#227 in Visualization
120KB
1.5K
SLoC
ponder
Rust TUI mind-map (Excalidraw-in-terminal vibes) with movable nodes, notes, colors, undo/redo, autosave, search, and JSON persistence — all in your terminal.

Sketch project trees, CLI ideas, and scratch notes without leaving the keyboard. Maps are just JSON, so they version cleanly in git.
Install
Then install the crate:
cargo install ponder
Update existing install:
cargo install ponder --force
Or build locally:
git clone https://github.com/fibnas/ponder
cd ponder
cargo run --release
Features
- Mind maps as JSON
- Create/open/save maps on disk.
- Autosave with configurable interval and path.
- Fast node editing
- Add/clone/delete nodes, move them freely, and jump to parent/child.
- Per-node colors to visually group branches.
- Notes everywhere
- Multi-line notes per node with a dedicated overlay editor.
- Search across titles and notes.
- Comfortable navigation
- Arrow-key navigation, Tab/Shift-Tab cycling, and directional selection.
- Undo/redo history with bounded snapshots.
- TUI quality-of-life
- Separate panes for canvas, selected node details, shortcuts, and messages.
- Lightweight dependencies:
ratatui+crossterm.
Usage
Launch
ponder # new map
ponder map.json # open or create specific file
- If the file exists → it is loaded
- If it does not → a new map is created and saved there when you hit
s
Layout
- Canvas: mind map graph
- Selected: title, color, notes
- Shortcuts: keybinding cheat sheet
- Messages: status/toast area
Keybindings
Core
- Quit:
q - Help:
?
Navigation
- Move: arrows
- Next/Prev node:
Tab/Shift-Tab - Parent/Child:
[/]
Nodes
- Add child:
a - Clone subtree:
c - Delete subtree:
d - Move mode:
m(arrows; holdShift= bigger steps) - Rename:
t - Edit notes:
Enter(multi-line;Esccloses) - Color cycle:
k
Files
- Open:
o - Save:
s - Save As:
S - New map:
n
Search
- Start search:
/ - Cycle hits:
Up/Down - Jump:
Enter - Close:
Esc
Undo/Redo
- Undo:
uorCtrl+Z - Redo:
rorCtrl+Y
Autosave
- Set autosave path:
A - Set autosave interval:
I(seconds;0disables) - Status bar shows:
- autosave on/off
- autosave path
- last autosave time
Autosave writes normal JSON, which you can open with o.
Data Format
Pretty-printed JSON:
namerootidnext_idnodes[]containing:id,title,notecolorposition {x,y}parentchildren[]
This format is stable, readable, and git-friendly.
Tips
- Use colors to group topics or branches.
- Keep the root broad (“Projects”, “Roadmap”, “Research”).
- Use notes for details to keep the canvas clean.
Roadmap
- Sibling/root jumping
- Tagging + filtering
- Export formats
- Zoom presets
License
MIT — see LICENSE.
Dependencies
~7MB
~116K SLoC