hashicorp/go-plugin

Golang plugin system over RPC.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 15 minutes ago
Added to GitGenius on September 11th, 2026
Created on January 21st, 2016
Open Issues & Pull Requests: 73 (+0)
GitHub issues: Enabled
Number of forks: 509
Total Stargazers: 6,089 (+0)
Total Subscribers: 328 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 197.0 days
Mean response time: 475.2 days
90th percentile: 1518.2 days
Tracked items: 18

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 12
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,142 days
Stale 30+ days: 12
Stale 90+ days: 12

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

go-plugin is a plugin system for Go that uses RPC for inter-process communication.

The tool solves the problem of loading and executing untrusted or dynamically compiled code within a Go application while maintaining process isolation and safety. Rather than linking plugins directly into the main binary, go-plugin spawns plugin processes and communicates with them over RPC, allowing plugins to crash or be updated without affecting the host application. This architecture means plugins can be written in any language that supports the RPC protocol, not just Go, and the host application remains stable even if a plugin fails.

Teams should adopt go-plugin when building systems that need extensibility through third-party code, such as infrastructure tools, data processing pipelines, or applications where plugins must be independently versioned and deployed. The approach is particularly suited to scenarios where plugin isolation is a requirement—where you cannot trust plugin code to run in the same process as your core application. The RPC-based design trades some performance for safety and flexibility; if you need maximum performance and can trust all code running in your application, a simpler plugin approach might suffice.

The project shows consistent maintenance with regular updates addressing issues and improvements. Pull requests receive timely review and feedback from maintainers. The codebase demonstrates attention to documentation, with examples and explanations of core concepts included in the repository. Issues are actively triaged and responded to, indicating ongoing engagement with users. The project maintains backward compatibility while evolving its API, suggesting a commitment to stability for existing users.