Two layers: daily goals for what you want done today, and strategies for things that span days or weeks.
Goals link to entries (work you've logged) and to strategies. Hours roll up from entries through goals into strategy reports.
strategy: "ship v2 auth"
├── goal: "implement oauth2 pkce" (2026-04-14) → entries #41, #42
├── goal: "add token refresh" (2026-04-15) → entry #45
└── goal: "write integration tests" (2026-04-16) → entry #48
hrs goals add "implement oauth2 pkce"
hrs goals add "review deployment docs" -d 2026-04-18
hrs goals add "write migration scripts" -s 1
-d sets the date (defaults to today). -s links the goal to a strategy.
hrs goals # today's goals
hrs goals -d 2026-04-18 # specific date
hrs goals --format json # machine-readable
hrs goals done 1 # mark goal #1 complete
hrs goals done 1 -e 41,42 # complete and link entries #41 and #42
Linking entries connects the work you logged to the goal it achieved.
hrs goals link 1 -e 41,42 # link entries without completing
hrs goals undo 1 # reopen a completed goal
hrs goals rm 1 # delete a goal
Strategies span multiple days. Daily goals link up to them, and hrs rolls up progress across all linked goals.
hrs strategy add -t "ship v2 auth" -desc "oauth2, token refresh, integration tests"
Title can also be passed as a positional argument:
hrs strategy add "ship v2 auth"
hrs strategy # all strategies
hrs strategy -status active # filter by status
hrs strategy --format json # machine-readable
hrs strategy 1 # shorthand for report
hrs strategy report 1 # explicit
hrs strategy report 1 --format json # machine-readable
The report shows goal completion (e.g. 3/5 done), total hours rolled up from linked entries, and a list of all goals.
hrs strategy done 1 # mark as completed
hrs strategy archive 1 # pause (archive)
hrs strategy reopen 1 # set back to active
hrs strategy edit 1 -t "new title" -desc "updated description"
hrs strategy rm 1 # delete (unlinks goals, doesn't delete them)
The typical workflow:
hrs log# 1. create strategy
hrs strategy add -t "migrate to postgres"
# 2. set today's goals, linked to the strategy (-s flag)
hrs goals add "schema migration scripts" -s 1
hrs goals add "update connection pooling" -s 1
# 3. log work as you go
hrs log -c dev -t "wrote migration scripts" -b "up/down for users table;seed data" -e 2
# 4. complete goal, link the entry
hrs goals done 1 -e 50
# 5. check progress
hrs strategy 1
Link goals to a strategy with -s on the CLI or strategy_id via HTTP.
The TUI has a dedicated goals view. Press tab to switch between entries and goals. See TUI explorer for all keybindings.