v1.8.0
Extensions now run as drop-in plugin binaries. Build one against the SDK, drop it in a directory, and point a stock Yardmaster at it with --plugins-dir or YARDMASTER_PLUGINS_DIR. No recompile of the server.
- New package github.com/dcadolph/yardmaster/sdk/plugin: fill an Extension with the same interfaces the in-process SDK registers and call plugin.Serve from main. One plugin serves any mix of tools, notifiers, AI providers, and secret engines.
- The server launches each executable in the plugins directory at startup, asks what it provides, and registers every seam. A plugged-in extension validates, executes, masks, and audits exactly like a compiled-in one.
- Plugins speak gRPC over a local socket with mutual TLS, supervised by the server. Tool output streams into the run log as it happens, and dynamic secret leases revoke through the plugin that minted them.
- The worker command takes the same flag, so plugged-in tools run wherever runs execute.
- A plugin that fails to launch is logged and skipped. A name collision with a built-in or another plugin stops startup with a clear message.
- The Extend in Go guide covers both paths, compile in or plug in, at yardmaster.dev/docs/sdk.