Guides
Install tsk and sign in
tsk is the command line of tasks: a single file without dependencies for macOS, Linux and
Windows. Use it to add tasks from the terminal, list them and tick them off, and give scripts
clean data with --json.
1. Download
Pick the file for your system and get the checksums with it:
- macOS (Apple silicon)
- macOS (Intel)
- Linux (x86-64)
- Linux (ARM64)
- Windows (x86-64)
- Checksums (sha256sums.txt)
Or in a terminal. Put your file into file:
base=https://me-squibble-tasks--production.s3.eu-central-2.amazonaws.com/public/tsk/latest
file=tsk-darwin-arm64
curl -fsSLO "$base/$file"
curl -fsSLO "$base/sha256sums.txt"
2. Verify the checksum
This makes sure the file reached you unchanged:
grep " ${file}\$" sha256sums.txt | shasum -a 256 -c -
The output must read tsk-darwin-arm64: OK. On Linux, sha256sum -c - works in place of
shasum -a 256 -c -. On Windows, compare the output of
Get-FileHash tsk-windows-amd64.exe -Algorithm SHA256 in PowerShell with the matching line of
sha256sums.txt.
3. Install
mkdir -p ~/.local/bin
install -m 0755 "$file" ~/.local/bin/tsk
tsk version
tsk version prints the version and the address tsk talks to. If ~/.local/bin is not on
your path yet, add it in your shell configuration. On Windows, rename the file to tsk.exe and
put it into a folder on your PATH. If macOS refuses to start it, run
xattr -d com.apple.quarantine ~/.local/bin/tsk.
4. Sign in
In tasks, create a token under Settings → API tokens with
Read tasks and Write tasks. Without the write scope only ls and show work. Then:
tsk login
tsk asks for the token without echoing it, checks it with tasks and lists your workspaces. It
stores the token in ~/.config/tsk/config.toml, readable only by you. A wrong token is never
stored. In scripts and CI, set the environment variable TSK_TOKEN instead.
5. The main commands
tsk add '$family #garden !p1 fri Cut hedge'
tsk ls
tsk ls --upcoming
tsk ls --inbox --json
tsk done 4
tsk add -p '#4' --item 'Buy shears' --item 'Rent a hedge trimmer'
tsk mv '#5' --parent none
tsk addunderstands the same quick add syntax as the web app. Put the line in single quotes, or the shell reads#and!itself.tsk lsshows Today,--upcomingwhat is coming up,--inboxthe inbox.tsk show 4,tsk edit 4 --due 2026-10-30,tsk done 4,tsk reopen 4,tsk rm 4andtsk restore 4work with the task number.- Subtasks:
tsk add -p '#4' 'Text'(or--parent) creates a subtask under #4, in its workspace. Repeat--item 'Text'or pipe lines in with-to add several at once, with or without-p. A batch stops at the first error; tasks already created stay. Output looks like#5 Buy shears (under #4). Quote'#4'so the shell does not read it;4or the uuid work too. tsk mv '#5' --parent '#9're-parents,--parent nonemakes it a top-level task again, andtsk mv '#4' --workspace privatemoves a task to another workspace, subtasks along.mvtakes several tasks per call.tsk lsshows subtasks indented under their parent; if only the subtask matches, the parent appears as a context row.tsk ls --jsonstays flat.- Tags, priority and category are options:
tsk ls --tag garden --priority 1,tsk edit 4 --tag +garden --priority 2 --category Home/Garden. - Every command takes
--json.tsk <command> --helplists all options.
If it does not work
tsk exits with a code scripts can rely on:
| Code | Meaning |
|---|---|
| 0 | All good |
| 1 | tasks said no, for example an unknown workspace |
| 2 | Wrong usage, --help shows the options |
| 3 | Not signed in or the token is invalid: run tsk login again |
Frequently asked questions
How does `tsk` work in the terminal?
tsk is a single program for Linux, macOS and Windows, with no dependencies. Download it, check the checksum and sign in with tsk login and an access token. After that, tsk add 'Send quote $client-a tomorrow !p1' adds a task in one line.
ls, show, edit, mv, done, reopen, rm and restore list, edit, move and complete tasks. tsk add -p '#34' --item 'A' --item 'B' adds several subtasks under #34, tsk mv re-parents them. Every command gives machine-readable output with --json for scripts.