Skip to content
OpenWaggle

Packages

OpenWaggle publishable packages for extension authors, Waggle policy, and Pi Waggle integration.

OpenWaggle maintains publishable npm packages for extension authors and Waggle runtime integrations.

These packages are separate from the OpenWaggle desktop app. Use them when you are building an OpenWaggle extension package, reusing Waggle mode policy outside the app, or installing Waggle mode in a Pi runtime.

Available Packages

PackageUse it for
@openwaggle/extension-sdkBrowser-safe extension types, broker helpers, theme helpers, UI class/style helpers, and federated-module mount context types.
@openwaggle/extension-reactOptional React primitives for extension surfaces that want host-aligned controls and layout pieces.
@openwaggle/waggle-coreRuntime-neutral Waggle config, presets, prompts, state, consensus, and turn policy.
@openwaggle/pi-wagglePi-native Waggle extension package built on top of @openwaggle/waggle-core.

Install

Install only the packages your project needs:

pnpm add @openwaggle/extension-sdk
pnpm add @openwaggle/extension-react @openwaggle/extension-sdk react react-dom
pnpm add @openwaggle/waggle-core
pnpm add @openwaggle/pi-waggle @earendil-works/pi-coding-agent @earendil-works/pi-tui

The packages are public under the @openwaggle npm organization. Package guides and API references are versioned by major.minor; the unversioned links above always open the latest documentation line.

How The Packages Fit Together

Framework-neutral extension ──> @openwaggle/extension-sdk
React extension ───────────────> @openwaggle/extension-react ──> @openwaggle/extension-sdk

Any Waggle host ───────────────> @openwaggle/waggle-core
Pi runtime ────────────────────> @openwaggle/pi-waggle ─────────> @openwaggle/waggle-core

The arrows mean “uses.” Extension packages and Waggle packages solve separate problems; install both only when your project needs both capabilities.

Import Boundaries

Consumers should import only documented package entry points and package subpaths. Do not import from src, dist, dist-cjs, or an arbitrary OpenWaggle checkout path.

import type { OpenWaggleFederatedModule } from '@openwaggle/extension-sdk'
import { Panel } from '@openwaggle/extension-react'
import { getWaggleTurn } from '@openwaggle/waggle-core'
import piWaggle from '@openwaggle/pi-waggle/extension'

OpenWaggle packages publish built ESM, CommonJS, and TypeScript declarations behind their package.json export boundaries.

Which Package Should I Use?

Use @openwaggle/extension-sdk for any OpenWaggle visual extension. It is the browser-safe author contract for mount(context), theme data, brokered capability calls, manifest types, UI helper classes, and stylesheet helpers.

Use @openwaggle/extension-react only when your extension surface is written in React and you want the provided primitive components. React and React DOM remain peer dependencies in the extension project.

Use @openwaggle/waggle-core when you need reusable Waggle policy without Pi-specific runtime hooks.

Use @openwaggle/pi-waggle when you are installing Waggle mode into Pi. It depends on @openwaggle/waggle-core, so Pi users do not need to install core separately unless they also import core APIs directly.