Plugins
Editions: Open Source · Free Cloud · Pro
Building a plugin? Start at Understanding Plugin Architecture — marketplace, Cloudinary walkthrough, UI, and publish.
Plugins extend Engine GraphQL, REST, Console, and content fields. There is one install class: system plugin. Project exposure is activation, not a second plugin type.
SignedPluginPackage → SystemCatalog → EnginePluginHost → DeclaredCapabilities
ProjectActivation → DeclaredCapabilities → System/Project API + Console UI
Install vs activate
| Step | Where | Who |
|---|---|---|
| Install / update / health | Engine host catalog | Super-admin / operator |
| Activate / config / secrets | Project Settings → Plugins | Project admin |
| Call GraphQL/REST | Only after activation when the plugin declares project.* capabilities |
App / SDK |
Installation, binary lifecycle, version, checksum, and publisher trust stay system-owned. The project stores only activation state and project-specific secrets/config.
Capabilities
Declare these in config.yml instead of type::
system.graphql/system.rest— host-wide (ext_*GraphQL, unprefixed REST)project.graphql/project.rest— per-project (plg_*GraphQL,/{pluginId}/…REST, activation required)console.routes/console.settings— Console surfaces (official signed UI or host-rendered forms)content.fields— model field descriptorssystem.events— optional event sink (additive; RPC handshake unchanged)
Public prefixes
Keep existing public plg_* and system ext_* field names. Client queries do not need to change for this refactor.
Console trust
Compiled Console JS loads only from Apito-signed official bundles (checksum + official + signed + project activation). Third-party plugins use host-rendered settings forms, actions, and status cards. No third-party JavaScript in Console.
Official plugins
Activate from Project Settings → Plugins after a super-admin installs them on the Engine. Secrets stay in config.yml env_vars overlay.
- Discord Notifications (
hc-discord-plugin) — catalog - Stripe Billing (
hc-stripe-plugin) — catalog - Cloudinary (
hc-cloudinary-plugin) — catalog
Public catalog: apito.io/plugins. Submit new plugins via PR to apito-io/plugins after a GitHub Release exists. Engine never clones plugin source.
Roles
| Who | Can |
|---|---|
| Super-admin | Install / update / uninstall (apito plugin add or Administrator → Plugins) |
| Project admin | Activate / configure already-installed plugins |
| Author | Release zips + registry PR |
Plugin binary is host code. Registry approval is not a sandbox.
Guides
- Capabilities
- Security
- Go hello-world (minimal SDK sample — production walkthrough is Writing Your First Plugin)
- JavaScript hello-world
- Migrate from
type: project - Troubleshooting