Starting with OctoPrint 1.2.0, there’s now a plugin system in place which allows to individually
extend OctoPrint’s functionality.

Right now plugins can be used to extend OctoPrint’s web interface, to execute specific tasks on server startup and
shutdown, to provide custom (API) endpoints or whole user interfaces with special functionality, to react to system
events or progress reports or to add support for additional slicers. More plugin types are planned for the future.

Note

Since a plugin might not function properly and cause issues that are hard to diagnose or outright disrupt server
functionality, you might want to be able to start OctoPrint without any third party plugins enabled. This is also
very important when reporting bugs in OctoPrint, to ensure that what you are observing is actually a bug in
OctoPrint and not in any of your installed third party plugins.

To do that, OctoPrint has a built-in safe mode that disables all plugins not shipped as part of OctoPrint. You can
read more on how to enable that here.

If you don’t want or can’t use the Plugin Manager, plugins may also be installed manually either by copying and
unpacking them into one of the configured plugin folders (regularly those are <octoprintsourceroot>/plugins and
<octoprintconfigfolder>/plugins[1] or by installing them as regular python modules via pip[2].

For a plugin available on the Python Package Index (PyPi), the process is as simple as issuing a

pip install <plugin_name>

For plugins not available on PyPi, you’ll have to give pip an URL from which to install the package (e.g. the URL to
a ZIP file of the current master branch of a Github repository hosting a plugin, or even a git+https URL), example:

Make sure to use the exact same Python installation for installing the plugin that you also used for
installing & running OctoPrint. For OctoPi this means using ~/oprint/bin/pip for installing plugins
instead of just pip.