Emby Emby Emby Learn
  • Emby Home
  • Video
  • Audio
  • Media Files
    • Subtitles and captions
    • Photos and images
    • Metadata and discovery
    • Libraries and media collections
    • Playback and streaming
    • Media hardware acceleration
    • Displays and AV connections
    • Live TV and recording
  1. Emby Learn
  2. Automation and interoperability
  3. Events and integrations
  4. Plugins
  5. Plugin architecture
Search Results for

    Show / Hide Table of Contents

    Plugin architecture inside a media server

    A server plugin adds code to the host's extension lifecycle, using supported discovery and interfaces while sharing the host's execution resources.

    A server plugin adds functionality through the media server's supported extension system. Its code participates in the host's lifecycle and interfaces rather than only sending requests from an external application.

    Emby's development documentation describes plugin templates, supported interfaces and automatic discovery of particular extension types. Those contracts determine how the host recognizes and uses an extension.

    Discovery connects code to an extension point

    A plugin package is loaded into the host's supported extension lifecycle, where discovered implementations participate in server work and own persistent state as documented.

    An extension point can represent a provider, task, service or another supported role. Implementing an interface is meaningful when the host's discovery and registration rules recognize it.

    The documented IPlugin interface includes identity and descriptive properties, plus paths for plugin-related data. That is one part of the contract; it does not mean every arbitrary class in every assembly automatically runs at startup.

    Stage What the host/plugin relationship needs
    Package selection Compatible software and dependencies
    Loading Required assemblies and symbols available
    Discovery/registration Recognized supported extension types
    Invocation Correct operation and lifecycle behavior
    Shutdown or replacement Work and resources handled under the host's rules

    Inside the host is a different resource boundary

    Plugin work can consume the server's threads, memory and storage resources. A long-running provider or task can therefore affect the same host serving playback.

    An external API client has its own process lifecycle and reaches the server through request contracts. An in-process extension should not be assumed to have a container-like isolation boundary merely because it is labelled a plugin.

    That distinction makes cancellation, bounded work and error handling part of a useful extension design.

    A plugin can own persistent data

    Configuration and miscellaneous plugin data can have documented storage locations. Their lifetime can differ from cached results or from the plugin assembly itself.

    Replacing the code does not universally migrate or discard those files. A compatible update needs to interpret the existing state through its supported migration rules.

    For Emby, use the current plugin-development contract and distinguish package compatibility, discovered behavior and persistent state. The article explains that architecture without prescribing one extension's complete implementation.

    See Also

    • Plugin compatibility across server and runtime changes
    • Native libraries and runtime dependencies

    References

    • Emby server plugin development
    • Emby automatic type discovery
    • Emby IPlugin interface
    On this Page
    2026 © EMBY LLC. Please see our terms of use and privacy policy.
    Back to Top