Docs · Extend

Plugins

Plugins add behaviour that pages and modules cannot. Seven ship with Caelo; the AI can write more. Every plugin waits for an Owner to activate it.

A plugin adds behaviour that pages and modules cannot: storing form entries, moderating comments, handling consent, running a newsletter. Visitors see a plugin as a Web Component on the page. The AI sees it as tools and skills. There is no plugin marketplace. A plugin either ships with a Caelo release or is installed on your site at runtime.

Shipped plugins

Seven plugins ship with Caelo, in packages/plugins/:

  • auth: visitor sign-up, login, sessions and password reset. Its core logic is locked from AI rewriting; the AI can only configure it, behind an approval.
  • comments: threaded visitor comments with AI-assisted moderation.
  • consent-manager: consent categories, tags that wait for consent, embeds held back until the visitor agrees, proof of consent.
  • forms: contact and generic form submissions.
  • international-site: languages, URL strategy and hreflang. See Multilingual sites.
  • newsletter: subscriber list with double opt-in and campaign sends.
  • ratings: 1 to 5 star ratings per page.

None of them runs until an Owner activates it at /settings/plugins. Shipping with a release buys an audit trail and a signed manifest, not auto-start.

Two ways a plugin runs

Shipped with a releaseInstalled at runtime
Sourcepackages/plugins/<slug>/, changed by reviewed pull requestStored in the database; written by the AI or uploaded by the Owner
Proof of originSigned manifest (Ed25519), checked at loadSHA-256 digest of manifest and source
Where the backend runsIn the admin processDeno subprocess with no file, network or environment access
CapabilitiesFixed at load (today)Base set plus Owner grants per exact artifact

The target model is the same for both: who wrote a plugin grants it nothing, and every capability beyond a small base is an Owner grant bound to the exact version. Runtime-installed plugins already work that way. Shipped plugins do not yet. They run in-process without the sandbox and receive their capabilities when they load. The project tracks this as a defect, not as an accepted exception. Treat the seven shipped plugins as part of Caelo's core code: they are reviewed and released with it, not isolated from it.

Both kinds pass the same static validator before every load, and both render in the visitor's browser as Web Components in Shadow DOM.

Next

Something wrong or missing on this page? Open an issue on GitHub