Repository navigation
[RFC]: Plugins without a plugin runtime — MCP, skills, and hooks in 4 PRs #18844
rakibulrocky14
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem or use case
Adding an integration to T3 Code today means landing a core PR or maintaining a fork. People keep asking for an alternative: a Pi-style extension API (#6837), an extension/marketplace system (#6714), one plugin and skills list across providers (#6987), and managing Codex plugins inside T3 Code (#14310). Meanwhile, anyone who switches providers has to set up the same MCP servers and skills again in each one.
Proposed solution
A small, versioned plugin system, delivered as an MVP in 4 PRs. Each PR is useful on its own, aims for under ~2,000 changed lines including tests, and leaves T3 fully working if later PRs never land.
Design details
Core rules
plugins.jsonbeside the server settings. No file means plugins are off, so default behavior is unchanged and older builds never read it.<plugin-id>-<server>using[a-z0-9-]. Collisions with a user's own server, another plugin, or T3'st3-codeentry are rejected, never overwritten.Secrets
plugins.json, the same model as inline provider secrets today, so they share the same exposure: plaintext on disk, protected by file permissions.plugins.jsonis created with owner-only permissions (0600 on macOS/Linux; on Windows it inherits the per-user access of T3's state directory) and is rewritten atomically with those same permissions.Hooks (PR 4)
Why this matters
One plugin, installed once, works across providers and clients with no per-provider setup. Integrations stop needing core PRs or forks, and the core team doesn't have to own every integration.
Smallest useful scope
PR 1 alone: MCP servers plus data-declared settings for Codex and Claude, enabled by editing
plugins.json. If the full MVP is too much right now, I'm happy to stop after PR 2 or PR 3.Alternatives considered
Several plugin attempts came before this one, and this proposal is built on what they showed:
[a-z0-9-]names because they become tool prefixes. Its plugin-page approach could build on this later.Risks or tradeoffs
Examples or references
Contribution
I'd like to build all four PRs myself, in order, and I won't open PR 1 until there's a maintainer reply here. Before I start, these are the decisions I need:
Happy to adjust anything before writing code.
cc @juliusmarminge @t3dotgg
All reactions