Muxy

Extensions Overview

New here? Start with Get started.

An extension is a web project that adds to the desktop app: tabs, panels, popovers, a sidebar, top bar and status bar items, palette commands, shortcuts, background logic, and app languages. You build it with any web tooling and Muxy loads the build output.

Most extensions made for Muxy 1.x work unchanged. A few 1.x features are not available yet; see Coming from 1.x.

Where code runs

WhereWhat it isAPI
PagesTabs, panels, popovers, the sidebar, and modal web views. Native WebKit views that stay alive while hidden.window.muxy, async (Promises)
ScriptsA runScript command. Runs once in JavaScriptCore on its own thread.muxy, synchronous
BackgroundThe optional background script. Runs while the extension is enabled. Receives events.muxy, synchronous

Not every API exists everywhere. See the API reference.

File, Git, and exec work runs on the project's server, so it works the same for local and remote projects. Web requests run in the desktop app.

Pages

PageWhat's in it
Get startedBuild, load, and debug an extension
Manifestpackage.json fields
PermissionsPermissions and runtime prompts
API referenceEvery muxy namespace and where it is available
EventsWorkspace events and extension messages
TabsTab types, file openers, page data, and theme
PanelsPanels, popovers, and the sidebar
Bar itemsTop bar and status bar items
CommandsPalette commands, shortcuts, and scripts
DialogsDialogs, pickers, and modal web views
FilesReading and writing project files
GitRepository, branches, pull requests, and worktrees
LocalizationsLanguage packs
ContributingPublish to the marketplace

Where extensions live

Installed extensions live in the extensions/<name>/ folder of Muxy's profile folder. Each is the build output, with package.json at its root.

Manage them in Settings → Extensions: Installed lists them with their permissions, settings, and logs; Browse installs from the marketplace. Extensions start disabled after installing or loading.

Security

  • Declared permissions. Most API calls need a permission in the manifest. Web requests, dialogs, and events need none.
  • Runtime prompts. Running programs, typing into terminals, writing files or Git, web requests, and deleting projects ask the user first.
  • Declared events. An extension only receives the workspace events it lists in its manifest.
  • Own files only. Pages load only from the extension's own folder.
  • Verified installs. Marketplace packages are checked against their listing before they are installed.