Design terminal interfaces visually, then export them to real code.
Edda is a visual designer for command-line output and full-screen terminal user interfaces. Build layouts from terminal-native components, preview them at different widths, bind them to mock data, or describe what you want and let an AI provider generate a starting point.
When the design is ready, Edda can export the layout as plain text, Markdown, JSON, or starter code for popular TUI frameworks.
Edda is currently under active development. Expect sharp edges, changing APIs, and the occasional terminal-shaped gremlin.
Terminal interfaces are usually designed in the same place they are implemented: directly in code. That works, but makes experimentation unnecessarily slow.
Edda separates designing the interface from wiring up the application.
- Visually compose CLI output and full-screen TUIs
- Drag terminal-native components into a canvas
- Inspect nodes and manage layout structure through a layer tree
- Design themes and terminal colour palettes
- Preview layouts at narrow, standard, and wide terminal widths
- Bind components to realistic mock data
- Generate editable layouts from natural-language prompts
- Export designs to text, Markdown, JSON, or framework scaffolds
For commands that print structured information and exit: deployment summaries, status commands, diagnostics, reports, installers, and similar output.
CLI layouts are designed as clean, linear terminal documents rather than pretending every command needs to become a dashboard.
For persistent terminal applications with panels, navigation, status areas, tables, keyboard hints, and other application-style UI.
Edda's layout model includes text, headings, rows, columns, boxes, split panes, dividers, spacers, fills, badges, keyboard hints, tables, lists, progress bars, status indicators, ASCII blocks, and data-driven collections.
Components can be selected, duplicated, reordered, removed, and edited through the inspector.
A terminal is not a browser wearing black clothes. Width still matters.
Edda renders designs against an explicit column count and includes quick previews for common widths:
- 40 columns for narrow terminals and SSH sessions
- 80 columns for the traditional terminal baseline
- 120 columns for wider layouts
- Custom widths up to 160 columns
This makes it easier to catch layouts that look excellent on your machine and immediately collapse into decorative rubble somewhere else.
Design dynamic interfaces without connecting a real backend first.
Edda supports mock JSON data and simple bindings inside layouts:
Environment: {{deployment.env}}
Server: {{server.name}}
Widgets can bind directly to values as well, including progress values and status states. Collections can render repeated layouts from arrays in the mock data.
Edda can generate editable CLI and TUI layouts from natural-language descriptions.
Supported providers currently include:
- Ollama for local models
- Anthropic
- OpenAI
Provider and model settings are configured inside Edda. Generated layouts use the same node model as manually created designs, so the result remains editable rather than becoming a mysterious AI screenshot you can only stare at.
If generation fails, Edda falls back to a built-in matching preset instead of leaving the canvas empty. AI is optional; the visual editor works without it.
Edda can export designs as:
- ANSI-style previews
- Plain text
- Markdown
- Edda JSON
- Framework starter code
| Framework | Language |
|---|---|
| Textual | Python |
| Ratatui | Rust |
| Bubble Tea | Go |
| Ink | React / JavaScript |
Generated code is intended as a scaffold for implementation, not a magical one-click replacement for application logic. Humanity has suffered enough from generators claiming otherwise.
Edda uses Bun for development.
git clone https://github.com/vardirhq/edda.git
cd edda
bun install
bun run devThen open the local development URL printed by Bun.
bun run dev # development server with hot reload
bun run build # production build
bun run start # run the app
bun run typecheck # TypeScript checks
bun test # test suite
bun run lint # Biome checks
bun run format # format with Biome- React 18
- TypeScript
- Bun
- Biome
The terminal renderer, layout model, exporters, bindings, and framework generators live in the project itself.
Edda is an early-stage project being actively shaped around one idea:
Terminal interfaces deserve a proper design tool.
The current application already covers visual composition, CLI/TUI modes, responsive previews, themes, mock data, AI generation, and multiple export targets. The next stages are about making those pieces deeper and turning exported designs into increasingly useful implementation starting points.
Issues, experiments, and pull requests are welcome while Edda is taking shape.
If you are proposing a feature, keep the core goal in mind: Edda should make terminal interface design faster and clearer without turning into a general-purpose GUI builder that happens to use monospace fonts.
No license has been added to the repository yet. Until one is chosen, normal copyright restrictions apply.