Skip to main content

A colorful command-line client for Clickup written in Python 3.10+.

Project description

QuickUp!

Python Compatibility PyPI Version Tests Documentation Status

Documentation | GitHub | PyPI

A simple, lightweight, and beautiful console-based client for ClickUp that lets you view, filter, and manage tasks directly from your command line. View tasks grouped by status, assignee, or priority, update task statuses, and auto-detect your current sprint. It features interactive mode for easy navigation and caching for fast performance.

QuickUp! in action

Features

  • Task Listing: View all tasks from a ClickUp list with color-coded status groups
  • Filtering: Filter tasks by assignee, priority, or due date
  • Grouping: Group tasks by status, assignee, or priority
  • Task Details: View detailed information about a specific task
  • Task Updates: Update task status with confirmation display
  • Task Comments: Post comments on tasks from the CLI or via piped input
  • Sprint Detection: Auto-detect current sprint/iteration lists
  • Interactive Mode: Navigate through Team → Space → Project → List hierarchy with prompts
  • Caching: Disk-based caching for improved performance (24h for teams/lists, 5min for tasks)

Installation

pip install quickup

Quick Start

Authenticate with ClickUp (recommended):

quickup login

This opens your browser for OAuth authentication and saves your credentials to ~/.quickup/auth.json.

Alternatively, set your ClickUp API token directly (useful for CI/automation):

export CLICKUP_TOKEN=your_token_here

Or create a .env file in your project directory:

CLICKUP_TOKEN=your_token_here

List tasks from a specific list:

quickup --team <team_id> --list <list_id>

Commands

quickup login - Authenticate

Authenticate with ClickUp via OAuth. Opens your default browser and waits for the callback (up to 120 seconds).

quickup login

Credentials are saved to ~/.quickup/auth.json (permissions: 0o600).

quickup logout - Remove Stored Credentials

Remove the stored OAuth token.

quickup logout

This only removes the OAuth token — it does not affect tokens set via CLICKUP_TOKEN or .env.

quickup (default) - List Tasks

List all tasks from a ClickUp list, grouped by status.

# Basic usage
quickup --team <team_id> --list <list_id>

# With filters
quickup --team <team_id> --list <list_id> --assignee john --priority high

# Group by assignee
quickup --team <team_id> --list <list_id> --group-by assignee

# Interactive mode
quickup -i

# Bypass cache
quickup --team <team_id> --list <list_id> --no-cache

Options:

  • --team: Team ID
  • --space: Space ID
  • --project: Project ID
  • --list: List ID
  • --assignee: Filter by assignee username (case-insensitive)
  • --priority: Filter by priority (low, normal, high, urgent)
  • --due-before: Filter tasks due before date (YYYY-MM-DD)
  • --group-by: Group by status (default), assignee, or priority
  • --closed: Include closed/done tasks
  • --no-cache: Bypass cache and fetch from API
  • -i, --interactive: Enable interactive mode

quickup sprint - Current Sprint Tasks

Auto-detects the current sprint list by searching for lists containing "sprint" or "iteration" in the name.

# List tasks from current sprint
quickup sprint --team <team_id>

# With filters
quickup sprint --team <team_id> --assignee jane --group-by priority

Options:

  • --team: Team ID
  • --space: Space ID
  • --project: Project ID
  • --assignee: Filter by assignee username
  • --priority: Filter by priority
  • --due-before: Filter tasks due before date
  • --group-by: Group by status, assignee, or priority
  • --closed: Include closed/done tasks
  • --no-cache: Bypass cache
  • -i, --interactive: Enable interactive mode

quickup task <task_id> - Task Details

Show detailed information about a specific task.

# Show task details
quickup task <task_id>

# With team specification
quickup task <task_id> --team <team_id>

# Include task comments
quickup task <task_id> --comments

Options:

  • task_id: ClickUp task ID
  • --team: Team ID (required if multiple teams exist)
  • --comments: Fetch and display task comments
  • -i, --interactive: Enable interactive mode

quickup update <task_id> - Update Task Status

Update the status of a specific task.

# Update task status
quickup update <task_id> --status "In Progress"

# With team specification
quickup update <task_id> --status "Done" --team <team_id>

Options:

  • task_id: ClickUp task ID
  • --status: New status name (e.g., "To Do", "In Progress", "Done")
  • --team: Team ID (required if multiple teams exist)
  • -i, --interactive: Enable interactive mode

quickup comment <task_id> - Post a Comment

Post a comment on a specific task.

# Post a comment
quickup comment <task_id> --text "This is my comment"

# Notify all task watchers
quickup comment <task_id> --text "Attention everyone" --notify-all

# Pipe comment from stdin
echo "Piped comment" | quickup comment <task_id>

Options:

  • task_id: ClickUp task ID
  • --text: Comment text to post (reads from stdin if omitted)
  • --notify-all: Notify all task watchers

Interactive Mode

When multiple teams, spaces, projects, or lists exist, use -i flag to enable interactive selection:

quickup -i

This will prompt you to select:

  1. Team (if multiple teams exist)
  2. Space (if multiple spaces exist)
  3. Project (if multiple projects exist)
  4. List (if multiple lists exist)

Output Format

Tasks are displayed with:

  • Bold task name
  • Blue underlined URL
  • Priority badge (color-coded)
  • Assignee names in parentheses

Status groups are displayed with color-coded headers matching the ClickUp status colors.

At the bottom of the output, a suggestion is shown in gray text with the command to repeat the same query:

Run again: quickup --assignee john --priority high --group-by priority

This makes it easy to re-run the same filtered/grouped view without typing the full command again.

Caching

QuickUp! uses disk-based caching to reduce API calls:

  • Teams: 24 hours TTL
  • Lists: 24 hours TTL
  • Tasks: 5 minutes TTL

Cache location: ~/.quickup/cache/

Use --no-cache to bypass cache and fetch fresh data from the API.

Exit Codes

Code Meaning
1 Token error or general ClickUp error
2 Team not found or ambiguous team
3 List not found
4 Network error
5 API error
99 Unexpected error

Requirements

  • Python 3.10+
  • ClickUp API token

Dependencies

Development

Running Tests

Run the test suite:

hatch run test:test

Run tests with coverage:

hatch run test:cov

Coverage reports are generated in:

  • coverage.json - JSON format
  • Terminal - Human-readable report

Run tests on a specific Python version:

hatch run +py=3.11 test:test

Documentation

Build the documentation:

hatch run docs:build

Serve the documentation locally:

hatch run docs:serve

Then open http://localhost:8000 in your browser.

Debug Environment

For debugging with enhanced tooling:

hatch run debug:python

This environment includes ipdb and line_profiler.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quickup-0.4.0.tar.gz (478.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quickup-0.4.0-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file quickup-0.4.0.tar.gz.

File metadata

  • Download URL: quickup-0.4.0.tar.gz
  • Upload date:
  • Size: 478.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quickup-0.4.0.tar.gz
Algorithm Hash digest
SHA256 8e624d62c9777e6cb4bd6b9677a0d9ae2bed5b7ed10350efffb114edfd43f629
MD5 daf9df6675dd68b835526e78341f3dca
BLAKE2b-256 71b4b9174e45fe34d73a1f666df0e865d07519235fbe33b19dd3ab1349d6c5b3

See more details on using hashes here.

File details

Details for the file quickup-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: quickup-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quickup-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 98ae71d34d3ab30dbfe5e8d9a7a9baafcc1bd01da45b681e1a334af47738709d
MD5 680fa9e89d864e5d431c4fe93642bac8
BLAKE2b-256 6680b8c23b37e25e43c892a7c89c18ced355920f352e840162fe945a7cfe075c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page