ChartBook#

Turn a data pipeline into a documented, searchable site, and let other pipelines build on what it made.

A pipeline is a folder of code in git: a manifest, scripts, write-ups, and the data, charts and models the scripts produce. ChartBook reads that folder, records what is in it, and writes a site. Many pipelines make a catalog: one site over all of them, where any dataset can be loaded by name, and where one pipeline can pin exactly what another one built.

repository, resolved into an index, written into pages, built into a site repository, resolved into an index, written into pages, built into a site

Three steps, each a transformation of the one before. The index in the middle is the point of the design: one JSON file that says what the site shows, with an ID and a content hash for everything, so that pages can be written for any site tool, two builds can be compared, and another program can read what you published without scraping it. Vocabulary defines these words, and every page here uses them in those senses.

Start#

Install and build

pip install chartbook, scaffold a project with chartbook init, and have a site in a minute.

Getting Started
Document a pipeline

Describe charts, dataframes, notebooks, notes and models in chartbook.toml; each gets a page.

Documenting a Pipeline
Depend on another pipeline

Snapshots, pins and the lockfile: read exactly what another pipeline built, and nothing else.

Depending on Another Pipeline

The four documents#

Four files, one record format, and none is another in disguise. A manifest asks, a lockfile records what was got, a snapshot records what was made, and an index records what a site shows.

the manifest, the lockfile, the snapshot and the index: what each records, who writes it, where it lives the manifest, the lockfile, the snapshot and the index: what each records, who writes it, where it lives

From zero to a documented pipeline#

pip install chartbook
chartbook init            # scaffold a pipeline project
cd <your-project>
chartbook docs generate   # write the site, and index.json beside it
chartbook docs open       # open it
from chartbook import data

df = data.load(pipeline="fred_charts", dataframe="fred", format="pandas")   # any cataloged dataset
rates = data.load("fed_yield_curve:treasury_rates")   # a dependency's dataframe: the pinned copy, by name

Where things are#

User guide
Reference

Working with an AI assistant? The built site ships llms.txt files at its root, and chartbook install claude-skill installs a ChartBook skill for Claude Code, which says when it is for another ChartBook.