awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
hashicorp avatar

hashicorp/go-plugin

0
View on GitHub↗
6,019 stars·503 forks·Go·MPL-2.0·3 views

Go Plugin

go-plugin is a framework for implementing plugin architectures where extensions run as separate processes and communicate via a Go RPC plugin system. It functions as an inter-process communication library and lifecycle manager that allows host applications to discover, launch, and monitor external binary plugins.

The framework enables cross-language plugin systems, allowing plugins written in different languages to integrate with a host through standardized RPC protocols. It features a bidirectional RPC bridge that allows both the host and the plugin to exchange interface implementations for complex data exchange and callbacks.

The system provides process isolation by executing plugins as independent subprocesses, ensuring that plugin crashes do not terminate the host application. It covers security through mutual TLS authentication and integrity verification, as well as lifecycle orchestration including stateful process reattachment to maintain connectivity during host upgrades. Additional capabilities include binary discovery, protocol versioning, and the synchronization of plugin logs and output streams back to the host.

Features

  • Process-Isolated Plugins - Executes plugins as independent operating system processes to ensure plugin crashes do not terminate the host application.
  • RPC-Based Plugin Systems - Implements a plugin architecture where extensions communicate with the host via a Go RPC system.
  • Plugin Lifecycle Management - Discovers, launches, and monitors external binary plugins while managing their connection states and cleanup.
  • Plugin Lifecycle Management - Provides a comprehensive system for launching binary plugins and managing their execution and connection states.
  • Plugin Orchestration - Manages the starting, monitoring, and graceful termination of plugin binaries, including reattachment during upgrades.
  • Multi-Language Plugin Frameworks - Provides a communication layer using standardized RPC protocols to integrate plugins written in different languages.
  • Bidirectional RPC Bridges - Provides a mechanism for sharing interface implementations between a host and plugin to enable bidirectional callbacks.
  • Interface Passing - Supports bidirectional communication by allowing the host and plugin to exchange interface implementations.
  • Cross-Language RPC Frameworks - Integrates functionality written in different programming languages through a standardized Go RPC communication layer.
  • Inter-process Communication Libraries - Provides a library for exchanging data and invoking methods between a host process and external plugins via secure channels.
  • Plugin Connection Management - Establishes RPC connections to separate processes to execute functions and instantiate plugin types.
  • Remote Procedure Calls - Invokes methods on external plugin processes and retrieves results within the host application via RPC.
  • Mutual TLS Authentication - Implements secure communication channels between the host and plugins using mutual TLS for identity verification.
  • Plugin Communication Channels - Establishes authenticated and encrypted communication channels between the host process and its plugins.
  • Bidirectional Interface Exchanges - Implements a bidirectional RPC bridge allowing hosts and plugins to exchange interface implementations for complex callbacks.
  • Extensible Architectures - Enables building software where third parties can add features via external binaries without modifying core source code.
  • Inter-Process Communication - Provides a gRPC-based framework for exchanging data and invoking methods between host and separate plugin processes.
  • Inter-Process Communication Management - Handles the entire lifecycle, security, and data exchange between the main application and separate plugin subprocesses.
  • Complex Data Type Exchange - Manages the exchange of complex arguments and return values through specialized connections and raw data streams.
  • Process Reattachment - Allows a host to reconnect to a previously running plugin process using saved configuration to maintain state.
  • Protocol Version Verifiers - Checks protocol version compatibility during the handshake process to prevent incompatible plugins from connecting.
  • Custom Protocol Implementations - Provides the ability to implement custom interfaces for defining how data is exchanged over network listeners.
  • Stream Multiplexing - Shares a single network connection to handle multiple concurrent data streams for control signals and logs.
  • Secure RPC Channels - Establishes encrypted and authenticated communication channels between host and plugins using mutual TLS.
  • Service Exposure - Provides network listeners and server management within the binary to expose plugin services to clients.
  • Process Reattachment Mechanisms - Allows a new host process to connect to an already running plugin to maintain state during upgrades.
  • Stateful Reattachment - Enables host upgrades without restarting plugin processes by connecting the new host to the existing plugin.
  • Integrity Verifications - Verifies the authenticity of plugin binaries using checksums and secure communication channels.
  • Local Plugin Discovery - Scans local directories using glob patterns to identify and locate external plugin binary files.
  • Handshaking - Implements a handshake to verify protocol versions and security tokens before establishing communication channels.
  • Data Streaming - Facilitates the exchange of message sequences to handle large datasets or continuous updates.

Star history

Star history chart for hashicorp/go-pluginStar history chart for hashicorp/go-plugin

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Go Plugin

Similar open-source projects, ranked by how many features they share with Go Plugin.
  • apache/dubbo-spring-boot-projectapache avatar

    apache/dubbo-spring-boot-project

    5,389View on GitHub↗

    This project is an integration framework that bootstraps Apache Dubbo remote procedure call services within Spring Boot applications. It serves as a microservice communication framework that enables the implementation of RPC services, service discovery, and distributed governance through automated configuration. The project distinguishes itself by providing a cross-language RPC bridge, allowing services written in different languages to communicate via standards such as gRPC and Protobuf. It further enables the exposure of backend microservices as REST endpoints using the Triple protocol for

    Javadubbo
    View on GitHub↗5,389
  • nghttp2/nghttp2nghttp2 avatar

    nghttp2/nghttp2

    5,009View on GitHub↗

    nghttp2 is a suite of low-level C libraries and tools designed for implementing the HTTP/2 protocol. It provides a memory-efficient implementation of the protocol's core logic, including framing, stream multiplexing, and flow control. The project includes a dedicated library for HPACK header compression and decompression to reduce network bandwidth. It also provides a toolset for analyzing network traffic and benchmarking server performance, including throughput and latency measurements. Its broader capabilities cover protocol implementation and traffic management, including ALPN connection

    C++
    View on GitHub↗5,009
  • apache/thriftapache avatar

    apache/thrift

    10,933View on GitHub↗

    Thrift is a cross-language remote procedure call framework and data serialization protocol. It provides an interface definition language to specify data types and service interfaces in a neutral format, enabling the automated generation of client and server code across multiple programming languages. The project functions as a polyglot service communicator using a layered software stack to ensure interoperable communication. It focuses on implementing cross-language remote procedure calls and transforming complex data structures into standardized formats for efficient network transport. The

    C++
    View on GitHub↗10,933
  • google/tarpcgoogle avatar

    google/tarpc

    3,713View on GitHub↗

    tarpc is a remote procedure call framework for Rust that generates server traits and client stubs for network communication. It provides an asynchronous service interface that allows remote functions to be called as if they were local asynchronous tasks. The framework utilizes a serialized transport layer to move request and response data via TCP sockets, Unix domain sockets, or in-process channels. It includes a request lifecycle interceptor for injecting custom logic to handle authorization, throttling, and load balancing, as well as a distributed request telemetry system that attaches dead

    Rust
    View on GitHub↗3,713
See all 30 alternatives to Go Plugin→

Frequently asked questions

What does hashicorp/go-plugin do?

go-plugin is a framework for implementing plugin architectures where extensions run as separate processes and communicate via a Go RPC plugin system. It functions as an inter-process communication library and lifecycle manager that allows host applications to discover, launch, and monitor external binary plugins.

What are the main features of hashicorp/go-plugin?

The main features of hashicorp/go-plugin are: Process-Isolated Plugins, RPC-Based Plugin Systems, Plugin Lifecycle Management, Plugin Orchestration, Multi-Language Plugin Frameworks, Bidirectional RPC Bridges, Interface Passing, Cross-Language RPC Frameworks.

What are some open-source alternatives to hashicorp/go-plugin?

Open-source alternatives to hashicorp/go-plugin include: apache/dubbo-spring-boot-project — This project is an integration framework that bootstraps Apache Dubbo remote procedure call services within Spring… nghttp2/nghttp2 — nghttp2 is a suite of low-level C libraries and tools designed for implementing the HTTP/2 protocol. It provides a… apache/thrift — Thrift is a cross-language remote procedure call framework and data serialization protocol. It provides an interface… google/tarpc — tarpc is a remote procedure call framework for Rust that generates server traits and client stubs for network… weibocom/motan — Motan is a cross-language RPC framework and distributed service mesh designed for building high-performance… geniusvjr/learningnotes — LearningNotes is a technical knowledge base and engineering study guide focused on Android framework internals, system…