Repository navigation
Home
Robin Kooyman edited this page Oct 30, 2026
·
3 revisions
This wiki tells you how to write a plugin for Beacon with the template repository.
A plugin adds these items to Beacon:
| Item | Example in the template | Page |
|---|---|---|
| Native scalar functions, in Rust |
example_add_one, example_hypot, example_in_box, example_round
|
Scalar functions |
| Planner hooks for native functions |
example_add_one, example_in_box
|
Planner hooks |
| SQL functions | example_add_two |
Scalar functions |
| File formats, in Rust | example_tsv |
File formats |
| Table types, in Rust | example_memory |
Table types |
- Getting started: make a repository from the template, rename the plugin and choose the Beacon version.
- Scalar functions: write native and SQL functions.
- Planner hooks: let Beacon prune files for a filter on a plugin function.
- File formats: let Beacon read and write a new type of file.
- Table types: let a table read from and write to another system.
- Testing: test the plugin without a Beacon server, then in Beacon.
- Packaging and releasing: pack the plugin and publish a GitHub release.
- Installing: install, update and remove a plugin in Beacon.
- Troubleshooting: find the cause of an error message.
- Click Use this template on GitHub. Clone the new repository.
- Rename the plugin. See Getting started.
- Write your code in
native/src/andsql/functions.sql. - Run
cargo test --manifest-path native/Cargo.toml. - Push a tag
v<version>. The release workflow builds the archives. - In Beacon, run
INSTALL <name> FROM 'github:<owner>/<repo>@v<version>'.
This wiki is for Beacon main at commit 82839b2: SDK ABI 6 and DataFusion 54.
The SDK is not in a Beacon release yet. Its API can change.
The Beacon repository has the reference documents:
For Beacon main at 82839b2 (SDK ABI 6, DataFusion 54). Template repository: maris-development/beacon-plugin-template.