The whole app is built on one idea: a folder of Python files. Each one becomes a tab. Load what you need, delete what you don't, or write your own in a few lines.
Copy the base contract, fill in the parts you need, drop the file in the folder. No build step, no registration, no core edits.
import tkinter as tk class Plugin: name = "Hello" version = "1.0" description = "My first plugin" def on_load(self, app): # runs once at startup self.app = app def add_tab(self, app, notebook): frame = tk.Frame(notebook, bg="#0f0f0f") tk.Label(frame, text="Hello, stream!", bg="#0f0f0f", fg="#fff").pack() return ("Hello", frame) def add_api_routes(self, flask_app, app): # optional: add REST endpoints pass
Every plugin is optional. Keep the app lean, or stack all 19 — it's your folder.