Jingle Developers

Introduction

Learn how Jingle Developers works across extension packages, runtime APIs, connected accounts, and agent tools.

Jingle Developers helps you build extensions for desktop workflows. Extensions can provide command views, connected accounts, menu bar surfaces, and agent-callable tools while Jingle owns runtime boundaries, user settings, and credential safety.

Reference visual for a command-style desktop extension
Extension experiences should keep search, results, details, and actions in one lightweight context so users stay inside their workflow.
Start from the extension experience, then move into APIs, connected accounts, and tool calls.

Core concepts

ConceptRoleStatus
Extension packageDistribution unit for manifest, runtime, main service, assets, and tool definitionsPreview
Runtime SDKReact components for lists, details, forms, action panels, menu bar surfaces, and feedbackPreview
Connected accountsHost-managed account connections, credential resolution, connection status, and settings handoffPreview
OAuth / PKCEPlatform-owned authorization, callback, token exchange, refresh, and revokePlanned
Agent toolsExtension capabilities agents can call within user-visible approval boundariesPreview

Platform scope

Jingle Developers focuses on the surfaces extension authors need: extension packages, runtime APIs, connected accounts, OAuth, agent tools, and distribution. Launcher, file search, snippets, clipboard history, window management, team sync, and security governance belong to the product platform roadmap, with developer-facing boundaries documented as they become available.

See the platform roadmap for phased availability across each capability area.

  • Start with Extension model to understand packages, manifests, runtime code, and main services.
  • Read API reference for the runtime SDK components and host capabilities.
  • Read Platform roadmap for phased availability across platform capabilities.
  • Use Connections when your extension needs GitHub, Notion, or another provider.
  • Use OAuth when designing public authorization flows with PKCE and callback URLs.
  • Use Agent tools when agents should call extension capabilities.

A minimal command

Extension commands use React to describe desktop UI and rely on the Jingle host for actions:

import { Action, ActionPanel, List, showToast } from "@openwork/extension-api"

export default function Command() {
  return (
    <List>
      <List.Item
        title="Run workflow"
        actions={
          <ActionPanel>
            <Action title="Confirm" onAction={() => showToast({ title: "Done" })} />
          </ActionPanel>
        }
      />
    </List>
  )
}

Command code does not need to manage windows, settings screens, or credential storage. The extension declares what it needs, and Jingle connects runtime UI, account state, and user actions.