ponder is both an executable binary that can be run, and a library that can be used in Rust programs.
Installing the command-line executable
Assuming you have Rust/Cargo installed , run this command in a terminal:
cargo install ponder
It will make the ponder command available in your PATH if you've allowed the PATH to be modified when installing Rust . cargo uninstall ponder uninstalls.
Adding ponder library as a dependency
Run this command in a terminal, in your project's directory:
cargo add ponder
To add it manually, edit your project's Cargo.toml file and add to the [dependencies] section:
ponder = "0.2.0"
The ponder library will be automatically available globally.
Read the ponder library documentation .
Back to the crate overview .
Readme
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
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; hold Shift = bigger steps)
Rename: t
Edit notes: Enter (multi-line; Esc closes)
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: u or Ctrl+ Z
Redo: r or Ctrl+ Y
Autosave
Set autosave path: A
Set autosave interval: I (seconds; 0 disables)
Status bar shows:
autosave on/off
autosave path
last autosave time
Autosave writes normal JSON, which you can open with o .
Pretty-printed JSON:
name
root id
next_id
nodes[ ] containing:
id , title , note
color
position { x, y}
parent
children[ ]
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 .