https://github.com/mjwhodur/plugkit
PlugKit — plugin communication, simplified
https://github.com/mjwhodur/plugkit
go go-kit go-library go-plugin go-plugins golang plugin-architecture plugin-system rpc rpc-framework
Last synced: 2 months ago
JSON representation
PlugKit — plugin communication, simplified
- Host: GitHub
- URL: https://github.com/mjwhodur/plugkit
- Owner: mjwhodur
- License: mit
- Created: 2025-04-09T20:56:24.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-04-29T20:44:22.000Z (11 months ago)
- Last Synced: 2025-10-10T19:16:17.860Z (6 months ago)
- Topics: go, go-kit, go-library, go-plugin, go-plugins, golang, plugin-architecture, plugin-system, rpc, rpc-framework
- Language: Go
- Homepage: https://pkg.go.dev/github.com/mjwhodur/plugkit
- Size: 82 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PlugKit



**PlugKit** to stupidly simple, stream-capable plugin runtime for Go.
No gRPC. No protobuf. No codegen.
Just structs, CBOR, pipes and a handshake.
## ✨ Why PlugKit?
PlugKit is a micro-framework that lets you:
- create and run plugins as separate processes (we call them simply plugs)
- communicate with them over `stdin`/`stdout`
- pass arbitrary Go structs encoded with CBOR
- use bidirectional message routing
- gracefully terminate a plug whenever you want (`Finish`)
It's like HashiCorp’s `go-plugin`, but:
- without the pain
- without reflection
- without type registries
- **with streaming message support** 😎 (in future)
## 🧪 Status
PlugKit is under active development.
The API will evolve slightly, but the core already works:
- ✅ Running plugins as separate processes
- ✅ Bidirectional communication (host <-> plugin)
- ✅ CBOR serialization (`fxamacker/cbor`)
- ✅ Handling multiple message types
- ✅ `Finish()` with exit code support
- ⏳ Handshake with capabilities negotiation
- ⏳ Unit tests
- ⏳ API documentation