Skip to content

draft: plugin system#126

Draft
gfyrag wants to merge 4 commits intomainfrom
refacto/plugins
Draft

draft: plugin system#126
gfyrag wants to merge 4 commits intomainfrom
refacto/plugins

Conversation

@gfyrag
Copy link
Copy Markdown
Contributor

@gfyrag gfyrag commented Mar 6, 2026

  • feat: add plugin architecture with HashiCorp go-plugin
  • docs: add fctl plugin architecture draft
  • docs: update plugin architecture with cached manifests, auto-discovery, registry checksums

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 6, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 28d9477b-ffd2-4f65-81c4-4993727eceb1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refacto/plugins

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 and usage tips.

@gfyrag gfyrag closed this Mar 6, 2026
@gfyrag gfyrag reopened this Mar 31, 2026
gfyrag and others added 4 commits March 31, 2026 12:06
Introduce a plugin system allowing fctl commands to be provided by
external binaries communicating over gRPC. This decouples service-specific
CLI commands from the core fctl binary, enabling independent versioning.

Structure:
- pkg/pluginsdk/ (sub-module): minimal plugin SDK with proto definitions
  and Serve() entry point — no membership/deployserver dependencies
- pkg/plugin/: core infrastructure (manager, loader, cobra bridge,
  registry client, config)
- cmd/plugin/: CLI commands (install, list, update, remove)
- plugins/fctl-plugin-ledger/: pilot plugin for Ledger v3 (gRPC),
  with locally generated proto stubs from ledger-v3-poc

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Architecture document covering the shared command pattern between
ledgerctl and fctl-plugin-ledger: adapter pattern, Runtime interface,
module separation, plugin protocol, and command matrix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…y, registry checksums

- Replace startup plugin spawning with cached manifests (fetched at install time only)
- Switch registry format from JSON to YAML with SHA-256 checksums per binary
- Add auto-discovery flow using membership API (modules + region versions)
- Add local plugin development support (go build from source directory)
- Add stable/experimental stability levels per command
- Move plugin type (stack/membership/basic) to registry level
- Simplify AuthContext to 4 fields (issuer_url, service_url, access_token, insecure_tls)
- Add registry CI workflow (PR on release, manual old version cleanup)
- Replace ASCII diagrams with mermaid

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Explain how the plugin system eliminates runtime version negotiation
and allows services to drop version prefixes from their API paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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