Why Your Best Work Deserves a Record
Every developer has had this moment: it’s standup time, and you draw a blank. You know you worked hard yesterday. You remember the feeling of being deep in flow. But the specifics? Gone. You end up mumbling something about “continued work on the API” and move on.
Git logs capture commits but miss the hours of debugging that led to a one-line fix. Your calendar shows meetings but not the real work between them. And manual time tracking? That lasted about three days before you abandoned it.
This is why I built Terminal Biographer.
The Idea
The core insight was simple: your tools already know what you’re doing. Your terminal logs every command. Git records every commit. VS Code tracks every file you open. The data exists, scattered across a dozen different formats and locations, with no unified view.
Terminal Biographer connects to the tools you already use and builds a timeline of your actual work. At the end of each day, it generates a structured summary. No manual input required.
How It Works
The app runs on your desktop and captures activity through lightweight hooks:
- Terminal commands from Bash, Zsh, or PowerShell, automatically categorized (git, build, test, deploy, edit)
- Git commits with the full context: branch, message, files changed, insertions and deletions
- VS Code activity via an extension that tracks file opens, saves, and focus changes
- AI coding sessions from Claude Code and Codex CLI, capturing what files the agent touched and what it accomplished
- Mobile conversations shared from Claude, ChatGPT, or Gemini via Android’s Share Sheet
All of these hooks share a common infrastructure that handles configuration, connection management, and something I’m particularly careful about: automatic secret redaction. Before any event is stored, the system strips AWS access keys, GitHub tokens, Slack tokens, OpenAI keys, JWTs, and Bearer tokens. Your captured history should never contain credentials, even if you accidentally typed them.
Privacy as Architecture
Everything runs locally. The backend server binds to localhost only. Data is encrypted at rest with AES-256-GCM. No telemetry, no analytics, no cloud dependencies. The default summarizer uses template heuristics that require zero API calls.
This wasn’t a marketing decision. It was an architecture decision. Developer activity data is sensitive. It reveals what you’re working on, how you work, and what tools you use. That data belongs on your machine, under your control.
Cloud sync exists as an opt-in feature for people who want to access their history across devices. But it’s fully optional, and the sync layer uses end-to-end encryption.
Why Tauri Instead of Electron
The desktop app is built with Tauri v2, which uses Rust for the backend and your operating system’s native WebView for the frontend. The result: a 3.5 MB installer on Windows, compared to the 150+ MB you’d get with Electron bundling a full copy of Chromium.
From a single codebase, the GitHub Actions CI/CD pipeline builds for Windows, macOS (Apple Silicon and Intel), and Linux (both .deb and AppImage). Android builds from the same source via Tauri’s mobile support.
The frontend is vanilla HTML, CSS, and JavaScript with no build step. No webpack, no bundler, no framework. The modules load as ES imports directly in the browser. For a tool that’s supposed to reduce complexity in your workflow, it felt wrong to introduce a complex build chain.
What’s Next
Terminal Biographer is free and open source today. The Pro tier (coming soon) will add Claude AI-powered summaries that read more like narratives than log files, plus team dashboards and cross-device sync.
The integrations I’m most excited about building next: JetBrains IDE support, Neovim/Vim hooks, tmux session capture, and Warp terminal integration. If there’s a tool in your workflow that knows what you’re doing, Terminal Biographer should be able to listen to it.
Try Terminal Biographer
Free, open source, and installs in under a minute.
Download for your platform