-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature request]: External Template Extensions Proposal #1158
Comments
Changes term to be be 'extension'. |
@eugeis I started looking at this propose |
@mattjoyce what do you think about to use something from here? |
@eugeis , really interesting. I'm not a confident Go coder, there's lot's I'm unfamiliar with. My understanding from the list of Go plugin packages is they allow runtime loading of other Go, which really good for keeping the project from becoming bloated, but it's a barrier for non-Go coders to leverage Fabric. My thoughts with the ad-hoc patterns from files, the template system and now extensions, is to somewhat decouple the core of fabric, from the need for curation by the project team, and provide a way to fabric to play nicely with other systems. Your thoughts? |
@mattjoyce I really like your design idea overall! I was just considering some aspects like general performance, integration efforts, and data parsing/conversion. For added flexibility, it might be helpful to include an option for extensions. This way, we can observe which types of extensions are most commonly used and later implement native solutions or plugins for those that prove particularly valuable. |
I think performance is possibly quite variable. I have nearly finish a prototype. For now I will sort extension configs in a ~/.config/fabric/extensions.yaml here's the extension config struct
|
What do you need?
External Template Extensions Proposal
Overview
Propose adding an external extension system to Fabric that allows users to extend functionality through custom executables while maintaining security through configuration-based verification.
Goals
Benefits
##For Project
Architecture Evolution: Enables moving all extensions external, including current hard-coded features (if desirable), supporting better modularity
Independent Development: Teams can maintain their own extensions without coordinating with core Fabric development
Rapid Integration: Add new capabilities without modifying Fabric core
Extensible Framework: Opens path for new extension types (e.g., output plugins for Obsidian integration)
Separation of Concerns: Cleaner core codebase focused on essential functionality
For Users
Private Customization: Create personal extensions without requiring dev team oversight or sharing
Technology Choice: Write extensions in any programming language, using familiar tools and libraries
Direct Control: Implement custom integrations for personal or organization-specific needs
Extensions System Design
Template Syntax
Extension Definition (YAML)
Security Model
Use Cases
Run fabric in fabric.
No LLM mode
fabric --nollm --pattern my-pattern
Security Considerations
Implementation Notes
Future Considerations
Security Review Questions
The text was updated successfully, but these errors were encountered: