chronoskin is a time tracker that lives in your shell. Start a task, stop it, and print the week as text you can read, pipe or paste into an invoice.
$ brew install chronoskin copy
One binary of 3.1 MB for Linux, macOS and Windows. No account, no daemon, no network.
~/work: chronoskin, 60x17
$ chronoskin start "write the parser" -t compiler started 09:12 write the parser #compiler $ chronoskin status running write the parser 00:47:13 $ chronoskin report --week day hours tracked of 8 h mon 6.5 ████████████████░░░░ tue 7.2 ██████████████████░░ wed 4.1 ██████████░░░░░░░░░░ thu 0.8 ██░░░░░░░░░░░░░░░░░░ ------------------------------------------ total 18.6 h in 3 projects, 11 tasks note: thursday is still running $
| command | what it does | since | runs in |
|---|---|---|---|
| start | Begins a task, and stops the one that was running. | 1.0 | 4 ms |
| stop | Ends the running task and writes one line to the log. | 1.0 | 4 ms |
| status | Prints what is running and for how long. Made for a prompt. | 1.2 | 3 ms |
| report | A day, a week or a month as aligned columns, CSV or JSON. | 2.0 | 12 ms |
| edit | Opens the log in your editor. It is a text file; fix it by hand. | 2.4 | 6 ms |
Every command takes -h help and exits with 0 when it did what you asked. The full reference has all fourteen.
01 prompt
A status segment for bash, zsh and fish shows the running task beside your path.
02 editor
The log is plain text, one line a task. Any editor can open, sort and repair it.
03 pipe
Reports come as CSV or JSON on standard output, ready for the next program.
04 sync
Keep the log beside the code. It merges like any other text file.
Three lines of configuration for each of the three shells.
The last platform people asked for. Checksums are on the download page.
Everything chronoskin knows is in one file you can read.
03-02 09:12 10:41 write the parser 03-02 10:55 12:30 review notes 03-02 13:20 - fix the lexer
A dash means the task is still running. The format fits on one page.
Install it, track one task, print one report. Five minutes.
note: this page describes 3.2. Run chronoskin --version to see what you have.
error: versions before 2.0 cannot read a log written by 3.x. Upgrade before you share a file.
chronoskin keeps one text file, the log, and three commands do nearly all the work: start, stop and report. Nothing runs in the background; the clock is the difference between two times in the file.
Pick your system. Each line puts one binary on your path and nothing else.
$ brew install chronoskin $ chronoskin --version chronoskin 3.2.0
Say what you are doing. Starting a task stops the one before it, so you never have two clocks.
chronoskin start "name" begins a task now.chronoskin start -a 09:00 "name" begins it in the past.chronoskin stop ends it and prints how long it ran.A word after -t is a tag. A task may carry several; a report can group by any of them.
41 releases, newest first. Dates are the day the tag was pushed.
| version | date | change | kind | lines |
|---|---|---|---|---|
| 3.2.0, 2 March 2026 | ||||
| 3.2.0 | 03-02 | report --by tag groups a report by tag. | added | +412 |
| 3.2.0 | 03-02 | A week that crosses a clock change no longer loses an hour. | fixed | +38 |
| 3.2.0 | 03-02 | The --utc flag is gone. Set the zone in the config file. | removed | -120 |
| 3.1.2, 11 January 2026 | ||||
| 3.1.2 | 01-11 | status prints nothing, not an error, when no task runs. | fixed | +9 |
| 3.1.2 | 01-11 | Shell completions for fish. | added | +164 |
| 3.1.0, 30 November 2025 | ||||
| 3.1.0 | 11-30 | Builds for ARM on Windows. | added | +21 |
41 added fixed removed breaking
A count stands on the accent colour. A kind is a word in brackets. A tag marks a release you should read before upgrading.
Nothing has been merged since 3.2.0.
propose a change$ chronoskin self-update
3.1.2 -> 3.2.0 ████████████ ok
The old binary is kept beside the new one until the next update.
Six files and their checksums. Each archive holds one binary and the manual.
| file | system | sha256, first 16 | size | |
|---|---|---|---|---|
| chronoskin-3.2.0-linux-x64.tar.gz | Linux, x86-64 | 9f2c41d07ab3e5c8 | 3.1 MB | get |
| chronoskin-3.2.0-linux-arm64.tar.gz | Linux, ARM | 27d0be6614f9a0c2 | 2.9 MB | get |
| chronoskin-3.2.0-macos.tar.gz | macOS, universal | c48e19a2f07d3b55 | 5.8 MB | get |
| chronoskin-3.2.0-windows-x64.zip | Windows, x86-64 | 510af3e7d92c6b18 | 3.4 MB | get |
| chronoskin-3.2.0.tar.gz | source | e6b7204c1d8f93aa | 412 KB | get |
Check a file with sha256sum -c chronoskin-3.2.0.sha256 before you run it.
dev@example.org will get no more release mail. Security fixes are announced on this page too.
$ tar xf chronoskin-3.2.0.tar.gz $ cd chronoskin-3.2.0 && make $ ./chronoskin --version
A C compiler and make are all it takes. Build notes