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

mobileclaude-agent

v0.1.4

Published

Desktop agent for MobileIDE — controls Claude Code from your iPhone via Supabase

Readme

MobileClaude Agent

Desktop agent for MobileIDE — control Claude Code from your iPhone via Supabase Realtime.

Requirements

Installation

npm install -g mobileclaude-agent

Or run locally from this directory:

npm install
npm run build

Setup

1. Apply Supabase Migrations

In your Supabase project → SQL Editor, run in order:

  1. ../supabase/migrations/001_initial_schema.sql
  2. ../supabase/migrations/002_realtime.sql

Also enable Realtime in Supabase Dashboard → Database → Replication for: prompts, results, agent_status, session_metas

2. Configure the Agent

mobileclaude-agent --setup

You'll be prompted for:

  • Supabase Project URL — from Project Settings → API
  • Supabase Anon Key — public key, safe to share
  • Supabase Service Role Key — secret key, stored with chmod 600
  • Your account email + password — for initial authentication

Config is saved to ~/.mobileclaude/config.json (chmod 600).

3. Start the Agent

mobileclaude-agent

The agent will:

  1. Connect to Supabase and restore your session
  2. Start watching ~/.claude/projects/ for Claude Code sessions
  3. Subscribe to new prompts from your iPhone
  4. Send heartbeats every 30s so the iOS app knows you're online

How It Works

iPhone (iOS App)
  → INSERT prompt into Supabase `prompts` table (status=pending)

Desktop Agent
  → Receives prompt via Supabase Realtime
  → Checks freemium quota (1 prompt/day free)
  → Spawns: claude --print --dangerously-skip-permissions --output-format stream-json
  → Streams output to `results` table every ~500 bytes
  → iOS app receives live updates via Realtime

On completion:
  → status=done, session_id saved back to prompts table
  → iOS can send follow-up prompts with --resume

Session Indexing

The agent watches ~/.claude/projects/**/*.jsonl and syncs all Claude Code sessions (including those started in the terminal) to Supabase. This makes them visible in the iOS app's session list — tap any session to continue it from your iPhone.

Freemium Model

  • Free tier: 1 prompt per day
  • Premium: Unlimited (set by iOS app after StoreKit purchase)

The freemium gate is enforced server-side via the check_and_increment_daily_usage PostgreSQL function, using the service role key. The iOS app cannot forge its own count.

Development

npm run dev         # Run with tsx (no build step)
npm run test:types  # TypeScript type check
npm test            # Run Jest unit tests
npm run build       # Compile to dist/

Autostart

The agent will prompt you to enable autostart during setup. This uses:

  • macOS: LaunchAgent plist (~/Library/LaunchAgents/)
  • Windows: Registry run key (via node-auto-launch)
  • Linux: XDG autostart entry (~/.config/autostart/)

System Tray

On desktop systems with a GUI, a system tray icon shows agent status. On headless servers, the agent runs without a tray (no error, just a log message).

Security Notes

  • The service role key bypasses Supabase RLS — keep it secret
  • ~/.mobileclaude/config.json is chmod 600 — only your user can read it
  • --dangerously-skip-permissions is required for unattended claude CLI execution
  • The freemium gate uses SECURITY DEFINER PostgreSQL function to prevent tampering