Docs Connect Plugins Plugins Redpanda Connect’s RPC plugin framework is a powerful Apache 2.0 licensed feature that takes data streaming flexibility to the next level. By enabling you to create and load plugins at runtime using any programming language that supports gRPC, this framework opens up a world of new integration possibilities beyond Go. Whether you need to leverage specialized libraries, integrate with AI/ML tools, or build custom components in your preferred language, Redpanda Connect plugins provide the extensibility and interoperability to make it happen. Plugin types Redpanda Connect supports two types of plugins: Compiled plugins Built in Go and compiled directly into the Redpanda Connect binary. These offer maximum performance for critical workloads. Dynamic plugins External executables that communicate with Redpanda Connect via gRPC. These provide language flexibility and can be loaded at runtime without rebuilding the binary. This documentation focuses on dynamic plugins. When to use dynamic plugins Dynamic plugins are ideal when you need to extend Redpanda Connect’s capabilities without the constraints of Go. Use cases include: Use existing libraries not available in Go Write plugins in languages other than Go (such as Python) Add plugins without rebuilding the entire Redpanda Connect binary Deploy plugins independently of your main Redpanda Connect deployment Integrate with AI/ML frameworks, data science libraries, or specialized tools Architecture Dynamic plugins run as separate processes and communicate with the main Redpanda Connect process through gRPC over Unix sockets. This architecture provides the following benefits: Process isolation: Plugin crashes don’t affect the main engine. Language agnostic: Support for any language with gRPC libraries. Modular design: Each plugin maps to a single subprocess. Battle-tested communication. Uses proven gRPC technology. The system includes three compiled plugin wrappers (one for each component type: BatchInput, BatchProcessor, and BatchOutput) that handle the communication with external plugin executables. Supported languages Redpanda Connect currently provides the following SDKs: Go: Familiar environment for existing Redpanda Connect developers with type-safe interfaces Python: Access to rich ecosystem including PyTorch, TensorFlow, Hugging Face Transformers, LangChain, Pandas, and NumPy Performance considerations Dynamic plugins introduce some serialization and IPC overhead compared to compiled plugins. To minimize performance impact: The system uses batch components exclusively to amortize cross-process communication costs. Each plugin runs in a separate process with predictable resource usage. For maximum performance in critical workloads, use compiled plugins instead. Prerequisites Before creating dynamic plugins, ensure you have: Redpanda Connect v4.56.0 or later Python environment (for Python plugins) Required language SDKs installed Install Redpanda Connect Verify your version, and upgrade if necessary: rpk --version rpk connect upgrade Create your first plugin This example demonstrates creating a simple FizzBuzz processor plugin in Python. Step 1: Set up the environment # Create a new directory for your plugin mkdir fizzbuzz_plugin cd fizzbuzz_plugin # Initialize with link:https://docs.astral.sh/uv/[uv] (or use pip/conda) uv init . uv add redpanda_connect Step 2: Download the example # Download the example processor curl -o fizzbuzz_processor.py \ https://raw.githubusercontent.com/redpanda-data/connect/main/public/plugin/python/examples/fizzbuzz_processor.py Step 3: Create the plugin configuration Create plugin.yaml: name: fizzbuzz summary: Transforms numbers according to FizzBuzz rules (3=Fizz, 5=Buzz, 15=FizzBuzz) command: ["uv", "run", "fizzbuzz_processor.py"] type: processor fields: [] Step 4: Create the pipeline configuration Create connect.yaml: input: generate: interval: 1s mapping: | root = counter() % 20 + 1 # Generate numbers 1-20 pipeline: processors: - fizzbuzz: {} output: stdout: codec: lines Step 5: Run the plugin Execute the pipeline with your dynamic plugin: rpk connect run --rpc-plugins=plugin.yaml connect.yaml Expected output: 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Python plugin development Basic processor structure Python processors use the @redpanda_connect.processor decorator: import asyncio import logging import redpanda_connect @redpanda_connect.processor def transform_message(msg: redpanda_connect.Message) -> redpanda_connect.Message: # Your transformation logic here msg.payload = msg.payload.upper() return msg if __name__ == "__main__": logging.basicConfig(level=logging.INFO) asyncio.run(redpanda_connect.processor_main(transform_message)) Plugin configuration structure Each plugin requires a configuration file with the following structure: name: <plugin-name> summary: <brief-description> command: ["<executable>", "<args>"] type: <processor|input|output> fields: [] # Configuration fields (if any) Message handling The Python SDK provides access to message properties: msg.payload - Message content msg.metadata - Message metadata Standard message transformation methods Next steps Explore the example plugins in the Redpanda Connect repository Join the Redpanda Community Slack to discuss plugin development Review the Redpanda Connect source code for advanced use cases Related topics Components overview Configuration overview Getting started with Redpanda Connect Suggested labs Flatten JSON MessagesConvert JSON Messages into AvroFilter Messages into a New Topic using a RegexConvert Timestamps using RustRedact Information in JSON MessagesSearch all labs Back to top × Simple online edits For simple changes, such as fixing a typo, you can edit the content directly on GitHub. Edit on GitHub Or, open an issue to let us know about something that you want us to change. Open an issue Contribution guide For extensive content updates, or if you prefer to work locally, read our contribution guide . Was this helpful? thumb_up thumb_down group Ask in the community mail Share your feedback group_add Make a contribution 🎉 Thanks for your feedback! Logger Bloblang