Skip to content
Ryan M. edited this page Sep 17, 2026 · 3 revisions

Ordryn extensions

An extension is a folder with a manifest.json. Ordryn loads it at startup, renders the UI itself, and (for notifications) POSTs JSON to a webhook. There is no extension process, no plugin VM, and no custom JavaScript in host API 1.

This wiki is the authoring spec for host API 1, taken from Ordryn’s extension loader and the working example manifests in Ordryn-Extensions.

What you can build

Kind Manifest blocks What Ordryn does
Custom fields fields Stores values as {extension id}.{key} and renders sidebar editors plus list/kanban badges.
Notifications hooks + delivery + settings Subscribes to events and POSTs to an HTTPS URL the site, project, or member configures.
Sandboxed panel ui Serves an HTML file in a project iframe (sandbox without allow-same-origin).
Callbacks permissions Mints a project-scoped token (odycb_…) on JSON deliveries so a relay can call back.
Inbound actions actions Opts the extension into extra verbs on the project inbound webhook.
Combined any of the above One folder can declare fields, hooks, a panel, and tokens together.

A minimal identity-only manifest loads, but it does nothing until you add fields, hooks, and/or ui.

Pages

  • Creating an extension — folder layout, install, enablement, author checklist
  • Manifest — required identity fields and optional top-level blocks
  • Custom fields — field types, show_on, storage keys, value rules
  • Hooks — event names, when they fire, templates and placeholders
  • Delivery — webhook types, payloads, URL rules, signing, queue
  • Settings and controls — admin/project/member form fields and panel actions
  • Sandboxed UI — HTML panel, CSP, static assets
  • Callbacks and inbound — callback tokens and inbound webhook actions
  • Examples — the 18 drop-in folders in this repo

Runtime model

data/extensions/<id>/manifest.json
        │
        ▼
 Ordryn scan at startup (not hot-reloaded)
        │
        ▼
 Admin → Extensions (site enable)
        │
        ├── Settings → Integrations (“Notify me”, member destinations)
        └── Project settings → Extensions
                (visible if project settings, member settings, fields, or ui)
                │
                ├── fields  → sidebar / list / kanban
                ├── hooks   → HTTPS POST
                ├── ui      → sandboxed iframe
                └── inbound → POST /api/v2/webhooks/inbound
                        │
                        └── JSON may include callback_token
                                → POST /api/v2/ext/callback

Override the scan path with EXTENSIONS_DIR (legacy alias: MODS_DIR).

Clone this wiki locally