Adopting a plugin-based architecture offers greater flexibility, but has traditionally had several tradeoffs: naming, communication, discovery, and versioning. This talk will explore a design used in a large Go OSS tool that is idiomatic, module aware, and interface driven.