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.

chartli renderers — ASCII line, sparklines, bars, columns, heatmap, Unicode, Braille

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, or npx skills add ahmadawais/chartli to 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.

PropertyValue
Chart typesascii, spark, bars, columns, heatmap, unicode, braille, svg
Bars shading4 levels (░▒▓█) — works without ANSI color
Braille resolution2×4 dots per character (8 dots/cell)
InputTSV/CSV via file arg or stdin, headers optional, multi-series
RuntimeNode.js (npx ships with Node 8+, recommend 20 LTS)
LicenseApache-2.0
Stars685

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

ToolSetupRendersStdin pipeSVG out
chartlinpx chartli8YesYes
matplotlibPython env + pipBrowser/PNGNoYes
gnuplotSystem install + DSLX11/PNGYesYes
termgraphPython + pipBarsYesNo
asciichartNode lib (not CLI)Linen/aNo
spark (bash)One-linerSparklineYesNo

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, or kubectl top pods into 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/chartli and the agent can visualize numeric tool output inline.
  • Ad-hoc EDAcat data.csv | npx chartli -t heatmap instead 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.