TL;DR
chartli is a CLI by Ahmad Awais that renders eight chart types directly inside your terminal — ASCII line, sparkline, horizontal bars, vertical columns, heatmap, Unicode bars, Braille, and SVG — straight from numbers piped in or read from a file. Install-free via npx chartli, Apache-2.0, v1.0.0 shipped 2026-03-10, currently 685 stars on GitHub.

What's new
The pitch is one line: pipe numbers in, get a chart out. No virtualenv, no plotting backend, no headless browser. One npx call and you have a chart printed in the same terminal you live in.
- 8 chart renderers in one binary:
ascii(default),spark,bars,columns,heatmap,unicode,braille,svg. - Three install paths:
npx chartli(zero install),npm i -g chartli, ornpx skills add ahmadawais/chartlito drop it into a coding agent as a tool. - Stack: TypeScript 65.6%, Rust 33.3% — the Rust portion is doing the heavy lifting on render hot paths.
Why it matters
Most charting tools assume you have a UI surface — a browser, a notebook, a plotting window. That assumption breaks the moment you SSH into a box, tail a CI log, or want a quick sparkline next to your shell prompt. Existing terminal options are either Python-only (termgraph), DSL-heavy (gnuplot), or a one-trick bash script (the original spark).
chartli collapses that whole space into a single npx call with eight render modes and proper multi-series support. The cost of going from I have a column of numbers to I see the trend drops from minutes (open notebook, import library, paste data, render) to a single piped command. That's a different category of friction.
For an AI agent — which already has a Node runtime and now also has chartli as an installable skill via npx skills add ahmadawais/chartli — it becomes the cheapest possible way to visualize numerical tool output inline. An agent can pipe benchmark results, log counts, or token usage into a Braille chart and surface that chart back to the user without ever leaving the shell.
Technical facts
The most interesting renderer is Braille. Each Unicode Braille glyph (range U+2800–U+28FF) encodes a 2×4 dot grid = 8 dots per character cell, so a single line of text gives you sub-character resolution with free anti-aliasing from the font hinter. The same engine ships separately as termdot.
| Property | Value |
|---|---|
| Chart types | ascii, spark, bars, columns, heatmap, unicode, braille, svg |
| Bars shading | 4 levels (░▒▓█) — works without ANSI color |
| Braille resolution | 2×4 dots per character (8 dots/cell) |
| Input | TSV/CSV via file arg or stdin, headers optional, multi-series |
| Runtime | Node.js (npx ships with Node 8+, recommend 20 LTS) |
| License | Apache-2.0 |
| Stars | 685 |
CLI flags worth knowing: -t/--type, -w/--width, -h/--height, -m/--mode (svg circles or lines), --x-axis-label, --y-axis-label, --x-labels, --series-labels, --data-labels, and --first-column-x which auto-detects the x-axis domain from the first column of headers.
Comparison
| Tool | Setup | Renders | Stdin pipe | SVG out |
|---|---|---|---|---|
| chartli | npx chartli | 8 | Yes | Yes |
| matplotlib | Python env + pip | Browser/PNG | No | Yes |
| gnuplot | System install + DSL | X11/PNG | Yes | Yes |
| termgraph | Python + pip | Bars | Yes | No |
| asciichart | Node lib (not CLI) | Line | n/a | No |
| spark (bash) | One-liner | Sparkline | Yes | No |
The headline difference is breadth: chartli is the only option that bundles 8 render modes and stdin pipe and SVG export in a single zero-setup invocation.
Use cases
- Shell prompt widgets — battery, build duration, request latency as a live sparkline.
- SSH / remote ops — pipe
top,vmstat, orkubectl top podsinto a sparkline without leaving the terminal. - CI logs — render benchmark trends as Braille charts in GitHub Actions output, no image artifact upload needed.
- AI coding agents — install via
npx skills add ahmadawais/chartliand the agent can visualize numeric tool output inline. - Ad-hoc EDA —
cat data.csv | npx chartli -t heatmapinstead of spinning up Jupyter for a 30-second sanity check. - README art — generate SVG charts from CI runs and commit them straight into the repo.
Limitations & pricing
- Free, Apache-2.0, no paid tier.
- Requires Node.js / npm on the host.
- Unicode/Braille/heatmap renderers need a UTF-8 capable terminal; ASCII fallback works everywhere.
- No live streaming mode in v1.0.0 — chartli renders once. For animations the underlying termdot library does support draw loops.
- No theme/palette flag exposed yet — bars rely on shading levels, not configurable color schemes.
- SVG output is static — no tooltips or interactivity.
What's next
The TypeScript-plus-Rust split (33% Rust) hints at a render core being pushed down for performance — likely targeting fast rendering of larger datasets in subsequent releases. The fact that chartli ships as an installable agent skill is the more interesting signal: terminal charting is being repositioned as an AI-tool primitive, not just a developer convenience. v1.0.0 already feels stable; expect themes, live mode, and tighter MCP/agent integrations next.
Source: github.com/ahmadawais/chartli · Ahmad Awais announcement.


