โ–š focus-tracker

Terminal ยท TypeScript ยท SQLite

Your day, scored.

Weighted tasks, streaks, and a headless JSON CLI your agent can drive.

~ โ€” focus-tracker
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 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

  1. N

    Add a task. Metadata goes inline: Dog walk @7:15-7:45 !tomorrow #2 โ€” time, deadline, weight.

  2. n

    Add subtasks under it. A task's progress is just how many are checked.

  3. space

    Check one off. The bar fills, the score moves, the buddy reacts.

  4. M

    Or skip all that โ€” paste a markdown schedule and fill the whole day at once.

  5. :

    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.

j knavigate
xwhole task done
J Kreorder
uundo
gg Gtop / bottom
?full cheatsheet
:breakdown:stats:heatmap:pomodoro :theme:provider:export:pet

Theme

โ‰ฅ90 70โ€“89 40โ€“69 <40 active accent

This page uses the app's default palette. Swap it for any VSCode theme.