The manifest
Everything Blipbar needs to know about your extension lives under the blipbar key
of its package.json. There’s no separate manifest file.
{ "name": "blipbar-stripe", "version": "1.0.0", "main": "dist/index.js", "blipbar": { "id": "dev.yourname.stripe", "title": "Stripe", "description": "Today's revenue, live.", "icon": "creditcard.fill", "author": "Your Name", "categories": ["Finance"], "interval": "30s", "triggers": { "webhook": false, "watch": [] }, "preferences": [], "permissions": { "network": ["api.stripe.com"], "files": [], "exec": [] } }}| Field | Required | Notes |
|---|---|---|
id |
yes | Reverse-DNS (^[a-z0-9-]+(\.[a-z0-9-]+)+$, case-insensitive: dev.yourname.stripe). Stable forever: it’s half of every blip’s id (<extensionId>/<key>) and the folder name under Extensions/. Changing it once people have installed your extension orphans their blips, settings and saved keys. |
title |
yes | Shown in Settings, in Edit Layout’s list and on the install sheet. |
description |
no | One or two sentences, shown in Settings, in Edit Layout’s list and on the install sheet. |
icon |
no | An SF Symbol name (creditcard.fill). Falls back to a default if omitted. Check the name exists in the SF Symbols app: an unrecognized name renders nothing. |
author |
no | Shown in Settings and on the install sheet. |
categories |
no | An array of strings. The first one groups your extension in Edit Layout’s list (under “Extensions” when there’s none). Match an existing category where one fits: Blipbar’s own extensions use Developer Tools, Finance, Sports, Productivity. |
interval |
no | How often the host runs update() on a timer: "30s", "5m", "1h", "1d". Minimum 10s: the host rejects anything faster at load. Omit it if you’re driven entirely by triggers.webhook/triggers.watch instead. |
triggers.webhook |
no | true if this extension should receive POST /v1/hooks/<id> bodies as onEvent calls (Webhooks and held responses). |
triggers.watch |
no | Paths whose changes deliver an onEvent {type: "file"} call. Every path here must also appear in permissions.files. |
preferences |
no | See Preferences. |
permissions |
no | See Permissions. Omitted arrays default to empty: no network through fetch, no files, no ctx.exec. |
oauth |
no | Services the app signs in to for you, so there’s no key to paste and no sign-in code to write: see Sign-in, run by the app. |
The host watches your extension’s whole folder (bundled or in
~/Library/Application Support/Blipbar/Extensions/<id>, which can be a real folder
or, as blipkit dev sets up, a symlink to your working copy) and reloads it on any
change. That’s the entire hot-reload mechanism, with no separate watch config.