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

unhappy-cli

v0.14.15

Published

Mobile and Web client for Claude Code and Codex

Readme

Unhappy

Code on the go — control AI coding agents from your mobile device.

Free. Open source. Code anywhere.

Installation

npm install -g unhappy-cli

Usage

Claude (default)

unhappy

This will:

  1. Start a Claude Code session
  2. Display a QR code to connect from your mobile device
  3. Allow real-time session sharing between Claude Code and your mobile app

Gemini

unhappy gemini

Start a Gemini CLI session with remote control capabilities.

First time setup:

# Authenticate with Google
unhappy connect gemini

Commands

Main Commands

  • unhappy – Start Claude Code session (default)
  • unhappy gemini – Start Gemini CLI session
  • unhappy codex – Start Codex mode

Utility Commands

  • unhappy auth – Manage authentication
  • unhappy connect – Store AI vendor API keys in Unhappy cloud
  • unhappy notify – Send a push notification to your devices
  • unhappy daemon – Manage background service (start, stop, status, list, update)
  • unhappy doctor – System diagnostics & troubleshooting

Connect Subcommands

unhappy connect gemini     # Authenticate with Google for Gemini
unhappy connect claude     # Authenticate with Anthropic
unhappy connect codex      # Authenticate with OpenAI
unhappy connect status     # Show connection status for all vendors

Gemini Subcommands

unhappy gemini                      # Start Gemini session
unhappy gemini model set <model>    # Set default model
unhappy gemini model get            # Show current model
unhappy gemini project set <id>     # Set Google Cloud Project ID (for Workspace accounts)
unhappy gemini project get          # Show current Google Cloud Project ID

Available models: gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite

Options

Claude Options

  • -m, --model <model> - Claude model to use (default: sonnet)
  • -p, --permission-mode <mode> - Permission mode: auto, default, or plan
  • --claude-env KEY=VALUE - Set environment variable for Claude Code
  • --claude-arg ARG - Pass additional argument to Claude CLI

Global Options

  • -h, --help - Show help
  • -v, --version - Show version

Environment Variables

Unhappy Configuration

  • UNHAPPY_SERVER_URL - Custom server URL (default: https://api.unhappy.im)
  • UNHAPPY_WEBAPP_URL - Custom web app URL (default: https://app.unhappy.im)
  • UNHAPPY_HOME_DIR - Custom home directory for Unhappy data (default: ~/.unhappy)
  • UNHAPPY_DISABLE_CAFFEINATE - Disable macOS sleep prevention (set to true, 1, or yes)
  • UNHAPPY_EXPERIMENTAL - Enable experimental features (set to true, 1, or yes)

Gemini Configuration

  • GEMINI_MODEL - Override default Gemini model
  • GOOGLE_CLOUD_PROJECT - Google Cloud Project ID (required for Workspace accounts)

Gemini Authentication

Personal Google Account

Personal Gmail accounts work out of the box:

unhappy connect gemini
unhappy gemini

Google Workspace Account

Google Workspace (organization) accounts require a Google Cloud Project:

  1. Create a project in Google Cloud Console
  2. Enable the Gemini API
  3. Set the project ID:
unhappy gemini project set your-project-id

Or use environment variable:

GOOGLE_CLOUD_PROJECT=your-project-id unhappy gemini

Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca

Contributing

Interested in contributing? See CONTRIBUTING.md for development setup and guidelines.

Requirements

  • Node.js >= 20.0.0

For Claude

  • Claude CLI installed & logged in (claude command available in PATH)

For Gemini

  • Gemini CLI installed (npm install -g @google/gemini-cli)
  • Google account authenticated via unhappy connect gemini

License

MIT