taskman is a lightweight and fast command-line tool to manage your tasks directly from the terminal.
Supports priority, status updates, search, sorting, filtered listing, and Google Calendar integration — without needing any GUI or browser.
Inspired by the project idea on roadmap.sh.
You should install CLI tools in isolation using pipx.
Linux/macOS
python3 -m pip install --user pipx
python3 -m pipx ensurepathWindows
pip install pipx
python -m pipx ensurepathRestart your terminal after installation. If it still fails, use
python -m pipxinstead ofpipx.
pipx install git+https://github.com/bankarsudarshan/task-cli.gitRun from anywhere:
taskman [command] [options]| Command | Purpose | Example |
|---|---|---|
add <desc> |
Add new task | taskman add "Buy milk" |
add <desc> -p high |
Add with priority (low, medium, high) |
taskman add "Study DSA" -p high |
update <id> [options] |
Update task fields | See below |
delete <id> |
Delete task | taskman delete 2 |
list |
List all tasks | taskman list |
list todo -p high |
Filter by status + priority | taskman list todo -p high |
mark-done <id> |
Mark as done | taskman mark-done 1 |
mark-in-progress <id> |
Mark as in-progress | taskman mark-in-progress 3 |
clear [status] |
Remove tasks | taskman clear done |
search <text> |
Search descriptions | taskman search book |
gcal add <id> |
Export a task to Google Calendar | taskman gcal add 3 |
gcal sync |
Sync all tasks with due dates to Calendar | taskman gcal sync |
You can update any field independently — description is optional.
# Change only description
taskman update 1 -d "Finish book - chapter 5"
# Change priority only
taskman update 1 -p high
# Change status only
taskman update 1 -s done
# Update everything
taskman update 1 -d "Final revision" -p high -s done# All tasks
taskman list
# Only done tasks
taskman list done
# Only high priority
taskman list -p high
# Done + high priority
taskman list done -p high
# Sort by priority (high → low)
taskman list --sort-by priority
# Sort newest first
taskman list --sort-by updatedAt --order descSupported sort fields:
id, createdAt, updatedAt, priority, status
Sort order:
--order asc (default)
--order desc
taskman search "report"
taskman search bookReturns all tasks whose description contains the given keyword (case-insensitive).
All tasks are stored in a file in your home directory:
~/tasks.json
Example structure:
{
"1": {
"id": 1,
"description": "Work on project report",
"status": "in-progress",
"priority": "high",
"createdAt": "2025-11-28 14:25",
"updatedAt": "2025-11-28 18:47",
"dueAt": "2025-12-10 18:00"
}
}Taskman can export tasks with due dates to Google Calendar. This is optional and must be set up once per user.
-
Go to Google Cloud Console
-
Create a New Project
-
Open APIs & Services → Library
-
Enable Google Calendar API
-
Go to OAuth Consent Screen
-
User type: External
-
App name:
Taskman CLI -
Add scope:
https://www.googleapis.com/auth/calendar.events -
Save
-
-
Go to Credentials → Create Credentials → OAuth Client ID
- Application type: Desktop App
- Create
-
Click Download JSON
Rename the downloaded file to:
credentials.json
Create this directory:
mkdir -p ~/.config/taskman/Then move the file here:
mv ~/Downloads/credentials.json ~/.config/taskman/credentials.jsontaskman add "Submit assignment" --due "2025-12-10 18:00"taskman gcal add 1On first run:
- A browser window will open
- Log in to your Google account
- Allow calendar access
- A
token.jsonfile will be created automatically:
~/.config/taskman/token.json
From now on, no further login is needed.
taskman gcal syncThis will export all tasks that contain a dueAt field.
credentials.jsonis never uploaded or sharedtoken.jsonis stored locally only- You should never commit these files to Git
- Each user authenticates with their own Google account
- Add to
.gitignore:
~/.config/taskman/credentials.json
~/.config/taskman/token.json
Found a bug or have ideas? Open an issue here: