Skip to content

[Feature Request]: Add a plugin/extension system to allow third-party modules to extend Celtrix functionality #281

Description

@divyanshim27

Summary

Celtrix currently appears to implement a fixed set of features with no mechanism for external contributors or users to extend its functionality through plugins or modules. For an OS-level or platform project aiming to be open and composable, a well-defined plugin/extension API is essential for long-term growth and community adoption.

Problem

  • There is no documented plugin interface, hook system, or module registry in the codebase.
  • All functionality must be contributed directly to the core repository, creating a monolithic architecture that is harder to maintain as scope grows.
  • Contributors with specialized use cases (custom integrations, domain-specific extensions) have no clean path to extend Celtrix without modifying core code.
  • An extensible architecture is a prerequisite for building a healthy ecosystem around the project.

Impact

  • Growth is bottlenecked by the core maintainers' bandwidth since all extensions must go through main.
  • The project cannot serve niche use cases without accumulating scope in core.
  • Contributors who want to add specialized features have no clear contribution path.

Proposed Solution

  1. Define a Plugin interface with lifecycle hooks:
   interface CeltrixPlugin {
     name: string;
     version: string;
     onInit?: (context: CeltrixContext) => void;
     onShutdown?: () => void;
     // extend with domain-specific hooks as needed
   }
  1. Create a PluginRegistry that loads and manages plugins, validates their interface compliance, and calls lifecycle hooks at the appropriate points.
  2. Document the Plugin API with a PLUGIN_DEVELOPMENT.md guide.
  3. Create a reference plugin demonstrating the full plugin lifecycle as a concrete example for third-party developers.

Additional Notes

  • I will design the plugin system to be non-breaking — the core system works identically with zero plugins registered.
  • Could you assign this to me?

Labels: enhancement, feature, architecture, help wanted, GSSoC 2026

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions