PyStudio Plugin Development¶
This page is the entry point for developers who want to extend f8pystudio with plugin-provided renderers or operators.
Mental Model¶
PyStudio plugins contribute capabilities through the f8studio.pystudio.plugins entrypoint group.
A plugin typically provides one or both of these:
- renderer registrations for Studio-side node rendering/UI behavior
- operator registrations that extend the runtime node registry used by PyStudio
Key Pieces¶
StudioPluginManifestdeclares plugin metadata plus renderer/operator registrationsPluginRendererRegistrationmaps arenderer_classto a Studio node classPluginOperatorRegistrationprovides a registration function that writes intoRuntimeNodeRegistry
Typical Plugin Flow¶
- Create a Python package for the plugin
- Add a
pyproject.tomlentry underproject.entry-points."f8studio.pystudio.plugins" - Return a
StudioPluginManifestfrom the plugin entry object - Register renderers and/or operators explicitly
- Install the package in the Studio environment and verify discovery/loading
Existing Repo Examples¶
f8pystudio_ext_viz_tcode: full plugin with renderer + operator registrationf8pystudio_ext_template_match: renderer-focused workflow plugin
Behavior To Keep In Mind¶
- Missing plugins can leave sessions with missing-node placeholders or degraded recovery paths
- Plugin-provided nodes should still have explicit, discoverable contracts
- Renderer logic belongs in the Studio/plugin layer; runtime logic belongs in runtime nodes/operators
Validation Checklist¶
- Plugin package is installed in the active Studio environment
- Entry-point name resolves correctly
- Manifest metadata is stable
- Renderer class names match the runtime spec that refers to them
- Sessions fail gracefully if the plugin is absent