Skip to main content
Glama
ddyy

tokenarchive

by ddyy

tokenarchive

Ежедневные снимки вашего использования ИИ при написании кода — хранятся вечно.

Панель: состояние по устройствам, итоги и ежедневная стоимость с течением времени

ccusage может рассказать, сколько вам обходятся Claude Code, Codex, Gemini и другие, — но лишь настолько, насколько хватает логов на вашей машине, а эти логи ротируются. tokenarchive делает снимок отчёта ccusage раз в день, хранит каждый снимок как JSON-архив только на добавление и строит по нему панель. При желании Cloudflare Worker хранит копию архива вне вашей машины, под защитой passkey.

Всё здесь построено на двух принципах:

  • Ничто никогда не стирается. Снимки и есть архив; любая база данных — производная копия, которую можно пересобрать из них.

  • Отсутствие никогда не сообщается как ноль. День без снимка сам говорит об этом. Значение $0.00 утверждало бы, что мы посмотрели, а вы ничего не потратили.

Быстрый старт (macOS)

npx tokenarchive

Установщик запрашивает имя устройства и опциональный URL Worker, размещает среду выполнения в ~/.local/share/tokenarchive/app, планирует ежедневное задание (23:50, плюс при каждом входе в систему — скрипт идемпотентен), позволяет security запросить ingest-токен, так что тот никогда не попадает в руки установщика, и проверяет всё одним реальным запуском. Повторный запуск перенастроит его в любое время; --uninstall удаляет всё, кроме вашего архива.

Снимки попадают в ~/.local/share/tokenarchive/{device}/{date}.json. Чтобы попробовать один раз, ничего не устанавливая:

git clone https://github.com/ddyy/tokenarchive && cd tokenarchive && ./snapshot.sh

Другие платформы: переносимо всё, кроме связующего кода для планировщика. sync.js, импортёр и панель — это обычный Node; перенесите snapshot.sh на systemd-таймер или cron-задание, и остальное последует.

Related MCP server: Semantic Code Search MCP Server

Панель

generate-dashboard.js создаёт один самодостаточный HTML-файл — без фреймворка, без сервера, без внешних запросов. Сначала он импортирует новые снимки в локальную модель чтения SQLite (import-snapshots.js), так что перегенерация инкрементальна.

Каждая панель — это фильтр: щёлкните или проведите по моделям, устройствам, агентам, дням или биллинговым окнам — и остальная часть страницы последует (⌘ добавляет к выделению, ⇧ расширяет его). Фильтры сочетаются между измерениями по И и живут во фрагменте URL, так что вид можно добавить в закладки.

Переключатель Отображать как — над итогами и снова в закреплённой панели, когда они уходят при прокрутке, — измеряет всю страницу в долларах или в токенах: график и его ось, затенение покрытия, биллинговые окна и каждый список, который переупорядочивается в соответствии с выбранной мерой. При наведении на строку показываются полное имя, которое пришлось сократить, его стоимость, токены, подразумеваемая цена за миллион, его доля от того, что на экране, а для проектов — количество сессий и охватываемый ими период:

Детали при наведении на строку

Полоса покрытия показывает по одной ячейке на календарный день, поэтому пробел виден как пробел — дни без снимка никогда не отображаются как дни нулевого использования:

Полоса покрытия

Несколько устройств

Архив разделён по устройствам уже на уровне файловой системы: снимки лежат в {data}/{device}/{date}.json, каждая строка базы данных несёт устройство, а импорт работает только через upsert. Поэтому машины никогда не сливаются и не затирают друг друга, а всё, что помещает файлы обеих машин в один каталог данных, даёт объединённый архив — Worker, синхронизируемая папка или скопированный каталог работают одинаково.

Состояние оценивается по каждому устройству: у каждого свой зелёный/жёлтый/красный индикатор, своя дата последнего снимка и свой список пропущенных дней, так что одна актуальная машина не может скрыть другую, которая замолчала. Устройство, переставшее отправлять данные, сохраняет всю свою историю — архив ничего не стирает; он просто показывает пробел.

Worker ниже — это способ сделать это без перемещения файлов вручную.

Worker (опционально, рекомендуется)

Каталог worker/ — это Cloudflare Worker, который принимает отправку снимков и отдаёт ту же панель из D1, под защитой WebAuthn-passkey. Исходные снимки хранятся в R2 без изменений — именно это делает его резервной копией, а не представлением: /admin/replay может пересобрать D1 из бакета без вашего ноутбука. Инструкции по развёртыванию из пяти команд см. в worker/README.md.

После развёртывания зарегистрируйте passkey на /auth/ — первый passkey закрепляет архив за собой; для добавления passkey другого устройства требуется вход в систему. Затем создайте на /admin ingest-токен для устройства (при показе токена приводятся инструкции по настройке), и ежедневное задание снимков будет отправлять данные автоматически. Машина, которая никогда не синхронизировалась, ничего не потеряла: файлы на диске и есть архив, а следующая успешная синхронизация всё наверстает. Устаревшие отправки не могут затереть новые данные — ingest сохраняет самый новый снимок.

/admin управляет остальным: ingest-токенами и токенами MCP только для чтения (показываются один раз, отзываются по каждому устройству), ротацией сессионных ключей, перечнем снимков и /admin/replay, который пересобирает D1 из оригиналов в R2.

Чтобы добавить вторую машину, запустите там установщик с тем же URL Worker и выпустите для неё собственный ingest-токен — токен принимает данные только от имени того устройства, для которого был выпущен, поэтому одна машина не может писать как другая, и отзыв одного токена никогда не затрагивает остальные.

MCP

Спросите своего агента о вашем собственном использовании. Два сервера, одни и те же четыре инструмента только для чтения (usage_summary, usage_by_project, usage_by_day, archive_health), одна общая реализация:

  • Локальный, поверх SQLite-архива на этой машине:

    claude mcp add tokenarchive node /path/to/tokenarchive/mcp-server.js
  • Удалённый, обслуживается Worker на /mcp для машин, у которых нет архива. Выпустите токен mcp на /admin, затем:

    claude mcp add --transport http tokenarchive https://YOUR-WORKER/mcp \
      --header "Authorization: Bearer YOUR-TOKEN"

Только для чтения по построению: нет ни одного инструмента, который записывал бы, удалял или переписывал что-либо.

Конфигурация

Всё можно переопределить переменной окружения, ничего не требуется:

Variable

Default

TOKENARCHIVE_DATA

~/.local/share/tokenarchive

TOKENARCHIVE_DB

{data}/tokenarchive.db

TOKENARCHIVE_DEVICE

короткое имя хоста

TOKENARCHIVE_URL

не задана — без синхронизации

TOKENARCHIVE_TOKEN

не задана — читается из связки ключей входа (tokenarchive-ingest)

Тесты

bash test/run.sh

Большинство наборов тестов изолированы. Три набора (static, interaction, tooltip) запускаются против панели, которую вы сгенерировали последней, в ~/.local/share/tokenarchive/index.html, поэтому им нужен настоящий архив на машине — сначала один раз выполните снимок.

Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    Provides comprehensive telemetry and usage analytics for Claude Code sessions, including token usage tracking, cost monitoring, and tool usage patterns. Enables users to monitor their Claude usage with detailed metrics, warnings, and trend analysis.
    12
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to query and analyze past Claude Code sessions, providing structured insights like file changes, decisions, errors, and git history across projects.
    11
    40
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • One shared brain for your AI coding agents: team memory, agent Q&A, tasks, and file claims.

  • Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.

  • See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ddyy/tokenarchive'

If you have feedback or need assistance with the MCP directory API, please join our Discord server