Connected semantic visualization | Sections 1-4

One mental model, four startup layers.

The missing capability stays in view while Amp adds a child process, two explicit streams, and an ordered startup handshake.

Missing capability

  1. Local code exists. A plugin module is present on disk.
  2. The connector stops. Files alone do not establish a live runtime capability.
  3. Amp still has a gap. The target capability is not available to Amp.

A load decision does not guarantee startup, and code on disk is not the child process.

One ordinary plugin, one child

  1. Boundary appears. Amp and the plugin no longer share one process.
  2. Child field resolves. It is local and separate from the visible Amp application.
  3. Code moves into the child. One ordinary plugin runs in this Bun runtime.
  4. Runtime identity becomes explicit. BUN_BE_BUN=1 makes the re-executed Amp binary behave as a Bun-mode child.

Separate process does not mean security sandbox, network isolation, remote server, or a second visible Amp application.

Explicit communication, not shared memory

  1. Two streams. Amp-to-plugin traffic uses the child stdin direction; plugin-to-Amp traffic returns through stdout.
  2. Request crosses. One illustrative JSON request ends at a visible newline.
  3. Response returns. Its separate outline preserves correlation without inventing an ID.
  4. Runtime events use the channel too. Messages travel in both directions; this does not imply that every event has a response.

RPC crosses a local process boundary here. It does not imply a network hop, a plugin server, or ordinary in-process function calls.

Handshake order

  1. Request client.info. The child asks Amp for client context.
  2. Receive context. Amp returns context without exposing unverified response contents here.
  3. Import the plugin module. Import makes code available to the child; it does not mean ready.
  4. Invoke default export(amp). The plugin receives its defined Amp interface.
  5. Observe registration changes. Contributions remain pending rather than appearing directly in Amp.
  6. Send runtime.ready. Readiness follows the changes; capability availability still requires Amp's fetch-and-result phase.

amp is the interface passed to the plugin entry function. It is not another process or a message envelope.