# Grafatui Roadmap
Grafatui is a terminal-based Grafana-like UI for Prometheus. This roadmap outlines what's been built, what's coming next, and longer-term goals. It's intended to help contributors find impactful areas to work on and to set expectations for users.
> **Current version**: 0.1.5 ยท **Status**: Active development, pre-1.0
**Legend**:
- ๐ข Low complexity ยท ๐ก Medium complexity ยท ๐ด High complexity
- โ
Shipped ยท ๐ Up next ยท ๐ Planned ยท ๐ก Exploring
---
## What's Already Built (v0.1.x)
These features are shipped and available today:
| **6 panel types** | `graph`, `timeseries`, `stat`, `gauge`, `bargauge`, `table`, `heatmap` |
| **Grafana JSON import** | Load dashboards from exported JSON files |
| **24-column grid layout** | Faithful reproduction of Grafana's `gridPos` positioning |
| **Template variables** | `$var` / `${var}` substitution with CLI and config overrides |
| **Legend formatting** | `{{label}}` syntax from Grafana |
| **8 color themes** | default, dracula, monokai, solarized (dark/light), gruvbox, tokyo-night, catppuccin |
| **Time controls** | Zoom in/out, pan left/right, live mode toggle |
| **Panel navigation** | Arrow keys, vim-style `j`/`k`, fullscreen, inspect mode |
| **Panel search** | `/` to fuzzy-search panels by name |
| **Mouse support** | Click to select, scroll, drag cursor in fullscreen |
| **Value inspection** | Cursor-based point-in-time data exploration |
| **Series toggling** | Show/hide individual series with `1`โ`9` |
| **Smart caching** | Request deduplication and caching for identical queries |
| **Downsampling** | Max-pooling to ~200 points to preserve peaks |
| **Config file** | TOML-based persistent configuration |
| **`$__rate_interval`** | Automatic computation as `max(step ร 4, 60s)` |
| **Thresholds** | `fieldConfig.defaults.thresholds` for graph limit lines and dynamic Stat/Gauge/BarGauge coloring |
| **Threshold marker styles** | Configurable marker styles including dashed line, braille, block, quadrant, sextant, and octant modes |
| **Field min/max bounds** | `fieldConfig.defaults.min` / `max` for gauge scaling and percentage threshold interpolation |
| **Shell completions** | Bash, Zsh, Fish, PowerShell, Elvish |
| **Cross-platform binaries** | Linux (x86_64, aarch64), macOS (x86_64, aarch64), Windows (x86_64) |
| **Package formats** | `.deb`, `.rpm`, Homebrew formula |
For a field-by-field breakdown of Grafana JSON compatibility, see [GRAFANA_COMPATIBILITY.md](GRAFANA_COMPATIBILITY.md).
---
## Up Next โ Grafana JSON Compatibility
| **Unit formatting** | Display values as bytes, percent, duration, etc. (`fieldConfig.defaults.unit`) | ๐ก | ๐ |
| **Unsupported panel warnings** | Surface clear warnings for panel types that can't be rendered | ๐ข | ๐ |
| **Value mappings** | Map numeric values to text labels (`fieldConfig.defaults.mappings`) | ๐ก | ๐ |
| **Reduce options** | Support `calcs` other than "last" for stat/gauge panels | ๐ก | ๐ |
| **Legend configuration** | Respect `options.legend` display mode, placement, and calcs | ๐ก | ๐ |
| **Additional PromQL variables** | `$__interval`, `$__range`, `$__range_s` | ๐ข | ๐ |
| **Dynamic template variables** | Query Prometheus for variable values (`type: "query"`) | ๐ก | ๐ |
| **Draw styles** | Respect `bars`, `points`, `line` from `fieldConfig.defaults.custom.drawStyle` | ๐ก | ๐ |
| **Stacking** | Stacked area/bar charts from `fieldConfig.defaults.custom.stacking` | ๐ก | ๐ |
---
## Import & Debugging
| **Import validation** | `--validate` flag to check JSON before loading | ๐ข | ๐ |
| **Better parse errors** | Line numbers and context when JSON parsing fails | ๐ข | ๐ |
| **Variable substitution debugging** | Show which variables failed to resolve | ๐ข | ๐ |
---
## Navigation & UX
| **Fuzzy finder** | `Ctrl+P` style quick switcher for dashboards/panels | ๐ข | ๐ |
| **Bookmarks** | Save dashboard + time range combos | ๐ข | ๐ |
| **Panel history** | Recently viewed panels for quick access | ๐ข | ๐ |
| **Split view** | Compare two panels side-by-side | ๐ก | ๐ก |
---
## Data Export & Sharing
| **Export to CSV** | Dump metric data to file | ๐ข | ๐ |
| **Copy to clipboard** | Copy panel data for reports | ๐ข | ๐ |
| **Export to PNG/SVG** | Capture dashboard state as image | ๐ก | ๐ก |
| **Share snapshot** | Generate shareable file of current view | ๐ก | ๐ก |
---
## Query & Exploration
| **Ad-hoc query mode** | Scratch panel for one-off PromQL queries | ๐ก | ๐ |
| **Label explorer** | Browse available labels and values | ๐ก | ๐ |
| **PromQL autocomplete** | Suggest metrics, labels, functions | ๐ด | ๐ก |
---
## Multi-Source Support
| **Grafana API connection** | Pull dashboards live from a Grafana server | ๐ก | ๐ |
| **Multiple Prometheus sources** | Switch between clusters/environments | ๐ก | ๐ |
| **InfluxDB / Loki support** | Expand beyond Prometheus | ๐ด | ๐ก |
---
## Alerting & Notifications
| **Alert rule viewer** | Dedicated panel for Prometheus/Alertmanager alerts | ๐ก | ๐ |
| **Alert silence creation** | Quick-silence alerts from TUI | ๐ก | ๐ก |
| **Desktop notifications** | Push notifications when thresholds are crossed | ๐ก | ๐ก |
---
## Dashboard Editing
| **Editor mode** | Edit panel queries inline with nano/vim-style controls | ๐ก | ๐ก |
| **Dashboard creation wizard** | Step-by-step TUI flow to create new dashboards | ๐ด | ๐ก |
---
## Operational Features
| **File watch mode** | Auto-reload on config/JSON file changes | ๐ข | ๐ |
| **Session restore** | Remember last dashboard and time range | ๐ข | ๐ |
| **SSH tunnel mode** | Built-in port forwarding for remote Prometheus | ๐ก | ๐ก |
---
## Accessibility & Customization
| **Colorblind palettes** | Alternative color schemes | ๐ข | ๐ |
| **Custom keybindings** | User-remappable shortcuts | ๐ก | ๐ |
| **Panel annotations** | Show deployment markers/events on graphs | ๐ก | ๐ก |
---
## Priorities at a Glance
### ๐ Up Next
High-value items actively being considered for the next release(s):
- **Unit formatting** - Display values in human-readable units
- **Import validation & panel warnings** - Better error experience
- **Export to CSV** - Simple, high-value data export
- **Fuzzy finder** - Quality-of-life navigation improvement
### ๐ Near-term
Planned features that will meaningfully improve the user experience:
- Value mappings, reduce options, legend configuration
- Additional PromQL variables (`$__interval`, `$__range`)
- Dynamic template variables from Prometheus
- File watch mode, session restore, bookmarks
- Colorblind palettes, custom keybindings
### ๐ก Longer-term
Ambitious features under exploration:
- Grafana API live connection
- InfluxDB/Loki support
- PromQL autocomplete
- Dashboard editor mode
- Desktop notifications
---
## How to Contribute
If you'd like to help, the best starting points are items marked ๐ and ๐ข. These tend to be self-contained and well-defined.
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines, and [GRAFANA_COMPATIBILITY.md](GRAFANA_COMPATIBILITY.md) for the full Grafana JSON feature-parity breakdown.