ConceptsPlugin Protocol

Plugin Protocol

Executable plugins let gestaltd extend integrations without compiling new code into the host binary.

What A Plugin Is

A plugin is a separate process started by gestaltd. The host and plugin communicate over a local Unix socket using the Gestalt plugin gRPC protocol.

One plugin kind is supported:

KindPurpose
Provider pluginAdds a provider for providers:.

Startup Model

When gestaltd starts a plugin process, it:

  1. creates a temporary Unix socket
  2. sets GESTALT_PLUGIN_SOCKET for the child process
  3. launches the plugin executable
  4. dials the plugin and validates protocol compatibility
  5. sends the plugin its name and config

The public Go SDK in sdk/go handles this for you.

Provider Plugin Contract

A provider plugin is expected to:

  • report provider metadata such as name, display name, description, and connection mode
  • expose its discovery catalog
  • execute operations
  • optionally expose a request-scoped catalog
  • optionally expose a config schema
  • optionally run startup logic when the host sends StartProvider

The SDK’s ProviderStarter path receives:

  • the configured integration name
  • the plugin config block as a map

Config Placement

Provider plugin config lives here:

providers:
  example:
    from:
      command: ./provider
    config:
      greeting: hello