| Hey HN, I built Worktale because I couldn't remember what to say at my last performance review: "What did you ship this quarter?" I'd spent months debugging race conditions, redesigning a reporting pipelines, shipping a major migration — all behind a corporate firewall in private repos. None of it was visible. Not on GitHub. Not on my resume. Not even to me. So I built a CLI that reads your local git history and turns it into a personal record of what you actually built. No account, no cloud, no code leaves your machine. How it works: npm i -g worktale
cd my-project
worktale init # scans full git history, installs a silent post-commit hook
worktale # opens a TUI dashboard — overview, daily log, heatmap
worktale digest # generates a daily summary (template or local Ollama AI) After 'init', every git commit silently captures metadata (message, lines changed, timestamps) into a local SQLite database. That's it. No network requests, no telemetry. If you don't want hooks in your repos--fair point, for those with a fear of commitment: cd ~/projects
worktale batch --since 3m # scans all repos recursively, imports history, installs nothing
worktale hook install # opt-in to live tracking per repo later Technical details for the curious: - TypeScript, compiled to ESM with tsup
- TUI built with Ink 5 (React 18 for terminals)
- SQLite via better-sqlite3 in WAL mode
- Historical analysis runs in worker threads (batches of 500 commits)
- Bash + PowerShell git hooks for cross-platform support
- 385 tests across 28 test files
- MIT licensed
What it is not: - Not a time tracker (it estimates from commit timestamps, but that's a side effect)
- Not a replacement for GitHub contributions (this is your private journal)
- Not a team tool (yet — cloud with shareable profiles is on the roadmap)
The whole thing runs locally. The only optional network call is if you use Ollama for AI-generated digests, and that's localhost.Source: https://github.com/worktale/worktale-cli
Site: https://worktale.org npm: npm i -g worktale Happy to answer questions about the architecture, the SQLite schema, or why I parse git log --format instead of using a library. |