Tick is a CLI time-tracking tool written in Rust.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Tick CLI for tracking your time

Angry clock eats person

I use tick to track all my time using tmux sessions. But tick can be used without tmux, node or any other dependency. The tick CLI is written in Rust.

Info Description
Project Build Status Project build status for Tick CLI
Installation Installing Tick CLI.
Motivation Why use Tick CLI?
Commands Using Tick CLI.
Inspiration Everything is a remix, including Tick CLI.
Contributing Contribute to Tick CLI.
License License for Tick CLI.


To install Tick, you can either compile it from source or download the binary from the releases page for the release you want and the platform you need.

Compiling Tick from source

The steps are pretty straight-forward as long as you are within the realm of Tier 1 support for the Rust compiler.

# Clone the repository.
$ git clone https://github.com/rogeruiz/tick.git

$ cd tick

# Setup the database, environment, and run any migrations.
$ cargo install diesel_cli
$ cp ./.env.example ./.env
$ diesel setup

# Build the release.
$ cargo build --release

# Install in your path.
$ cp ./target/release/tick /usr/local/bin/tick

Troubleshooting the first run of tick

Currently when you run Tick for the first time and haven't setup the database tables for the timers nor exported the path to your database via $DATABASE_URL in your shell, you're going to run into a Rust panic. Remember to setup your environment with the right variable set to the path to your SQLite database and make sure you've run the migration found in this repository. Use the diesel_cli cargo package to setup the database from within the cloned project.

$ cargo install diesel_cli
$ cp ./.env.example ./.env
$ diesel setup


I track my time a lot while using the terminal using a wrapper around tmux. The wrapper I have is a shell script called tux. While the wrapper works great, it depends on clocker and node to handle time tracking.

The main motivation around writing this was to remove the node and clocker dependencies from tux along with adding customizable exporting mechanisms. Tracking your time can be hard enough, so Tick tries making it a lot easier.


Run tick --help to see all the available commands you can use. Below is an example workflow of how you would use Tick.

$ tick [ -v ] start --name my-timer [ --message "I can do the thing!" ]
$ tick [ -v ] status
$ tick [ -v ] stop --name my-timer [ --message "I did the thing!" ]
$ tick [ -v ] stop [ --message "I did the thing!" ] # without a name argument stops the latest running timer
$ tick [ -v ] list
$ tick [ -v ] remove --id $( tick list | tail -1 | awk '{ print $1 }' ) # delete the latest timer by Timer ID


This project would not be possible without being inspired by other's work.