A Windows desktop "resume card." HumCon quietly captures what you were doing —
your active window, recent WSL shell commands, a hotkey-triggered voice note
(recorded, transcribed locally by whisper.cpp, and summarized by the Claude
Haiku API), and your active browser tab — into one local snapshot.json, and
renders it in a small window so you can see what you were doing when you come
back to your desk.
Four independent producers write into one shared snapshot.json; one card
reads it back:
- Window/app capture — polls the foreground window every 3s, writes
active_window. - Shell command log — a bash hook (sourced from
~/.bashrc) appends each interactive command tocommands.jsonl; the app tails that file every 2s intorecent_commands. - Voice note —
Ctrl+Alt+Spacetoggles recording; the WAV is transcribed locally bywhisper-cli.exeand the transcript is summarized by the Claude Haiku API, intovoice_note. - Browser extension — reports the active tab to a local loopback server on
127.0.0.1:7423, writingbrowser_tab. - Resume card — the app's UI, reads
snapshot.jsonfrom disk every 1s (plus on focus/visibility change) and renders all four sections.
All writes to snapshot.json go through a single in-process mutex, so producers
never race each other. The full schema, write-coordination rules, and per-component
status live in .claude/architecture.md — read that before
changing any of this.
%USERPROFILE%\.humcon\ — contains snapshot.json, commands.jsonl, and a whisper\
subdirectory. Override the base directory with HUMCON_DIR.
From the project root:
cargo tauri dev
To just check the Rust side compiles (the crate is in src-tauri/, so plain
cargo build from the root fails):
cd src-tauri && cargo build
Requires Rust (MSVC toolchain), Node, tauri-cli, and WebView2.
The app is a native Windows process. If you launch it from a WSL shell, the whole
process tree dies the moment the launching WSL command returns — run it from a
Windows terminal, or hold the launching command open for the duration of the run.
See .claude/architecture.md's Platform notes for details.
Not fetched automatically. Into %USERPROFILE%\.humcon\whisper\:
- From the whisper.cpp releases,
download
whisper-bin-x64.zipand extractwhisper-cli.exeplus itswhisper.dlland everyggml*.dllsibling — it's a DLL-dependent build and won't launch without them. - Download the model as
ggml-base.en.bin.
Missing binary or model is a startup warning, not a crash — the hotkey still records,
but transcription reports the missing file. Override the paths with
HUMCON_WHISPER_BIN / HUMCON_WHISPER_MODEL.
Set ANTHROPIC_API_KEY in the Windows environment. A WSL-side export will not reach
the Windows process unless the variable is also listed in WSLENV. Without a key,
voice notes still transcribe fine — voice_note.summary just stays null.
Source hooks/humcon-log.sh from ~/.bashrc in WSL. It only logs interactive
commands, and skips anything that looks like it contains a secret (password, token,
API key, etc.) entirely rather than redacting it.
Load-unpacked from extension/ — see extension/README.md
for install steps and what it does and doesn't report.
For the frozen snapshot.json schema, full component status, session-by-session
history, and known limitations, see .claude/architecture.md.