Skip to content
Robin Kooyman edited this page Oct 30, 2026 · 3 revisions

Beacon plugin template

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

Pages

  1. Getting started: make a repository from the template, rename the plugin and choose the Beacon version.
  2. Scalar functions: write native and SQL functions.
  3. Planner hooks: let Beacon prune files for a filter on a plugin function.
  4. File formats: let Beacon read and write a new type of file.
  5. Table types: let a table read from and write to another system.
  6. Testing: test the plugin without a Beacon server, then in Beacon.
  7. Packaging and releasing: pack the plugin and publish a GitHub release.
  8. Installing: install, update and remove a plugin in Beacon.
  9. Troubleshooting: find the cause of an error message.

The short path

  1. Click Use this template on GitHub. Clone the new repository.
  2. Rename the plugin. See Getting started.
  3. Write your code in native/src/ and sql/functions.sql.
  4. Run cargo test --manifest-path native/Cargo.toml.
  5. Push a tag v<version>. The release workflow builds the archives.
  6. In Beacon, run INSTALL <name> FROM 'github:<owner>/<repo>@v<version>'.

Versions

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:

Clone this wiki locally