mirror of
https://github.com/gotempsh/temps.git
synced 2026-04-25 14:25:52 +03:00
[GH-ISSUE #19] feat: External plugin system for standalone binary plugins #3
Labels
No labels
bug
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/temps#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @dviejokfs on GitHub (Feb 26, 2026).
Original GitHub issue: https://github.com/gotempsh/temps/issues/19
Summary
Temps needs an external plugin architecture where users can drop a compiled binary into
~/.temps/plugins/and have it automatically discovered, started, and integrated — providing both API endpoints and UI navigation entries.Motivation
The internal plugin system (
TempsPlugintrait) works well for first-party domain crates, but there is no way for third parties (or self-hosted operators) to extend Temps with custom functionality without forking the codebase. An external plugin system would allow:~/.temps/plugins/, restart Temps, done.Design
Protocol
manifest→ready, then serve HTTP over a Unix domain socket./api/x/{plugin_name}/*to the plugin's socket./api/x/pluginsto get manifests and dynamically adds routes/nav entries.Architecture
temps-core::external_plugin::manifest(shared by SDK and management crate).temps-external-pluginscrate, following the standardTempsPluginpattern with proper service layer, handler, and OpenAPI schema.temps-plugin-sdk, implement theExternalPlugintrait, and use thetemps_plugin_sdk::main!()macro.Crates
temps-core(ext)PluginManifest,NavEntry,HandshakeMessage, etc.)temps-external-pluginsTempsPlugintemps-plugin-sdkExternalPlugintrait,main!()macro,PluginContext,TempsAuthextractorAcceptance Criteria
~/.temps/plugins/are auto-discovered and started on Temps boot/api/x/{plugin_name}/*are proxied to the plugin's Unix socket/api/x/pluginsreturns all running plugin manifeststemps-external-pluginsfollows standardTempsPluginpattern (no special-casing inconsole.rs)Out of Scope (Future Work)
ui: Option<UiManifest>but Temps-side extraction not yet implemented)