Sophon 1.15 is here
New in Sophon 1.15

Extend the core. Without forking it.

Sophon Plugins are out-of-process dotnet programs speaking gRPC to the Gateway — adding new channel types and document formats that behave exactly like built-ins. Installed locally, enabled explicitly, managed for you.

2 interfaces
Live today
gRPC
Out-of-process — your code, your process
Hot start/stop
No Gateway restart
Off by default
Enable + allowlist per plugin

How it works

From an empty project to a running extension in four steps — no fork, no Gateway rebuild, no restart.

01

Implement an interface

Write a plain dotnet console app that implements ChannelAdapter or DocumentExtractor. No forking Sophon, no rebuilding the Gateway — your plugin is its own project with its own dependencies.

02

Describe it in manifest.json

Declare the plugin's name, which interface it implements, and a settings schema. Settings marked as secrets are vault-backed — configured in the Dashboard, never stored in plain text.

03

Pack and install

sophon dev build packages your project as a .sophon-plugin archive, and sophon dev install copies the project into the data directory. Or skip the CLI entirely and install a published plugin from the Sophon Marketplace.

04

Enable and allowlist

Nothing runs until an admin enables plugins and allowlists the plugin by name. Start, stop, and configure it from Dashboard Settings → Plugins — hot, with no Gateway restart.

Two interfaces, live today

Both extension points plug into existing Sophon machinery — your plugin gets the same treatment as code that ships in the box.

ChannelAdapter

Build your own messaging channel

Bridge Sophon to a proprietary in-house chat system, an internal ticketing tool, or a niche protocol — and it behaves exactly like a built-in channel.

  • Appears in the Dashboard add-channel wizard alongside WhatsApp, Telegram, and Slack
  • Full integration with sessions, message routing, and approval flows
  • Inbound attachments and outbound delivery work like any native channel
  • Connection settings render in the Dashboard; secrets are vault-backed

DocumentExtractor

Teach Sophon new file formats

Add extraction for formats Sophon doesn't read natively — EPUB, RTF, CAD — and they flow through the same document pipeline as PDFs.

  • Register the file extensions you handle; a dynamic registry routes them to your plugin
  • Extracted content is chunked, embedded, and searchable like every other document
  • Citable in grounded Q&A — your formats show up with citations, not just search hits
  • Built-in formats always take precedence, so a plugin can never break native extraction

Lifecycle and trust

The Gateway runs your plugin so you don't have to babysit it — and it's honest about what a plugin can do.

Managed lifecycle

  • Health checks every 30 seconds

    The Gateway continuously monitors every running plugin over gRPC.

  • Auto-restart with backoff

    A crashed plugin is restarted with exponential backoff — Sophon backs off gracefully instead of thrashing.

  • Hot start and stop

    Start, stop, and reconfigure plugins from the Dashboard without ever restarting the Gateway.

  • Automatic discovery

    Plugins are discovered in the data directory — including packages installed from the Sophon Marketplace.

Full trust, explicit consent

Plugins run as separate local processes, but they are not sandboxed — a plugin can do anything the machine account can do. Sophon treats them like software you install, not content you browse: off by default, individually allowlisted by an admin, and admin-only to install, start, or stop.

Install plugins from sources you trust, the same way you would vet any binary you put on your server.

A crashing plugin cannot take down the Gateway — but that is a stability property, not a security boundary.

Developer quickstart

One manifest, two CLI commands, one Dashboard toggle. Here's the manifest for a channel adapter, end to end.

manifest.json
{
  "name": "acme-chat-adapter",
  "version": "1.0.0",
  "description": "Channel adapter for the Acme in-house chat system",
  "author": "Your Name",
  "type": "plugin",
  "pluginInterface": "ChannelAdapter",
  "entrypoint": "AcmeChatAdapter.dll",
  "channelType": "acme-chat",
  "recipientMetadataKey": "channel",
  "settings": [
    {
      "name": "serverUrl",
      "displayName": "Server URL",
      "type": "string",
      "required": true
    },
    {
      "name": "apiToken",
      "displayName": "API Token",
      "type": "secret",
      "required": true
    }
  ]
}
Build, install, enable
$ sophon dev build ./acme-chat-adapter
  → acme-chat-adapter.sophon-plugin

$ sophon dev install ./acme-chat-adapter

# Then enable it in Dashboard → Settings → Plugins

What's coming

The manifest format already accepts three more interfaces — the runtime support ships in upcoming releases.

Coming

ModelProvider

Bring your own inference — plug a custom or self-hosted model endpoint into Sophon as a first-class provider.

Coming

EmbeddingProvider

Supply your own embedding backend for memory and document search.

Coming

VaultBackend

Store Sophon's secrets in your own vault infrastructure instead of the built-in store.

Looking for Tool plugins? That's intentional — custom tools already have two first-class homes: Skills for sandboxed, marketplace-distributable capabilities, and MCP for external tool servers. Plugins are reserved for extending the core.

Distribute through the Marketplace

Publish your plugin to the Sophon Marketplace and anyone can install it from their Dashboard — same packaging, same review flow as skills.

Your channel. Your formats. Sophon's machinery.

Build the integration Sophon doesn't ship, install it in minutes, and let the Gateway keep it healthy — while you stay in control of what runs.

Get started in under 5 minutes

One command to launch. Add your LLM provider. Connect your channels. Your intelligent assistant is ready.