How it all fits together

KeepGoing is a local-first momentum system. No account required, no cloud sync. All data lives in a SQLite database inside your project, with a few global files in your home directory.

The ecosystem

KeepGoing is made up of several cooperating tools. You don't need all of them - each adds a different layer of momentum tracking, and they all speak the same data format.

Data flow

Everything converges on a single SQLite file at .keepgoing/keepgoing.db in your project root.

Writers

CLI - keepgoing save / checkpoint
VS Code Extension - file edits, session timing
Claude Code Hooks - tool calls, session phases
Git hooks - commits, branch switches

Readers

MCP Server - exposes checkpoints to AI tools
Desktop Tray - real-time project cards
JetBrains Plugin - in-IDE momentum view
CLI (read commands) - briefing, log, glance
.keepgoing/keepgoing.db

Local SQLite - your project root, gitignored

Writers

Any tool that can create a checkpoint is a "writer". You don't need to use all of them - the more you have, the richer the picture.

CLI is the primary write path and the only tool that owns the SQLite schema. All other writers eventually delegate to it or write compatible data.

VS Code Extension passively captures file activity and session timing without any manual action from you.

Claude Code Hooks fire on every AI tool call, tracking which phase of work you're in (exploration, editing, testing).

Git hooks save automatic checkpoints on commit and detect when you switch branches or merge.

Readers

Readers consume checkpoint data to surface momentum. They're all read-only relative to the database.

MCP Server is the bridge between your checkpoints and AI tools. When Claude Code asks "what was I working on?", the MCP server fetches the answer from SQLite and returns it.

Desktop Tray connects to the daemon process, which watches for file changes and pushes updates to the tray in real time.

JetBrains Plugin reads SQLite directly (via a bundled Kotlin reader) and displays your current session state in the IDE.

Storage layout

Per-project (inside your repo)

.keepgoing/

keepgoing.db - SQLite, all checkpoint data

current-tasks.json - active session (written by hooks)

state.json - legacy (kept for compatibility)

Global (home directory)

~/.keepgoing/

keepgoing-global.db - project registry, nudge state

keepgoing.sock - daemon Unix socket

license.json - Pro license store

The .keepgoing/ folder is automatically added to your global gitignore during setup so it never shows up in git status.