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

tapkit

v0.1.1

Published

Control iPhones from the terminal

Readme

TapKit CLI

Control iPhones from the terminal. Built for AI agents and developers.

tapkit tap 200 400
tapkit screenshot --open
tapkit open "Twitter"
tapkit swipe up

TapKit CLI lets you interact with real iPhones through simple shell commands. It's designed as the primary interface for AI agents (Claude Code, Codex, OpenClaw, Cursor) to control iOS devices, and works great for developers who want quick, scriptable phone control.

Install

npm install -g tapkit

Requires Node.js 18+.

Quick Start

# 1. Authenticate
tapkit auth login

# 2. Check your setup
tapkit status

# 3. See connected phones
tapkit phones

# 4. Set your active phone (only needed with multiple phones)
tapkit phone set "iPhone 15 Pro"

# 5. Take a screenshot
tapkit screenshot --open

# 6. Tap, swipe, type
tapkit tap 200 400
tapkit swipe up
tapkit type "Hello from TapKit!"

Prerequisites

Commands

Auth & Setup

| Command | Description | |---------|-------------| | tapkit auth login | Authenticate with API key | | tapkit auth status | Show current auth state | | tapkit auth token | Generate session token for CI | | tapkit status | Check auth, Mac app, and phone connection |

Phone Session

Set your phone once — every command after uses it automatically.

| Command | Description | |---------|-------------| | tapkit phones | List all connected phones | | tapkit phone set <name> | Set active phone (persists) | | tapkit phone | Show current active phone | | tapkit phone clear | Unset active phone |

Gestures & Input

| Command | Description | |---------|-------------| | tapkit tap <x> <y> | Tap at coordinates | | tapkit double-tap <x> <y> | Double tap | | tapkit hold <x> <y> | Long press | | tapkit swipe <direction> | Swipe up/down/left/right | | tapkit drag <x1> <y1> <x2> <y2> | Drag between points | | tapkit type <text> | Type into focused field | | tapkit escape | Dismiss keyboard/alert |

Device Control

| Command | Description | |---------|-------------| | tapkit home | Press home button | | tapkit open <app> | Open app by name | | tapkit spotlight [query] | Open Spotlight search | | tapkit lock / unlock | Lock or unlock device | | tapkit volume up / down | Volume control | | tapkit siri | Activate Siri | | tapkit shortcut <index> | Run iOS Shortcut |

Screenshots

| Command | Description | |---------|-------------| | tapkit screenshot | Save screenshot to file | | tapkit screenshot --open | Save and open in Preview | | tapkit screenshot --base64 | Output base64 to stdout | | tapkit screenshot --llm | LLM-optimized (1344px, JPEG) |

Skills

| Command | Description | |---------|-------------| | tapkit skills list | Show installed skills | | tapkit skills add <name> | Install a skill | | tapkit skills remove <name> | Remove a skill |

JSON Output

Every command supports --json for machine-readable output — designed for AI agents and scripts.

tapkit phones --json
# {"ok":true,"phones":[{"name":"iPhone 15 Pro","id":"A1B2C3","width":1179,"height":2556}]}

tapkit screenshot --base64 --json
# {"ok":true,"base64":"iVBOR...","mimeType":"image/png"}

Use with AI Agents

TapKit CLI works with any AI agent that has Bash access. Install TapKit skills to teach your agent how to navigate iOS apps:

# For Claude Code, Codex, Cursor, and 38+ other agents
npx skills add jootsing-research/tapkit-skills

# For OpenClaw
clawhub install tapkit

Skills teach agents two things:

  • App knowledge — what the app looks like (tab layout, buttons, navigation)
  • Task strategy — what to do (warmup playbooks, engagement patterns)

Configuration

Config is stored at ~/.tapkit/config.json:

{
  "apiKey": "tk_...",
  "phoneId": "A1B2C3D4-...",
  "phoneName": "iPhone 15 Pro"
}

Environment variables override config:

| Variable | Description | |----------|-------------| | TAPKIT_API_KEY | API key (tk_) or session token (ses_) | | TAPKIT_PHONE_ID | Default phone UUID | | TAPKIT_API_URL | Custom API endpoint |

License

MIT