model-tides
v2.1.1
Published
Opt-in local model usage snapshots for Model Tides
Readme
Model Tides CLI
Run npx model-tides@latest upload with Node.js 24 or newer to discover local OpenCode, Codex, Claude Code, Pi, GitHub Copilot CLI/desktop, and VS Code built-in Copilot Chat history, review the exact weekly model counts, and create a personal chart link. Anyone with the link can view the weekly counts. A new upload does not enter the community aggregate. Use contribute after reviewing all stored counts to opt in; use withdraw to remove existing contributions without losing your chart. Reports created before this change stay in the aggregate until their owner withdraws. The CLI reads live OpenCode SQLite databases and old zstd-compressed Codex rollouts with Node built-ins; it needs neither Python nor a separate zstd command.
To export local history without sharing it, run npx model-tides@latest export --output model-tides.json. Export works offline and never overwrites an existing file. The v2 JSON holds model/day counts, without session IDs or exact times; keep it private. Pass it to upload --input model-tides.json or gist --input model-tides.json to review weekly active session-days before sharing. Old v1 event exports cannot recover this metric; rescan original history.
Nothing is uploaded until you type YES. The CLI sends Brotli-compressed week/model/count pairs and a coarse OS label for the uploading machine. The Worker records the uploading network's country if available; neither field identifies where the past activity happened. It never sends prompts, responses, exact event times, paths, session IDs, message IDs, or the source databases. Review the model names in the preview: historical names and provider-specific aliases are uploaded exactly as shown. Your contribution uses a separate local private key, kept under ~/.config/model-tides/contribution.json (or XDG_CONFIG_HOME/model-tides/contribution.json). To use Donate your data on your personal chart, run model-tides key in an interactive terminal, confirm with YES, and copy the key into the form. The command never sends it over the network or prints it when output is redirected. Keep it out of URLs.
An upload prints your personal chart link immediately. unshare hides it without changing the aggregate; share makes a hidden chart available again after reviewing all stored counts. link prints its address without scanning or contacting the site. Every opted-in model-week appears on the homepage. If gh is installed, the upload preview offers GIST instead of the site upload; gist also works as a separate command. A gist is unlisted, not private. Its modeltides.dev/gist#<owner>/<id> viewer fetches directly from GitHub; Model Tides receives neither the gist address nor its file until the viewer chooses to donate those counts.
Before share asks for YES, it shows every stored week, including weeks retained from earlier uploads. The Worker rejects sharing if counts change after review.
To use an exported daily JSON, run npx model-tides@latest upload --input model-tides.json. Run upload --rotate or upload --delete to manage the key or delete all stored counts. If you prefer a GitHub link for just the weekly counts, run npx model-tides@latest gist [--input model-tides.json] with an authenticated gh CLI. After YES, it creates an unlisted gist: anyone with the URL can read it, and GitHub keeps previous revisions. It never includes exact times or session IDs. Run npx model-tides@latest help for all commands. See the project documentation for details.
