Terminal-based diagram editor for sequence diagrams and flowcharts. Uses vim-style keybindings and modal editing.
edd edits and converts diagrams between formats (Mermaid, PlantUML, Graphviz, D2). It renders ASCII/Unicode diagrams in the terminal or exports to diagram markup languages.
Supported formats:
- Import: Mermaid, PlantUML, Graphviz DOT, D2, JSON
- Export: ASCII/Unicode, Mermaid, PlantUML, JSON
Diagram types:
- Sequence diagrams (participant interactions over time)
- Flowcharts (box-and-arrow layouts)
Press an action key (c, d, e) and labels appear on all elements. Press a label key to select that element. This eliminates arrow key navigation.
c/C- Connect nodes (single/continuous)d/D- Delete elements (single/continuous)e- Edit element texti/I- Insert connections (single/continuous)u- UndoCtrl+r- Redot- Toggle diagram type:w- Save:q- Quit:export format [file]- Export to format
go install github.com/kungfusheep/edd@latestStart empty editor:
eddEdit existing diagram:
edd -i diagram.json
edd -i diagram.mmd # Auto-detects Mermaid
edd -i diagram.puml # Auto-detects PlantUML
edd -i diagram.dot # Auto-detects GraphvizRender diagram to terminal:
edd diagram.jsonConvert between formats:
edd -format mermaid diagram.json > output.mmd
edd -format plantuml diagram.mmd > output.puml
edd -format ascii diagram.puml # Print to terminalBatch conversion:
for file in *.puml; do
edd -format mermaid "$file" > "${file%.puml}.mmd"
doneDiagrams are stored as JSON:
{
"type": "sequence",
"nodes": [
{"id": 0, "text": ["Client"]},
{"id": 1, "text": ["Server"]}
],
"connections": [
{"from": 0, "to": 1, "arrow": true, "label": "Request"},
{"from": 1, "to": 0, "arrow": true, "label": "Response"}
]
}- Import support covers basic features only (~20-30% of each format's syntax)
- Keyboard-only (no mouse support)
- No image export (terminal rendering only)
- Sequence diagrams support simple message flows only
- Flowcharts support basic box-and-arrow layouts only
- Go 1.19+
- Terminal with Unicode support
- 80+ column width recommended