npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tjboudreaux/gtcli

v0.1.1

Published

Google Tasks CLI

Readme

gtcli - Google Tasks CLI

CI npm version License: MIT

A fast, minimal command-line interface for Google Tasks. Manage your task lists and tasks directly from the terminal with simple, intuitive commands.

Features

  • Multi-account support - Manage tasks across multiple Google accounts
  • Full CRUD operations - Create, read, update, delete tasks and task lists
  • Subtasks - Create hierarchical task structures with parent-child relationships
  • Tab-separated output - Easy to parse with standard Unix tools
  • Secure OAuth2 - Browser-based or manual authentication flow
  • Cross-platform - Works on macOS, Linux, and Windows

Install

npm install -g @tjboudreaux/gtcli

Setup

Before using gtcli, you need OAuth2 credentials from Google Cloud Console:

  1. Create a new project (or select existing)
  2. Enable the Google Tasks API
  3. Set app name in OAuth branding
  4. Add test users (all Google accounts you want to use)
  5. Create OAuth client:
    • Click "Create Client"
    • Application type: "Desktop app"
    • Download the JSON file

Then configure gtcli:

gtcli accounts credentials ~/path/to/credentials.json
gtcli accounts add [email protected]

Usage

gtcli accounts <action>                    Account management
gtcli <email> lists [command] [options]    Task list operations
gtcli <email> tasks <listId> [command]     Task operations

Commands

accounts

gtcli accounts credentials <file.json>   # Set OAuth credentials (once)
gtcli accounts list                      # List configured accounts
gtcli accounts add <email>               # Add account (opens browser)
gtcli accounts add <email> --manual      # Add account (browserless, paste redirect URL)
gtcli accounts remove <email>            # Remove account

lists

# List all task lists
gtcli <email> lists [--max N] [--page TOKEN]

# Task list operations
gtcli <email> lists get <listId>
gtcli <email> lists create <title>
gtcli <email> lists update <listId> --title <title>
gtcli <email> lists delete <listId>
gtcli <email> lists url <listIds...>

tasks

# List tasks in a task list
gtcli <email> tasks <listId> [--completed] [--hidden] [--max N]

# Task operations
gtcli <email> tasks <listId> get <taskId>
gtcli <email> tasks <listId> create <title> [--notes N] [--due DATE] [--parent ID]
gtcli <email> tasks <listId> update <taskId> [--title T] [--notes N] [--due DATE] [--status STATUS]
gtcli <email> tasks <listId> complete <taskId>
gtcli <email> tasks <listId> uncomplete <taskId>
gtcli <email> tasks <listId> delete <taskId>
gtcli <email> tasks <listId> move <taskId> [--parent ID] [--previous ID]
gtcli <email> tasks <listId> clear
gtcli <email> tasks <listId> url <taskIds...>

Status options: needsAction, completed

Due date format: RFC 3339 timestamp (e.g., 2024-12-31T00:00:00Z)

Examples

# List all task lists
gtcli [email protected] lists

# Create a new task list
gtcli [email protected] lists create "Shopping List"

# List tasks in default task list (use list ID from 'lists' command)
gtcli [email protected] tasks MTIzNDU2Nzg5

# Create a task with due date
gtcli [email protected] tasks MTIzNDU2Nzg5 create "Buy groceries" --due "2024-12-31T00:00:00Z"

# Create a task with notes
gtcli [email protected] tasks MTIzNDU2Nzg5 create "Call mom" --notes "Ask about dinner plans"

# Mark task as completed
gtcli [email protected] tasks MTIzNDU2Nzg5 complete TASK_ID

# List completed tasks
gtcli [email protected] tasks MTIzNDU2Nzg5 --completed

# Clear all completed tasks
gtcli [email protected] tasks MTIzNDU2Nzg5 clear

# Create a subtask
gtcli [email protected] tasks MTIzNDU2Nzg5 create "Buy milk" --parent PARENT_TASK_ID

# Move task to different position
gtcli [email protected] tasks MTIzNDU2Nzg5 move TASK_ID --previous SIBLING_TASK_ID

Data Storage

All data is stored in ~/.gtcli/:

  • credentials.json - OAuth client credentials
  • accounts.json - Account tokens

Development

npm install
npm run build
npm run check
npm test

Acknowledgements

Inspired by:

  • gmcli - Gmail CLI by badlogic
  • gdcli - Google Drive CLI

License

MIT