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

buildr-bb-app

v0.46.1-buildr.g6b3fa9d0f

Published

bb app launcher for npx

Downloads

1,809

Readme

bb

npm version

bb is an agentic IDE that builds itself. It can control, customize, and automate itself, laying the groundwork for your own software factory.

This package provides the npx bb-app launcher, bundled bb CLI entry, and Node SDK export. Every surface — the web app, CLI, and HTTP API — is a first-class way to drive bb. Work runs in threads you can follow live, steer at any point, or hand off to another agent.

Note: bb is in active development. Workflows and surfaces are still evolving.

Quick Start

bb runs from npm and orchestrates coding agents you already have installed.

Prerequisites

  • Node.js 22.19, 24, or 26.
  • Git.
  • At least one supported agent provider: Claude Code, Codex, Cursor via ACP, Pi, or another ACP-compatible agent.

If you already use one of these providers, bb will pick up your existing credentials. If you use multiple providers, you can mix and match per task.

Supported host environments

  • macOS
  • Linux

Run all bb commands inside WSL2, install Node.js, Git, and your provider CLIs inside that WSL2 distro, and use Linux-style paths such as /home/me/repo or /mnt/c/Users/me/repo.

Inside WSL2, use Linux paths rather than drive-letter or UNC paths. Repos inside the WSL filesystem are recommended; /mnt/c/... is intentionally supported so you can keep an existing Windows checkout, but it is slower and less reliable for file watching.

Install and run

npx bb-app@latest

Then open: http://localhost:38886

To opt into the automated nightly channel:

npx bb-app@nightly

Nightly versions are built from main and may be unstable. The nightly dist-tag moves independently of the stable latest tag.

npm 12 and later block dependency install scripts by default. bb needs those scripts to build its native add-ons (better-sqlite3, node-pty, @parcel/watcher). Without them bb stops at startup with Could not locate the bindings file. If your npm version is 12 or later, allow the scripts for the install:

npx --allow-scripts=better-sqlite3,node-pty,@parcel/watcher bb-app@latest

Or set the policy once for all global installs:

npm config set allow-scripts=better-sqlite3,node-pty,@parcel/watcher --location=user

npx bb-app@latest downloads the published bb-app package, starts the server and local host daemon, and serves the web app. It stores bb-managed state under ~/.bb/ by default. If either managed child process exits unexpectedly, the launcher restarts that child without stopping the other one. Press Ctrl+C in the terminal to stop both processes and exit with status 0.

If another live bb owns the runtime record for the same data directory and a healthy server answers on the configured local address, startup exits with status 1 without starting either child process. The existing instance keeps running. A runtime record without a healthy server does not prevent startup.

Server and host-daemon output goes directly to logs/server-stdio.log and logs/host-daemon-stdio.log under the data directory, including startup errors and console output. These files append across restarts; they are separate from the rotating application logs. The launcher prints status and log locations without forwarding service output to the terminal, so a stalled terminal cannot block service logging. To follow output with the default data directory:

tail -F ~/.bb/logs/server-stdio.log ~/.bb/logs/host-daemon-stdio.log

Launcher status output is plain when stdout is redirected, including in CI. Set FORCE_COLOR=1 to request color or NO_COLOR=1 to disable it; NO_COLOR takes precedence. In-place progress updates require a stdout TTY.

The same output capture applies to bb-server and bb-host-daemon.

To stop a bb that runs in another terminal or in the background:

npx bb-app stop

stop reads bb-app-runtime.json from the data directory, confirms that the recorded process really is that launcher, then stops it. Pass --data-dir when the bb you want to stop does not use the default ~/.bb/.

The bb command

To control bb from outside bb, open Settings → General → Command line and choose Install next to bb CLI. Threads in bb already have bb; this is for your own terminals, scripts, and agents running outside bb, such as Claude Code or Codex. bb links a launcher from ~/.bb/bin/bb into a folder on your PATH (~/.local/bin on Linux; /opt/homebrew/bin, /usr/local/bin, or ~/.local/bin on macOS). On Windows it adds ~/.bb/bin to your user PATH; open a new terminal afterwards. Remove takes it off again. bb leaves any other bb you already have in place.

From a terminal, before bb is on your PATH:

npx --package bb-app bb settings cli-command install

Updating from the app

When bb has an update, Settings → Updates shows an Update button (or run bb updates app apply). bb downloads the new version into ~/.bb/app-versions/, restarts into it, and reconnects the page. bb does not roll back: if the new version fails to start, run a newer release (npx bb-app@latest) or fix the cause. Later npx bb-app runs use the newer installed version; pass --bundled to run the copy npx downloaded instead. Start bb with --no-in-app-updates to turn in-app updates off.

After the server moves to another machine, the old data directory keeps server-moved.json. bb-app there starts no server: it runs this computer's host daemon against the new server address in config.json, restarting it when it exits, and answers the old server port. API requests get 410 server_moved with the new address; browser pages redirect to it for a direct address or link to it for bb connect. While a move back to this computer is in progress (server-import.json), it frees that port for the incoming server. When server-moved.json goes away, after that move completes or bb server unlock, it starts the server and co-located daemon again. bb-server exits with status 3 instead of starting, except for the incoming server of a move back.

From the app, add or open a project, start a thread, and choose the provider you want that thread to use.

CLI

The package also exposes the bb CLI for an already-running bb server:

npx --package bb-app bb --help

The CLI uses the same BB_SERVER_URL and bb config resolution as the SDK. When unset, it targets the default local packaged server at http://127.0.0.1:38886.

Scripting with the SDK

The package also exposes a Node SDK for scripts that drive an already-running bb server:

import { BBSdk } from "bb-app";

const bb = new BBSdk();
const thread = await bb.threads.spawn({
  projectId: "proj_personal",
  environment: { type: "host", workspace: { type: "personal" } },
  prompt: "Summarize my active bb work.",
});
await bb.threads.wait({ threadId: String(thread.id), status: "idle" });
console.log(await bb.threads.output({ threadId: String(thread.id) }));

new BBSdk() uses the same BB_SERVER_URL and bb config resolution as the CLI. Pass new BBSdk({ baseUrl: "http://host:38886" }) for remote or test targets (see the remote-access note below). Scripts launched by bb already receive BB_SERVER_URL and BB_THREAD_ID in their environment.

Provider Credentials

bb uses whichever providers you have configured. Common providers:

| Provider | Setup | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | codex | Install the Codex CLI. Then run codex login or configure credentials per the Codex docs. | | claude-code | Install Claude Code and authenticate per its docs. | | cursor | Install Cursor's agent CLI (cursor-agent) and authenticate per Cursor's docs. | | pi | Install Pi with npm install -g @earendil-works/pi-coding-agent (0.84.0 or newer) and authenticate per its docs; BB can run the install from Settings. | | opencode | Install opencode and authenticate per its docs. | | grok | Install Grok Build and authenticate with grok login or XAI_API_KEY. | | hermes-agent | Install Hermes Agent, configure credentials with hermes model, then verify ACP with hermes acp --check. |

BB indexes the documented native skill roots for Codex, Claude Code, Pi, Cursor, OpenCode, omp, Grok Build, and Hermes Agent. It includes user roots, project roots, and compatibility roots such as .agents/skills. These skills appear in the selected provider's / command menu. The Skills page and bb skill list show native skills for Claude Code, Codex, and Cursor. BB also reads configured Pi, omp, Grok, and Hermes skill directories, plus enabled provider plugin skills.

BB reads Pi's global ~/.pi/agent files and each workspace's .pi files. This includes settings, credentials, models, packages, extensions, skills, prompts, themes, and context files. Pi extensions can add models and tools. BB loads project resources only after Pi's saved or global trust policy approves the workspace. An unresolved ask decision stays untrusted because BB has no Pi trust prompt. You can still use the Pi CLI and /login to create this configuration.

Custom ACP agents are configured through the ACP providers plugin's customAgents setting: bb plugin config provider-acp set customAgents '[...]'. See the configuration docs for the optional modelCli and reasoningCli or nativeReasoning reasoning settings. The optional nativeSkillRoots field adds provider-native skills to the composer. Its user paths resolve from the target host home directory. Its project paths resolve from the selected workspace. Top-level sharedSkillRoots uses the same user and project path format. BB lists these sources as read-only skills. BB injects them into Codex, Claude, Pi, and ACP threads. This permits one physical skill collection for BB and a standalone provider CLI.

Configuration

Use bb-app config for persistent non-secret package settings under ~/.bb/config.json:

npx bb-app config set BB_APP_URL https://<machine>.<tailnet>.ts.net
npx bb-app config list
npx bb-app config refresh

For remote access, use bb connect or publish the default loopback listener with Tailscale Serve. Direct tailnet or LAN access to port 38886 requires the explicit, security-sensitive --server-bind-host 0.0.0.0 compatibility option; see the multiple-devices guide.

Use bb-app client ssh-target to configure local editor opens for remote bb servers under ~/.bb/client.json. The target is the value that works after ssh, such as devbox or user@devbox:

npx bb-app client ssh-target set https://bb.example.test devbox --host-id host_abc
npx bb-app client ssh-target list

Use bb-app env for provider credentials under ~/.bb/env.json:

npx bb-app env set OPENAI_API_KEY <key>
npx bb-app env list
npx bb-app env unset OPENAI_API_KEY

env list redacts all values. Config and env writes ask a running local bb server to reload; if bb is stopped, the values apply on the next start.

For all config keys, precedence, startup flags, and source-development .env behavior, see the configuration docs.

Further Reading