Terminal ยท TypeScript ยท SQLite
Your day, scored.
Weighted tasks, streaks, and a headless JSON CLI your agent can drive.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ focus โโโโโโโโโโโโโโโโโโโโ 73% streak 12d Lv 7 09:41 > Study 22m โ โโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ VIEWS โ v Morning Routine @06:30-08:00 60% โ โ โ โโโโโโโโโโโโโโโโโโโโ โ โ > Daily 73% โ + Make bed โ โ Weekly 45% โ + Cold shower โ โ Deep Work 12% โ + Journal โ โ Chores 90% โ o 10min stretch โ โ โ o Inbox to zero โ โ /\_/\ โ โ โ ( ^.^ ) nice! โ v Study Session @09:15-11:00 0% w3 โ โ > ^ < โ โโโโโโโโโโโโโโโโโโโโ โ โ pixel . Lv 7 โ o Read chapter 4 โ โ โ o Problem set 3 โ โ โ โ โ โ Tax paperwork !2026-07-28 [PAST DUE] โ โโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ [up/dn jk] nav [space] toggle [N] task [M] paste [:] cmd [?] help โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
What it does
- weighted scoring
- ฮฃ(weight ร progress) / ฮฃ(weight). Finishing what matters moves the number.
- schedule import
- Paste a markdown table. Each row becomes a time block.
- streaks & xp
- Subtasks earn XP, XP earns levels, strong days build a streak.
- a buddy
- ASCII mascot tracks your score. Rainbow at 100%.
- vim keys
- hjkl, gg/G, visual mode, multi-level undo,
:palette. - llm breakdown
- Split a vague goal into weighted subtasks. Claude, Gemini, or Ollama.
- themes
- Any VSCode theme JSON. Seven bundled.
- local only
- One SQLite file. No account, no sync.
Install
$ git clone https://github.com/Nano-AI/Focus-Tracker.git $ cd Focus-Tracker && npm install && npm run build $ npm link $ focus-tracker
Node 18+, macOS or Linux. better-sqlite3 builds from source โ macOS needs
Xcode Command Line Tools. After a Node upgrade, npm rebuild better-sqlite3.
Built for agents
No arguments opens the TUI. A subcommand prints JSON โ no TTY, same database.
$ focus-tracker schema
Every command, flag, and error code. One call, no guessing.
$ cat plan.md | focus-tracker import
A whole plan in one transaction.
$ focus-tracker task add "Ship v2" --weight 3 --sub "write tests" $ focus-tracker sub set 34 --done true $ focus-tracker score --text โโโโโโโโโโโโโโโโโโโโ 62% (medium)
Every call returns { ok, command, data } and exits 0 or 1 โ failures are
envelopes too. Conventions live in
AGENTS.md.
Using it
-
N
Add a task. Metadata goes inline:
Dog walk @7:15-7:45 !tomorrow #2โ time, deadline, weight. -
n
Add subtasks under it. A task's progress is just how many are checked.
-
space
Check one off. The bar fills, the score moves, the buddy reacts.
-
M
Or skip all that โ paste a markdown schedule and fill the whole day at once.
-
:
Everything else lives in the command palette.
Daily and weekly views clear themselves overnight and snapshot yesterday's score. Custom views don't โ use those for projects.
:breakdown:stats:heatmap:pomodoro
:theme:provider:export:pet
Theme
This page uses the app's default palette. Swap it for any VSCode theme.