Plugin Studio owns local source import, interactive previews, simulator sessions and developer tools. The consumer PexarBolt app installs and runs finished plugins.
Choose Open source folder for a complete source package, or Import plugin for a .boltplugin archive. Studio keeps an isolated installed snapshot. Your original source is not overwritten. Use Continue Vibe editing to make or reopen an editable draft of an installed plugin.
.boltplugin
A package contains plugin.json, host code, schemas, device.projection.json, fixtures and declared assets. Exclude node_modules, symlinks and oversized build files. Compile TypeScript and bundle dependencies into browser ESM first; imports never run npm/build commands.
plugin.json
device.projection.json
node_modules
Open a plugin's Preview & test to inspect its interactive Dock preview. Pause, resume or reload it as needed. Preview services use fixture data; files, HTTP, HID, music and Dock state are simulated. A passing check validates the tested package and interactions, not physical hardware.
Draft previews retain checked revisions. If a later edit fails, correct its diagnostic or restore a known working version. See AI creation.
Select Native simulator in Preview & test. The macOS installer includes the simulator. Source & simulator displays the source folder, plugin information, status, reload and logs; selecting firmware sources or building a simulator is a maintainer release workflow, not an App setup step. Native Windows SDL builds are currently unsupported.
An enabled, authorized host plugin uses a live session with its real configuration and permissions. Disabled, faulted and native-execution plugins use a fixture session. Reload reads source into a fresh isolated snapshot. Simulator input shares the runtime event queue; stale sessions cannot keep sending actions after stop or revocation.
Enabling makes a plugin available. Its runtime starts when the Dock or a live simulator opens it and stops after 60 seconds hidden, unless another view keeps it visible. Keep resumable state in ctx.store and pause hidden work with ctx.view.
ctx.store
ctx.view
Studio waits for an explicit connection. Release the Dock from the consumer app and choose Connect Dock. Studio preselects a recognized available Dock port and preserves a valid manual selection; unrelated serial devices are not selected automatically. Configure the plugin and review its permissions before enabling, installing and opening it. Select Disconnect Dock when returning to the consumer app.
Check each real integration, cancellation, disconnect/reconnect and extended operation. Follow hardware verification. A fixture preview cannot establish USB throughput, HID behavior or live service support.
Choose More options → Export plugin to save a .boltplugin. The export includes validated package files and declared assets. It excludes configuration, secrets, grants and private plugin data.
Import the archive through PexarBolt → Plugins → Add Existing Plugin. Review configuration and permissions there; Studio and PexarBolt do not share installed plugin state. Source-directory import, preview, simulator, authoring MCP and package export remain in Studio.
For website publication, upload a .boltplugin that includes original source for review. See distribution.
Studio uses a separate application profile. Existing consumer installations keep their data and continue to run. Developer workspace migration copies drafts, versions and attachments; service credentials and consumer grants are not transferred. Source maintainers can use the migration tool documented in the pexarbolt-plugin-studio repository.
pexarbolt-plugin-studio
Closing Studio hides it to the tray and keeps developer sessions and enabled services alive. Quit PexarBolt Plugin Studio stops them. A graphical desktop session is required for Electron windows; an SSH login alone may not have a WindowServer session on macOS.
Plugin code runs in a separate sandboxed Electron renderer. The main process validates SDK requests and cleans up after startup failure, crashes, process termination, normal exit and heartbeat timeout. Cleanup releases subscriptions, transport leases, image/video/frame producers, windows and temporary session data.
Installed packages, persistent configuration and grants survive ordinary runtime shutdown. Chromium shared caches do not promise an immediate RSS drop. Native image codecs and USB operations still run in the host process, so test long-running behavior on target hardware.
SDK limits, package formats and plugin runtime behavior are shared with the consumer app. Studio also provides the CLI/MCP authoring distributions; the firmware still defines device capabilities.
Add optional author to plugin.json using the actual author's display name (up to 80 characters, non-empty, without control characters). Studio displays this name in project cards and details. Existing packages without the field stay compatible and show an unspecified author. Package attribution is separate from the verified website publisher. Existing source-write CLI/MCP tools preserve this metadata; no runtime permission or new tool argument is required.
author
Open Source & simulator → Plugin information to edit Author, Short description, Description and Release notes. Generate draft fills empty fields from plugin declarations and keeps your existing text; review its suggestions before saving. Author is stored in plugin.json.author; listing.json stores summary, description and changelog. Source-bearing .boltplugin exports retain them, and website upload imports the text into an editable submission draft. The signed-in account remains the publisher; package attribution does not change ownership.
plugin.json.author
listing.json
summary
description
changelog
On a Projects card, choose View source to open Source & simulator → Source Tree. Browse directories, search files and inspect highlighted text, images and byte sizes from the installed package. This view is read-only; use Edit with AI or your editor to make changes. Private App configuration and credentials are excluded. Interactive sample previews remain usable when the same plugin starts on the real Dock, and their controls stay simulated. Native simulator renders 854×480 backing pixels at 100%, including Retina displays; its outer controls are separate from the device canvas.
Use Projection.pages and root-node page tags for Dock-local left/right/up/down swipes in both Host-connected and independent native plugins. Optional read-only pageChange reports {from,to,direction} to Host. Requires pages.swipe.v1 firmware. See local page navigation, the page-deck example and SDK types.
Projection.pages
page
pageChange
{from,to,direction}
pages.swipe.v1
page-deck