Develop a plugin SDK
A language SDK lets plugin authors focus on their external system. It handles communication with Tenon, startup and shutdown, and the results of sending or receiving records.
Keep responsibilities clear
| Component | Responsibility |
|---|---|
| SDK | Tenon communication, lifecycle, bounded submission, and completion results |
| Plugin | External clients, business configuration, payload meaning, and external acknowledgement or replay |
| Scaffold and bundler | A usable starter project and an installable plugin bundle |
Use APIs that fit the language while preserving Tenon's behavior. Different callback or async styles must still agree on ordering, backpressure, completion, and failure outcomes.
Approach the work
- Read the shared contract and compare the existing Rust and Java implementations.
- Establish the IPC integration for the target language.
- Support Source, Sink, and combined plugins with a clear lifecycle for each.
- Verify behavior through generated plugins and a real Runner, including failure and shutdown.
Implementation details
Use the code repository for protocol fields, callback rules, ownership, and compatibility requirements:
- SDK implementation contract — shared behavior across languages.
- Rust SDK — the Rust API and implementation entry point.
- Java SDK — the Java API and implementation entry point.
- Verification instructions — toolchains and checks for a contribution.