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

@redspace/kingfisher-launcher

v0.1.0

Published

Launch and sideload apps on Comcast Xfinity X1 devices registered in IBIS — an unofficial open-source CLI that opens a local web UI for device selection, app launching, and screen preview.

Readme

Kingfisher Launcher

CI License: MIT

An unofficial, open-source utility client designed to facilitate application launching and syndication protocol testing on Comcast devices.

What it does

Kingfisher Launcher lets you launch apps onto Comcast set-top boxes and streaming devices that are already paired in IBIS for your organization. Select a device, enter a URL and App ID, and launch - all from your browser.

Features

  • Organization management - Add, edit, delete, and switch between multiple Kingfisher organizations. Each org stores its own API key and server URL.
  • Device picker - Browse and search devices in your organization, view labels and features.
  • Launch apps - Launch a URL + App ID combination on any device with a single click. The tool handles device locking and reservation automatically.
  • Saved targets - Save named URL/App ID presets per organization for quick re-launching.
  • Screen preview - Capture and view the device's screen (left panel).
  • Remote control - Send key presses with a virtual remote (right panel).
  • Device details - Hover over the device icon to inspect full device metadata (MAC addresses, serial numbers, status, model info, etc.).
  • Import/Export - Export orgs with their presets to JSON, or import them on another machine.

https://github.com/user-attachments/assets/265499f5-ddcb-495d-a218-682dfe991f0a

Prerequisites

  • A Kingfisher API key - required to connect to your organization's devices. Obtain one from your IBIS administrator.
  • Node.js >= 18 (for running the CLI).
  • pnpm (for development)

Quick start

# Install globally (or use npx)
npm install -g @redspace/kingfisher-launcher

# Run it
kingfisher-launcher

Or run directly without installing:

npx @redspace/kingfisher-launcher

This starts a local server and opens the UI in your browser. Add an organization with your Kingfisher API key and server URL to get started.

Configuration

The Kingfisher API endpoint is configured per organization in the UI - add or edit an organization to set its Server URL. The API key is also stored per organization and never sent to any server other than the configured Kingfisher API endpoint.

Security considerations

API keys are long-lived static credentials, stored in browser localStorage on the launcher's fixed 127.0.0.1 origin. Anything that can run JavaScript on that origin can read them.

With that in mind:

  • Remove organizations from the UI when you no longer need them - this deletes the stored key.
  • Rotate keys if a machine or browser profile may have been compromised.

To report a vulnerability, see SECURITY.md.

Development

# Install dependencies
pnpm install

# Start the dev server (Vite HMR for the React app)
pnpm dev

# Build everything
pnpm build

Testing

# Run all tests (both packages)
pnpm test

# Run a single package's tests
pnpm --filter @redspace/kingfisher-launcher-app test
pnpm --filter @redspace/kingfisher-launcher test

# Watch mode / coverage (per package)
pnpm --filter @redspace/kingfisher-launcher-app test:watch
pnpm --filter @redspace/kingfisher-launcher-app test:coverage

Releasing

Version numbers live in three places (root, packages/cli, packages/app) and should always move together. Bump all three at once with:

pnpm bump <version>   # e.g. pnpm bump 0.2.0

To publish @redspace/kingfisher-launcher to npm:

  1. Run pnpm bump <version>, commit the change, and push to main.
  2. Create a GitHub Release with a matching tag (e.g. v0.2.0). Publishing the release triggers the Publish to npm workflow, which builds the app and publishes packages/cli. Mark the release as a pre-release to publish under the next dist-tag instead of latest.
  3. Alternatively, run the workflow manually from the Actions tab ("Publish to npm" → Run workflow) without creating a release.

Project structure

kingfisher-launcher/
├── packages/
│   ├── cli/          # Published npm package - CLI + Express server
│   └── app/          # React app (Vite build, embedded into CLI)
├── CLAUDE.md         # Context for AI-assisted development
└── README.md

Contributing

See CONTRIBUTING.md.

License

MIT


Legal Disclaimer: This project is an independent, open-source community utility. It is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Comcast Corporation, or any of its subsidiaries or its affiliates. The official Comcast website can be found at https://comcast.com.