Skip to content
CapsuleResearch workspaceProtocolsIdeas into evidence
Build story

How Capsule became a plugin

On this page 6 sections
  1. The decision: keep one engine
  2. Three pieces in the package
  3. A deliberate first boundary
  4. What we checked
  5. Try the local install
  6. The source and specifications

Ideas into evidence—now available beside the conversation.

Capsule began as a local workbench for a practical problem: agent work could finish without making its way into useful, inspectable results. Jay needed to see what ran, who owned it, what it cost, where the artifacts lived, and whether anyone had actually verified or accepted them.

The workbench brought commission writing, Qiskit's drafting conversation, run records, costs, findings, publications and operating guidance into one place. The next question was whether those capabilities could travel into the tools where the conversation already happens.

The decision: keep one engine

We kept the existing Python service and central records as the engine. The plugin is a small adapter with a branded interface and reusable workflow instructions. It does not maintain a second list of jobs.

The connection has three parts:

  1. Your conversation or Capsule panel requests a specific capability.
  2. A local Python MCP server validates that request and calls the existing loopback service.
  3. Capsule's existing service returns its source-backed records or saves a local draft through its established journal.

Credentials stay with the backend's existing stores. The plugin package contains no API keys, study transcripts or private run records.

Three pieces in the package

Tools that work with or without the panel

Seven tools expose the workbench's useful capabilities: open Capsule, list capsules, inspect an execution, browse findings and publications, read operating references, inspect draft receipts, and save a local draft.

Every capsule keeps its session identity. Each execution keeps its turn identity. Token estimates remain labeled as estimates, including missing evidence. A completed run remains distinct from a verified or centrally accepted result.

An interface that still feels like Capsule

The panel retains Capsule's orbital mark, green header, warm paper, serif headings and visible costs. Its views include capsules, findings, publications, protocols and a commission editor.

The panel runs as an MCP Apps UI resource inside a compatible host. Its buttons call tools through the host bridge; it does not reach into the local backend directly from the browser. The full workbench remains available for longer reading, result files and review before sending.

A skill that preserves the working method

The packaged skill teaches the important distinctions: preserve the requester's wording, keep exact source identities, reconcile uncertain writes, and carry delivery through verification and integration. It helps another conversation use the tools without rebuilding our context from scratch.

A deliberate first boundary

The plugin can save a local draft. It cannot dispatch a paid cloud job. Review and sending stay in Capsule's existing workbench flow.

A save carries a request UUID. If that same ID already has matching content, the adapter returns the existing receipt. It rejects different content under that ID. After an uncertain response, inspect the existing drafts before retrying.

Reading or opening the plugin starts no research commission. The plugin has no periodic polling loop. The backend retains its existing event-driven reconciliation; the panel reads through tools when opened or refreshed. Sine's finer agent-event capture is separate work in progress, and hosted MCP Events wakeups are not part of this version.

What we checked

The registered Codex CLI installed and enabled capsule@fmvisual-local. The installed package passed six live, read-only stdio checks: initialization, tool discovery, capsule data, the findings library, a protocol reference, and the UI resource.

Adapter tests cover private-field exclusion, the tool and argument allowlist, duplicate-save recovery, conflicting content, exact draft preservation and safe protocol errors. A copied-package test verifies that capability discovery works outside the repository without rereading project onboarding files.

A simulated host connected the panel to real read-only tools at desktop and mobile widths. Run inspection, findings, rendered protocol text and a draft-save fixture passed without page errors or horizontal overflow. No screenshots, paid submissions or live draft writes were used for these checks.

Still to verify: rendering and interaction inside the actual desktop client. The simulated host and CLI installation checks do not establish that. Public distribution, a standalone backend installer and hosted event wakeups are also outside this first local version.

Try the local install

Follow the six-step Codex walkthrough for copyable commands, the first message to type, expected results and troubleshooting.

The plugin is installed on this Mac. Start a new local conversation or reload plugins in a supporting client, then select Capsule and ask:

Show my capsules and their costs.

Or:

Help me prepare a commission using Capsule's protocols.

The existing Capsule service must be running on this computer. This package is a companion to that service, not a standalone deployment. Nothing has been published to the public plugin directory.

Download Capsule 0.1.0 · Open the full workbench · Read the operating method

The source and specifications

The implementation lives in plugins/capsule/: plugin.json, mcp.json, server/main.py, ui/panel.html, the orbital SVG and the workflow skill. The repository marketplace points to that package. The installed client copy is managed by the registered CLI.

The design follows OpenAI's plugin packaging documentation and MCP Apps UI documentation. Public desktop distribution has its own eligibility and submission requirements.

Source: tools/platform-telemetry/plugin-story.md · Rendered from the current local source.