@vibecoded/work
v0.0.15
Published
Work: CLI Time Tracker
Readme
@vibecoded/work
Minimal local time-tracking CLI (Bun + TypeScript) that stores everything on disk.
Features
- One command to start/stop tracking.
- Pause and resume active tracking.
- Add notes, manual entries, and undo the latest session.
- Task picking with fuzzy search.
- Monthly CSV storage for easy exports.
- No servers, no accounts, no lock-in.
Install
bun add -g @vibecoded/work
npm install -g @vibecoded/workQuick start
work init
work on "Client X" "Kickoff call"
work status
work pause
work resume
work note "Investigating issue"
work add "Client X" "Prep" --start "2025-10-01 09" --end "2025-10-01 10" --note "offline work"
work undo
work offLibrary usage
Import the Node API and call the same lower-level helpers used by the CLI.
import { ensureWorkHome, getWorkHome, loadProjects } from '@vibecoded/work';
const workHome = getWorkHome();
await ensureWorkHome(workHome);
const projects = await loadProjects(workHome);
console.log(projects.projects);You can also import the explicit library entry:
import { fmtElapsed } from '@vibecoded/work/lib';
console.log(fmtElapsed(90_000));Data location
Default: ~/.work
Override with:
work --dir ./my-work-data statusCommands
work init
Initialize data files.
work initwork on [project] [task...]
Start tracking.
- If
projectis missing: pick or create a project - If
taskis missing: pick or create a task - If already tracking something: asks to switch (use
--yesto auto-switch)
work on
work on Project
work on Project "Fix billing bug"
work on Project2 "New task" --yeswork off
Stop current tracking and write to the month CSV.
work offwork pause
Pause the current tracking session.
work pausework resume
Resume a paused tracking session.
work resumework note <text>
Add a note to the active session.
work note "Investigating issue"work add <project> <task...> [--start <date>] [--end <date>] [--note <text>]
Add a manual entry. Date parts are optional; missing minutes/seconds/milliseconds are randomized.
work add Project "Deep work" --start "2025-10-01 09" --end "2025-10-01 10"
work add Project "Planning" --start "2025-10-01 11:2" --end "2025-10-01 12" --note "offline"work undo
Mark the most recent session as deleted.
work undowork status
Show current tracking (if any).
work statuswork projects
List projects.
work projectswork tasks [project]
List tasks for a project (by usage).
- If
projectis missing: pick a project
work tasks
work tasks Projectwork info [project] [YYYY-MM] [--export]
Monthly summary (grouped by day and task).
- If
projectis missing: pick a project - If
YYYY-MMis missing: uses current local month --exportwritesdata/<projectId>/<YYYY-MM>-info.csv
work info
work info Project
work info Project 2026-01
work info 2026-01
work info Project 2026-01 --exportData layout
Each project is stored in data/<projectId>/ with:
tasks.json(task index)- one CSV per month:
YYYY-MM.csv
Build
Build the CLI and library bundles:
bun run buildVersioning & releases
The published version is tracked in package.json and surfaced via the npm badge above.
Release builds are produced with bun run build before publishing.
Notes
- Uses local timezone for day/month grouping.
- CSV columns:
id,startAt,endAt,task,note,createdAt,updatedAt,deletedAt
