Publishing Plugins — Share Extensions via Gitea Registry
Publish your plugin to a Gitea-hosted registry so other SCHEMABOUND users can discover and install it using sb plugin from-registry. Each published plugin becomes a Gitea Release containing the TTL schema file and metadata.
| Topic | Summary |
|---|---|
| What it does | Creates a Gitea release with your plugin as an asset, making it available for others to install |
| Who publishes | Plugin authors — data scientists, domain experts, community members |
| Where it publishes | Any Gitea instance: internal community registry or self-hosted customer instance |
| Required credentials | SCHEMABOUND_GITEA_URL and SCHEMABOUND_GITEA_TOKEN environment variables |
Publish Command
sb plugin publish quantum_benchmarking.ttl \
--registry-url https://gitea.schemabound-lab.internal/api/v1 \
--token $SCHEMABOUND_GITEA_TOKEN
Flags
| Flag | Required | Description |
|---|---|---|
path | Yes (positional) | Path to the .ttl plugin file |
--registry-url | Yes | Gitea API URL (or set SCHEMABOUND_GITEA_URL) |
--token | Yes | Personal access token for Gitea (or set SCHEMABOUND_GITEA_TOKEN) |
--name | No | Plugin slug name; defaults to file stem if omitted |
--compatible-runtime-version | No | Semver constraint for runtime compatibility check; default: >=0.0.0 |
--description | No | Human-readable description shown in the catalog |
Release Structure
Each published plugin becomes a Gitea Release with two assets:
| Asset | Format | Purpose |
|---|---|---|
<plugin-name>.ttl | Turtle (RDF) | The schema extension — SHACL shape definitions for new classes/properties |
plugins.json | JSON metadata | Plugin name, version, author email, description, compatible runtime constraint |
The Gitea Release tag follows semantic versioning (e.g., v0.1.0). Each new plugin version creates a separate release — installers pick the latest unless a specific version is requested.
Example: Publish Quantum State Simulation Plugin
Publish a plugin that adds state vector simulation schema for cuQuantum FFI integration (#095):
# 1. Set up credentials
export SCHEMABOUND_GITEA_URL="https://gitea.schemabound-lab.internal/api/v1"
export SCHEMABOUND_GITEA_TOKEN="<your-personal-access-token>"
# 2. Publish the plugin
sb plugin publish state_vector_simulation.ttl \
--name quantum-state-simulation \
--description "State vector amplitudes and decoherence channel schema for cuQuantum FFI integration" \
--compatible-runtime-version ">=0.4.0"
Expected output:
Ensuring registry repository exists on Gitea...
Creating release v0.1.0 on schemabound/plugin-registry...
Uploading assets to release v0.1.0...
Plugin 'quantum-state-simulation' published successfully as v0.1.0 to https://gitea.schemabound-lab.internal/plugin-registry.
Other users can now install this plugin via sb plugin from-registry quantum-state-simulation.
Webhook Sync
When a new release is pushed, the SCHEMABOUND backend automatically receives a webhook event from Gitea and processes it:
- Backend validates the HMAC-signed webhook payload using
SCHEMABOUND_PLUGIN_WEBHOOK_SECRET - Downloads the TTL asset from the new release
- Stores catalog metadata in its internal triplestore for discovery API queries
- The plugin becomes available to other users via
sb plugin from-registry
No manual steps required — publishing a release is sufficient. Other users’ installations will pick up new versions when they run from-registry.