Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

TopicSummary
What it doesCreates a Gitea release with your plugin as an asset, making it available for others to install
Who publishesPlugin authors — data scientists, domain experts, community members
Where it publishesAny Gitea instance: internal community registry or self-hosted customer instance
Required credentialsSCHEMABOUND_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

FlagRequiredDescription
pathYes (positional)Path to the .ttl plugin file
--registry-urlYesGitea API URL (or set SCHEMABOUND_GITEA_URL)
--tokenYesPersonal access token for Gitea (or set SCHEMABOUND_GITEA_TOKEN)
--nameNoPlugin slug name; defaults to file stem if omitted
--compatible-runtime-versionNoSemver constraint for runtime compatibility check; default: >=0.0.0
--descriptionNoHuman-readable description shown in the catalog

Release Structure

Each published plugin becomes a Gitea Release with two assets:

AssetFormatPurpose
<plugin-name>.ttlTurtle (RDF)The schema extension — SHACL shape definitions for new classes/properties
plugins.jsonJSON metadataPlugin 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:

  1. Backend validates the HMAC-signed webhook payload using SCHEMABOUND_PLUGIN_WEBHOOK_SECRET
  2. Downloads the TTL asset from the new release
  3. Stores catalog metadata in its internal triplestore for discovery API queries
  4. 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.