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

appbun

v0.5.4

Published

Turn any webpage into a desktop app with one command using Electrobun.

Readme

appbun

English | 한국어

npm version npm downloads CI Last commit Closed issues License

Turn any webpage into a desktop app with one command. appbun wraps a URL in an Electrobun project, pulls usable icons from site metadata, and gives you installer-friendly packaging for macOS with a clean path to Windows and Linux builds.

Supports macOS, Windows, and Linux.

appbun social card

Why appbun

appbun exists for the same reason people reach for Pake: the fast URL -> desktop app workflow is useful.

The difference is the output.

Instead of hiding everything behind a black box, appbun gives you a normal Electrobun project you can inspect, edit, version, and ship.

What it handles for you:

  • fetches title, description, theme color, favicon, apple-touch icon, and manifest icons
  • rejects obviously broken icon responses and low-quality raster assets before packaging
  • generates a local Electrobun shell around the target URL
  • lets you choose between common macOS window chrome presets instead of hard-coding one look
  • produces cross-platform build output, plus a macOS DMG flow for drag-to-Applications installs
  • asks before destructive or heavyweight steps in interactive terminals, with --yes to skip prompts

Install

bun add -g appbun
npm install -g appbun

If your npm global prefix is permission-locked, prefer bun add -g appbun or use npx appbun@latest ....

appbun prefers Bun when Bun is installed locally. If it is not available, appbun falls back to npm automatically unless you force --package-manager.

Quick start

appbun https://chat.openai.com --name "ChatGPT" --dmg

That one command can scaffold the project, install dependencies, build the app, create a DMG on macOS, and open the installer window.

If you want the generated project without building immediately:

appbun https://linear.app --name "Linear Desktop"
cd linear-desktop
bun install
bun run build

Need a tighter macOS chrome right away:

appbun https://chat.openai.com --name "ChatGPT" --titlebar compact --dmg

CLI examples

appbun https://github.com --name "GitHub"
appbun create https://calendar.google.com \
  --name "Calendar" \
  --out-dir ./calendar-app \
  --width 1600 \
  --height 1000
appbun https://chat.openai.com --theme-color '#10a37f'
appbun https://www.notion.so --package-manager npm
appbun https://github.com --name "GitHub" --titlebar system

Skip confirmation prompts in scripted runs:

appbun https://github.com --name "GitHub" --out-dir ./github --yes

If you are building a web app and want a coding agent to turn it into a desktop app for you, copy the prompt from:

If you want appbun to prefill that prompt for a specific local URL, use:

appbun prompt http://localhost:3000 --name "My App"

That outputs a ready-to-paste instruction block telling the agent to package the current web app into ./desktop/my-app with appbun@latest, then build it.

Window chrome presets

appbun now exposes the generated macOS title area as a user choice instead of locking every app to one look.

| Preset | Best for | macOS behavior | | --- | --- | --- | | system | strict native window chrome | default system title bar, no local shell header | | unified | default, balanced desktop wrapper | hidden inset traffic lights with a connected local toolbar | | compact | content-heavy apps | same pattern, but shorter and tighter | | minimal | distraction-free wrappers | same pattern, but lighter metadata and less visible chrome |

On Windows and Linux, generated apps fall back to the standard native title bar.

To inspect every option quickly:

appbun create --help

Troubleshooting

Bun is not installed

If Bun is not installed on the machine running appbun, the CLI now falls back to npm automatically for generated projects and install/build flows. You can still force one side explicitly with:

appbun https://example.com --package-manager npm

macOS app does not open the first time

Some local Electrobun macOS builds can trigger a one-time launcher permission prompt. If the installed app does not open from Finder or the Dock on first launch:

  1. Open the Applications folder.
  2. Right-click the app and choose Open once.
  3. If macOS shows a launcher prompt, allow it.

After the first successful launch, the app should behave normally.

Showcase

Public no-login web apps captured with Playwright and framed to match the generated shell:

appbun showcase

Example targets

| App | URL | Command | | --- | --- | --- | | GitHub | https://github.com | appbun https://github.com --name "GitHub" --dmg | | YouTube | https://www.youtube.com | appbun https://www.youtube.com --name "YouTube" --dmg | | YouTube Music | https://music.youtube.com | appbun https://music.youtube.com --name "YouTube Music" --dmg | | Excalidraw | https://excalidraw.com | appbun https://excalidraw.com --name "Excalidraw" --dmg | | Photopea | https://www.photopea.com | appbun https://www.photopea.com --name "Photopea" --dmg | | Google Maps | https://www.google.com/maps | appbun https://www.google.com/maps --name "Google Maps" --dmg | | Google Translate | https://translate.google.com | appbun https://translate.google.com --name "Google Translate" --dmg | | Squoosh | https://squoosh.app | appbun https://squoosh.app --name "Squoosh" --dmg | | Desmos | https://www.desmos.com/calculator | appbun https://www.desmos.com/calculator --name "Desmos" --dmg |

More detail lives in docs/showcase/README.md.

Generated project structure

my-app/
├── assets/                 # Derived icon assets for packaging
├── icon.iconset/           # macOS iconset sizes (16 through 1024)
├── scripts/
│   └── create-dmg.mjs      # macOS DMG helper
├── src/
│   ├── bun/
│   │   └── index.ts        # Electrobun window entrypoint
│   └── mainview/
│       ├── index.html      # Local shell markup
│       ├── index.css       # Unified title area styles
│       └── index.ts        # Embedded remote webview bootstrap
├── electrobun.config.ts
├── package.json
└── tsconfig.json

Platform notes

macOS

Generated apps can use:

  • the default system title bar with --titlebar system
  • hiddenInset traffic lights with --titlebar unified, compact, or minimal
  • UnifiedTitleAndToolbar plus FullSizeContentView for the connected presets
  • a local title area sized to match the selected preset instead of one fixed fake header
  • build:dmg for installer-style distribution

Windows and Linux

The generated Electrobun project is already buildable there. appbun keeps the standard native title bar on those platforms today and focuses its installer automation on macOS first; Windows and Linux packaging helpers are still on the roadmap.

Local development

bun install
bun run check
bun run test
bun run build

Refresh showcase assets

bunx playwright install chromium
bun run showcase:capture

This updates:

  • docs/screenshots/*.png
  • docs/assets/social-card.png
  • docs/showcase/manifest.json

Release checks

bun run release:check

Contributing

The contribution bar is straightforward: improve the generated app quality, packaging flow, or docs, and prove it with a reproducible test or sample scaffold.

Start here:

High-value contribution areas:

  • better site-specific icon heuristics
  • Windows installer helpers
  • Linux packaging helpers
  • auth-heavy web app presets
  • navigation controls and app menus
  • docs, gallery, and compatibility notes

Positioning

If you are searching for any of these, this project is in the right lane:

  • Pake alternative for Electrobun
  • turn website into desktop app with Bun
  • website to desktop app CLI
  • package URL as a macOS app
  • create DMG from a web app wrapper
  • Electrobun app generator
  • website wrapper for macOS, Windows, and Linux

License

MIT