Skip to content

docs(plugins): remote plugins move from proposal to architecture, with a guide to listing one - #2255

Merged
AnishSarkar22 merged 7 commits into
MODSetter:devfrom
AnishSarkar22:feat/remote-plugins
Oct 14, 2026
Merged

AnishSarkar22 merged 7 commits into
MODSetter:devfrom
AnishSarkar22:feat/remote-plugins

Conversation

@AnishSarkar22

@AnishSarkar22 AnishSarkar22 commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

What

  • Proposals → architecture. Deletes docs/proposals/plugins/core/ and remote/, which described work that has shipped. What they said that the architecture docs lacked now lives in plugins.md, plugin-host.md, plugin-registry.md and agent.md:

    • the MCP client's rules
    • what the gateway does today
    • what a plugin can reach
    • adding a plugin to the host
    • who changes proprietary/
    • the backend's copy of the scrapers
  • What is not built. docs/proposals/plugins/README.md now holds only unbuilt work:

    • the chat engine's router step
    • jobs and scaling on the plugin host
    • organisation policy
    • later MCP features
    • the open questions, including local npx/uvx servers

    Bundles stay deferred, and their registry entry moved into bundles/README.md.

  • ADRs. 0051, 0053 and 0054 are Accepted; 0052 stays Proposed.

  • plugins.surfsense.com is live (since 2.2.1). Known gaps, ADRs, the contracts index and the roadmap now say so.

  • A guide to listing a plugin, plugins/registry/README.md, for publishers and coding agents. It covers:

    • what a plugin is: an MCP server
    • getting the server ready and trying it as a custom plugin
    • every entry field
    • how Verified is proven
    • what review checks
    • a checklist for agents

    plugins/README.md and CONTRIBUTING.md point to it.

  • Contract 2. Names the plugin host and the desktop app as its built producer and consumer; the backend's license mode and surfsense_mcp are still unbuilt.

  • Issue forms. A new "Report a plugin" form, the path to delisting, and a Plugins option in the bug and idea forms.

  • Fixes a broken studio.md#analysis-runs link in agent.md.

Why

The proposals described remote plugins as future work after they had shipped, and the architecture docs still linked to them. Publishers had no complete guide to listing a plugin, and the old one asked for a publisher field the registry check no longer accepts. Several docs still said plugins.surfsense.com was not deployed.

Fixes #

How to test

  • python scripts/check_docs.py passes.
  • cd plugins/registry/check && uv run python -m registry_check static passes, and the guide's example entry passes entry_problems both as community and as verified with a domain.
  • https://plugins.surfsense.com/plugins.json matches plugins/registry/published/plugins.json and verifies with registry_check verify and the app's public key.

Review note: 37d000fcc changes docs/contracts/02-scraper-api-auth.md, which needs @CREDO23's review as the other owner of docs/contracts/.

High-level PR Summary

This pull request updates the plugins documentation to reflect that remote plugins have shipped. It consolidates proposals into architecture docs, adds a comprehensive guide for listing plugins in plugins/registry/README.md, updates ADR statuses, creates a plugin report issue form, clarifies contract 2's implementation status, and moves deferred work into a single proposals page.

⏱️ Estimated Review Time: 15-30 minutes

💡 Review Order Suggestion
Order File Path
1 .github/ISSUE_TEMPLATE/plugin-report.yml
2 .github/ISSUE_TEMPLATE/bug.yml
3 .github/ISSUE_TEMPLATE/feature.yml
4 docs/contracts/02-scraper-api-auth.md
5 docs/adr/0047-premium-plugins-are-source-available.md
6 docs/adr/0051-plugins-are-mcp-servers-behind-one-tool-gateway.md
7 docs/adr/0052-the-chat-model-never-calls-tools.md
8 docs/adr/0053-plugins-are-listed-in-a-registry-and-third-party-ones-start-off.md
9 docs/adr/0054-surfsenses-plugins-run-on-one-plugin-host.md
10 docs/adr/README.md
11 plugins/README.md
12 plugins/registry/README.md
13 docs/architecture/plugin-host.md
14 docs/architecture/plugin-registry.md
15 docs/architecture/plugins.md
16 docs/architecture/agent.md
17 docs/proposals/plugins/README.md
18 docs/proposals/plugins/bundles/README.md
19 AGENTS.md
20 CONTRIBUTING.md
21 docs/ROADMAP.md
22 docs/architecture/license/app.md
23 docs/contracts/README.md
24 plugins/registry/check/registry_check/static/entry_rules.py
25 plugins/remote/host/app.py
26 docs/proposals/plugins/core/01-architecture.md
27 docs/proposals/plugins/core/02-registry.md
28 docs/proposals/plugins/core/03-engines.md
29 docs/proposals/plugins/core/04-trust.md
30 docs/proposals/plugins/core/05-paid.md
31 docs/proposals/plugins/core/06-later.md
32 docs/proposals/plugins/remote/01-mcp-client.md
33 docs/proposals/plugins/remote/02-surfsense-servers.md
34 docs/proposals/plugins/remote/README.md

Need help? Join our Discord

AnishSarkar22 and others added 7 commits October 14, 2026 13:47
…only what is not built as the proposal

The core/ and remote/ proposals described work that has shipped. What they
said that the architecture docs lacked now lives there: the MCP client's
rules, what the gateway does today, what a plugin can reach, adding a plugin
to the host, who changes proprietary/, and the backend's copy of the
scrapers. proposals/plugins/README.md now holds only what is not built: the
chat router step, jobs and scaling on the host, organisation policy, later
MCP features and the open questions. Bundles stay deferred, with their
registry entry moved in. ADRs 0051, 0053 and 0054 are accepted, and links
into the deleted files point at the architecture docs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hecks them

verification replaces publisher, with how a publisher proves verified, and
the fields the guide left out: display lengths, auth, about, tools, added
and min_app_version. The example entry passes the registry check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The plugin host is a producer and the desktop app a consumer, both built;
the backend's capabilities routes and surfsense_mcp are not. Consumer rules
and tests now describe what the app and host do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plugins/registry/README.md explains that a plugin is an MCP server and walks
from getting the server ready to the pull request, with every field, how
Verified is proven, what review checks, and a checklist for coding agents.
plugins/README.md and CONTRIBUTING.md point to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The registry, its signature, the OAuth client document and callback, and
the plugin host are served there since 2.2.1. Known gaps, ADRs 0053 and
0054, the contracts index and the roadmap say so; no workflow builds or
deploys the images.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…idea forms

A listed plugin that is broken, misleading or unsafe now has a way to be
reported, which is what starts a delisting. The registry guide and the
plugins doc link to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 14, 2026

Copy link
Copy Markdown

@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel.

A member of the Team first needs to authorize it.

@AnishSarkar22
AnishSarkar22 merged commit e98038c into MODSetter:dev Oct 14, 2026
24 of 27 checks passed
@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository: MODSetter/SurfSense/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e0411514-8213-4720-b082-054e208c90fc
📥 Commits

Reviewing files that changed from the base of the PR and between cc6868c and dd4486c.

📒 Files selected for processing: 34
  • .github/ISSUE_TEMPLATE/bug.yml
  • .github/ISSUE_TEMPLATE/feature.yml
  • .github/ISSUE_TEMPLATE/plugin-report.yml
  • AGENTS.md
  • CONTRIBUTING.md
  • docs/ROADMAP.md
  • docs/adr/0047-premium-plugins-are-source-available.md
  • docs/adr/0051-plugins-are-mcp-servers-behind-one-tool-gateway.md
  • docs/adr/0052-the-chat-model-never-calls-tools.md
  • docs/adr/0053-plugins-are-listed-in-a-registry-and-third-party-ones-start-off.md
  • docs/adr/0054-surfsenses-plugins-run-on-one-plugin-host.md
  • docs/adr/README.md
  • docs/architecture/agent.md
  • docs/architecture/license/app.md
  • docs/architecture/plugin-host.md
  • docs/architecture/plugin-registry.md
  • docs/architecture/plugins.md
  • docs/contracts/02-scraper-api-auth.md
  • docs/contracts/README.md
  • docs/proposals/plugins/README.md
  • docs/proposals/plugins/bundles/README.md
  • docs/proposals/plugins/core/01-architecture.md
  • docs/proposals/plugins/core/02-registry.md
  • docs/proposals/plugins/core/03-engines.md
  • docs/proposals/plugins/core/04-trust.md
  • docs/proposals/plugins/core/05-paid.md
  • docs/proposals/plugins/core/06-later.md
  • docs/proposals/plugins/remote/01-mcp-client.md
  • docs/proposals/plugins/remote/02-surfsense-servers.md
  • docs/proposals/plugins/remote/README.md
  • plugins/README.md
  • plugins/registry/README.md
  • plugins/registry/check/registry_check/static/entry_rules.py
  • plugins/remote/host/app.py
 _____________________________________________________________________________
< Easy things should be easy and hard things should be possible. - Larry Wall >
 -----------------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant