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

taskair-cli

v1.0.13

Published

Space-themed, privacy-first task management CLI with E2E encryption

Readme

TaskAir CLI ✦

Space-themed, privacy-first task management CLI with zero-knowledge, client-side end-to-end encryption.

TaskAir CLI is the developer's command-line interface for the TaskAir ecosystem. It features a stunning space-themed terminal UI built with Ink and React, zero-knowledge client-side E2E encryption using AES-256-GCM, and seamless cloud synchronization with Supabase.


🚀 Installation

Install the package globally via npm:

npm install -g taskair-cli

🪐 Setup & Configuration

Before managing your tasks, you need to configure the CLI to point to your TaskAir Web server and authenticate.

1. Configure & Authenticate

Run the configuration command and follow the prompt to open the browser for authentication:

taskair config

After running the command, a web browser window will open automatically. Complete your sign-in or enter your Master Password on the website to link your CLI terminal. The API URL is automatically preconfigured to point to our production endpoint (https://api-taskair.vercel.app).

2. Verify Session

You can check your configuration and login status at any time:

taskair whoami

⌨️ Command Reference

TaskAir CLI provides a complete set of commands to manage, filter, analyze, and sync your tasks.

1. Add a Task

Create a new task with options for priority, due date, and tags.

taskair add "Launch satellite orbit phase 1" --priority high --tags "space,work" --due "2026-07-01"
  • Alias: -a
  • Options:
    • -p, --priority <level>: Priority level (high | medium | low, default: medium).
    • -d, --due <datetime>: Due date in ISO 8601 or YYYY-MM-DD format.
    • -t, --tags <tags>: Comma-separated list of tags.

2. List Tasks

View your tasks in a table or list format with optional status and priority filtering.

# List all pending high priority tasks
taskair list --status pending --priority high

# List tasks in JSON format for scripting/exporting
taskair list --format json
  • Alias: -l
  • Options:
    • -s, --status <status>: Filter by status (pending | in_progress | completed | all, default: all).
    • -p, --priority <priority>: Filter by priority (high | medium | low | all, default: all).
    • -t, --tags <tags>: Filter by comma-separated tags.
    • -f, --format <format>: Output format (table | compact | json, default: table).

3. Mark a Task as Completed

Complete a task and optionally add a completion note.

taskair done <task-id-prefix> --note "Orbit established successfully."
  • Alias: -d
  • Options:
    • -n, --note <note>: Optional completion note.

4. Edit a Task

Modify any field of an existing task using its ID.

taskair edit <task-id-prefix> --priority high --tags "milestone,space"
  • Alias: -e
  • Options:
    • --description <text>: Set a new description.
    • --priority <level>: Change priority (high | medium | low).
    • --status <status>: Update status (pending | in_progress | completed).
    • --due <datetime>: Set or update due date.
    • --tags <tags>: Overwrite tags with a comma-separated list.
    • --note <note>: Add/update completion note.

5. Delete a Task

Remove a task from your database. By default, this will ask for confirmation unless the --force flag is passed.

taskair remove <task-id-prefix> --force
  • Alias: -r
  • Options:
    • --force: Skip confirmation prompt.

6. Synchronize with Cloud

Push local offline changes and pull updates from your Supabase cloud database.

taskair sync --password <your-master-password>
  • Options:
    • --password <password>: The master password to encrypt/decrypt task bundles.
    • --dry-run: View what would be synced without modifying local or remote data.

7. View Analytics & Stats

See task counts, priority breakdowns, and completion rate progress bars directly in your terminal:

taskair stats

8. Export Tasks

Export your entire task database to JSON, CSV, or Markdown format.

taskair export --format csv --output ./tasks_backup.csv
  • Options:
    • -f, --format <format>: Export format (json | csv | markdown, default: json).
    • -o, --output <file>: Target file path. If omitted, outputs to stdout.

9. Log Out

End your session and clear local access tokens:

taskair logout

🔒 Security Architecture

TaskAir is built on zero-knowledge architecture:

  1. Local Storage: Tasks are stored locally on your machine.
  2. Client-side Encryption: During sync, your tasks are serialized into a JSON bundle, encrypted using AES-256-GCM with a key derived from your Master Password via PBKDF2.
  3. Encrypted Sync: The encrypted ciphertext along with a SHA-256 checksum is uploaded to the Supabase Cloud.
  4. Zero Server Knowledge: Neither Supabase nor the web application server ever holds your master password or the encryption key. Your data remains completely private and secure.

📄 License

This project is licensed under the MIT License.