admin

Plugin Manager

Extend FleetPilot with plugins for every part of the dashboard

Developer Docs
7
Total Plugins
7
Active
0
Errors
7
Hooks Registered

Installed plugins

Available Hook Points

dashboard_widgets (1) host_card_actions (1) host_detail_tabs scanner_result_actions update_pre_hook update_post_hook (1) notification_hook (1) sidebar_links navbar_badges settings_panels device_buttons (3)

Green = at least one plugin registered. Numbers show registered handler count.

Installed Plugins

Example Dashboard Widget
v1.0.0 · FleetPilot Team
ok dashboard

Adds a custom info widget to the Home dashboard. Demonstrates the dashboard_widget hook.

Registered hooks:
dashboard_widgets
addons/example_dashboard_widget.py
View Source
Host Ping Button
v1.0.0 · FleetPilot Team
ok hosts

Adds a Ping button to every host card. Shows round-trip time via a lightweight TCP probe.

Registered hooks:
host_card_actions
addons/example_host_ping.py
View Source
example_plugin
v1.0.0 · Unknown
ok
Registered hooks:
device_buttons
addons/example_plugin.py
View Source
Slack Notification
v1.0.0 · FleetPilot Team
ok

Sends a Slack webhook message after every update run and when a new FleetPilot version is available. Requires SLACK_WEBHOOK_URL env var.

Registered hooks:
update_post_hook notification_hook
addons/example_slack_notify.py
View Source
Plugin Manager
v1.0.0 · Unknown
ok
addons/plugin_manager.py
Remote Disk Manager
v1.0.0 · Unknown
ok
Registered hooks:
device_buttons
addons/remote_disk_plugin.py
View Source
tutorial_plugin
v1.0.0 · Unknown
ok
Registered hooks:
device_buttons
addons/tutorial_plugin.py
View Source

Plugin Repository

Loading repository…

Write Your Own Plugin

Create a .py file with an addon_meta dict and an optional register(app, core) function. Upload it here to activate it instantly.

addon_meta = {
    "name":        "My Plugin",
    "version":     "1.0.0",
    "author":      "Your Name",
    "description": "What this plugin does",
    "scope":       "global",   # global | disks | hosts | dashboard | scanner

    # ── Hook registrations (pick any) ───────────────────────────────────────
    # Render HTML on the Home dashboard
    "dashboard_widget": lambda hosts, stats: "<div class='card'>Hello!</div>",

    # Add action buttons to each host card
    "host_card_action": lambda host: f"<a href='#demo-unavailable'name']}'>Ping</a>",

    # Add a tab to the host detail view
    "host_detail_tab": lambda host: {"tab_label": "SSH Keys", "tab_content": "<p>...</p>"},

    # Add a link to the sidebar
    "sidebar_link": lambda: {"label": "My Tool", "url": "/my_tool", "icon": ""},

    # Called after every update run
    "update_post": lambda host, result: notify_slack(host, result),

    # Add buttons to scanner results
    "scanner_action": lambda ip, info: f"<a href='#demo-unavailable'>Connect</a>",
}

def register(app, core):
    from flask import Blueprint, render_template
    bp = Blueprint("my_plugin", __name__)

    @bp.route("/my_tool")
    def my_tool():
        return "<h1>My Plugin Page</h1>"

    app.register_blueprint(bp)
Full Documentation