Skip to content

Repository files navigation

summa

summa (Latin: sum, total, summary) — lightweight CLI that imports Claude Code (ccusage), Codex, OpenCode, Grok, and other agent usage into local DuckDB, optionally syncing to ClickHouse or MotherDuck.

Binarysumma
Cratesumma-import
Version0.1.x
LicenseMIT

GitHub repo is duyet/summa. Crate is summa-import because bare summa is taken on crates.io (full-text search server).

Name

NameNotes
summaLatin summa — sum / total / summary of usage. Product + binary.
summa-importcrates.io package (binary still summa)
usus“Usage” — taken by another AI-usage CLI
sumptusExpense/outlay — free, alternate we tried

Install

curl | bash

curl -fsSL https://raw.githubusercontent.com/duyet/summa/master/install.sh | bash

Installs ~/.local/bin/summa. Env: SUMMA_INSTALL_DIR, SUMMA_VERSION, SUMMA_DRY_RUN=1.

Cargo

cargo install summa-import --locked

From source

git clone https://github.com/duyet/summa.git
cd summa # or just: cargo build --release # from anywhere if using the crate name
cargo build --release
./target/release/summa --help

Quick start (local-first)

summa import --verbose
# → ~/.local/share/summa/summa.duckdb

Optional cloud:

summa import --ch-host db.example.com --ch-port 8443
export MOTHERDUCK_TOKEN=…
summa import --duckdb-path=md:summa

Config

  1. $SUMMA_CONFIG (or legacy $CCUSAGE_IMPORT_CONFIG)
  2. ./summa.toml / ./summa-import.toml
  3. ~/.config/summa/config.toml (XDG)
  4. ~/.summa/config.toml
  5. ~/.summa-import.toml (legacy)
  6. /etc/summa/config.toml

Main config has no secrets. Credentials: ~/.config/summa/credentials.toml or $SUMMA_CREDENTIALS / CH_PASSWORD / MOTHERDUCK_TOKEN.

# ~/.config/summa/config.toml
[clickhouse]
host = "localhost"port = 8123user = "default"database = "analytics"protocol = "http"
[importer]
days_back = 7
# ~/.config/summa/credentials.tomlclickhouse_password = ""motherduck_token = ""

Usage

summa import --verbose
summa import --days-back=7
summa import --skip-clickhouse
cargo run -- backfill-duckdb

Cron job

summa cronjob install # install daily at 08:00
summa cronjob status # show whether installed
summa cronjob remove # remove daily job

Logs: ~/.summa/cron.log.

Development / release

cargo test
cargo build --release
cargo package
cargo publish # needs CARGO_REGISTRY_TOKEN / cargo login
  • release-please + GitHub Release builds multi-arch summa binaries
  • crates.io publish gated on CARGO_REGISTRY_TOKEN
  • See CHANGELOG.md

About

ccusage import to ClickHouse

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages