Skip to content

BarryYangi/vibetime

Repository files navigation

VibeTime

Local-first time tracking for AI coding agents.

VibeTime runs quietly in the menu bar and records coding sessions from Claude Code, Codex, Cursor, Gemini CLI, and OpenCode. It is built for answering a simple question well: where did my agent-assisted work time go today?

VibeTime demo

What It Does

  • Tracks agent sessions and turns locally with SQLite.
  • Shows today's live activity, completed work, and active turns.
  • Provides history views with contribution-style heatmaps and useful project breakdowns.
  • Installs and removes hooks for Claude Code, Codex, Cursor, Gemini CLI, and OpenCode from the app settings.
  • Tracks token usage and estimated cost for Claude Code, Codex, and OpenCode from local transcript/database sources.
  • Keeps data on your machine. No account, cloud sync, or hosted backend is required.
  • Ships a small CLI through ~/.vibetime/bin/vibetime for local checks, exports, and hook health diagnostics.

Agent Support

Agent Activity hooks Usage/cost
Claude Code Yes Yes
Codex Yes Yes
Cursor Yes No
Gemini CLI Yes No
OpenCode Yes Yes

Download

Download the latest build from GitHub Releases.

  • macOS Apple Silicon: download the latest .dmg
  • Windows x64: download the latest setup .exe

Install

macOS

  1. Download the latest macOS .dmg from Releases.
  2. Open the DMG and drag VibeTime.app to /Applications.
  3. Launch VibeTime.
  4. Open Settings and enable the agents you want to track.

The app is not notarized yet, so macOS may require right-clicking VibeTime.app and choosing Open on first launch.

Windows

  1. Download the latest Windows x64 setup .exe from Releases.
  2. Run the installer.
  3. Open Settings and enable the agents you want to track.

Windows support currently targets x64.

Agent Notes

Codex

VibeTime installs three Codex hooks:

  • SessionStart
  • UserPromptSubmit
  • Stop

Codex may require one manual review step after installation. If Codex shows a message like hooks need review, open /hooks in Codex and approve the VibeTime hooks. This is Codex's safety boundary; VibeTime does not bypass it.

VibeTime uses Codex's current inline config.toml hook format.

OpenCode

VibeTime installs a managed OpenCode plugin at ~/.config/opencode/plugins/vibetime.js. The plugin forwards session and message lifecycle events to the local VibeTime hook and does not forward prompt or response text. Usage is read from OpenCode's local opencode.db.

Claude Code, Cursor, and Gemini CLI

Claude Code, Cursor, and Gemini CLI hooks can be installed or removed from VibeTime Settings. VibeTime preserves unrelated user hooks. Claude Code usage scanning is supported; Cursor and Gemini CLI usage scanning is intentionally not enabled yet.

Local Data

VibeTime stores data under:

  • ~/.vibetime/data.db
  • ~/.vibetime/config.toml
  • ~/.vibetime/hook.log
  • ~/.vibetime/main.log
  • ~/.vibetime/hook-health.json
  • ~/.vibetime/bin/vibetime

The database is local SQLite. You can remove VibeTime's hooks from Settings before uninstalling the app.

Hook health diagnostics:

  • Run vibetime health to inspect recent hook persist failures.
  • Use this when data appears missing to quickly confirm whether writes are failing (for example, DB lock or disk issues).

CLI essentials:

  • Run vibetime status for a compact local health summary.
  • Run vibetime agents to inspect agent hook installation.
  • Run vibetime history for the same 30-day summary semantics as the app History tab.
  • Add --json to status/query commands when scripting or calling from another agent.

Agent Skill

VibeTime includes a Codex-compatible vibetime skill for agents that need deeper local data access than the CLI summary commands provide.

Install it with:

npx skills add BarryYangi/vibetime --skill vibetime -g

The skill defaults to the VibeTime CLI for quick summaries, then uses its bundled standard-library Python inspector for deeper SQLite analysis. It exposes functional, composable data capabilities rather than UI-specific views:

  • environment and setup checks: info, app-info, config, health, cli-status, agents
  • activity queries: activity-live, activity-summary, events, turns
  • usage and cost queries: usage, usage-summary, usage-refresh-state
  • data quality and safe cleanup: audit, repair

All inspector commands are read-only except repair --apply --yes, which only removes safe stale open_turns rows after creating a local database backup.

Development

VibeTime is a pnpm workspace:

  • packages/core - pure TypeScript domain logic and SQLite schema
  • packages/hook - Bun-compiled hook and CLI binary
  • packages/desktop - Electron, React, and the tray/menu bar app

Useful commands from the repo root:

pnpm typecheck
pnpm lint
pnpm test
pnpm depcheck
pnpm verify:core-zero-deps
pnpm run ci

Desktop builds:

pnpm --filter @vibetime/desktop pack:mac
pnpm --filter @vibetime/desktop dist:mac
pnpm --filter @vibetime/desktop pack:win
pnpm --filter @vibetime/desktop dist:win

Artifacts are written to packages/desktop/release/.

License

MIT