Skip to main content
Docs/Capabilities System
DocsCapabilities System
Free

Capabilities System

How GenMB decides which built-in services your app needs, then injects the matching SDKs into your generated code, no configuration required.

What Capabilities Are

A capability is a built-in GenMB service with three things: a JSON definition, a backend proxy, and a client SDK. The capability registry loads every definition at startup and exposes them to the code generation pipeline so the AI knows what is available.

See the full list of 12 built-in capabilities on the Services & SDKs page. The capability system is what wires those services into your app automatically.

Capabilities are loaded once and cached, the registry is a singleton in the API server. Adding a new capability requires a JSON definition under api/services/definitions/ and a matching SDK under api/static/sdk/.

How Detection Works

Detection runs after code generation. It scans your prompt and the generated source for hint patterns defined in each capability JSON, then reconciles the result against any manual overrides from the Services panel.

Hints

Each capability lists positive phrases (e.g., "voice booking", "talk to AI") that strongly imply the service is needed.

Exclusions

Negative phrases (e.g., "voice memo" for the Voice Agent) prevent false positives when the prompt mentions adjacent but unrelated features.

Manual override

A capability you toggled in the Services panel takes precedence over auto-detection on the next code save.

Plan gating

Capabilities that require a paid plan are still injectable in code, but the SDK calls fail at runtime with a plan-gated error if the owner is on the wrong tier.

Injection Order & Markers

Each capability declares an injection priority so dependent services can rely on earlier ones. Auth must inject before RBAC, for example.

The injector wraps inserted code in HTML comment markers - <!-- GenMB Capabilities START --> and <!-- GenMB Capabilities END -->. On regeneration, the injector strips everything between the markers before re-injecting, so SDK code is never duplicated.

Don't edit code inside the GenMB markers, your edits will be overwritten on the next regeneration. Anything outside the markers is yours to keep.

Overriding Auto-Detection

The Services panel in the app editor sidebar shows every capability and its current state - auto-detected, manually enabled, or disabled.

  • Toggle a service on to inject its SDK regardless of detection.
  • Toggle a service off to suppress injection even if the detector flagged it.
  • Manual choices persist across regenerations.
  • Re-enable auto-detection by clearing the manual override on a service.

Capabilities vs Plugins

The two systems look similar but solve different problems. Knowing which one a feature belongs to helps you find the right docs.

Capabilities

GenMB-operated services with built-in SDKs and proxies. File storage, auth, AI chatbot, vector DB, voice agent, etc. No third-party accounts or API keys.

View Services & SDKs →

Plugins

Third-party integrations configured per app. Stripe, Supabase, Clerk, OpenAI, Shopify, and 70+ more. Bring your own keys; we inject the snippets.

View Plugins & Integrations →

FAQs

How is the Capabilities System different from Plugins?
Capabilities are built-in GenMB services with their own SDK, proxy, and quota model - file storage, auth, AI chatbot, vector DB, voice agent, etc. Plugins are third-party integrations (Stripe, Supabase, Clerk, etc.) configured per app. Both are injected into generated code, but capabilities are operated by GenMB while plugins are operated by external providers.
Can I disable auto-detection?
Yes. Open the Services panel in the app editor sidebar to toggle individual capabilities on or off. Your manual choice overrides the detector and persists across regenerations.
What happens if the detector picks the wrong service?
You can fix it in two ways: edit your prompt to be more specific, or open the Services panel and toggle the unwanted service off. The next code save re-injects SDKs based on the updated capability set.
Are capabilities loaded on every page?
Only the SDKs for enabled capabilities are injected into your app's HTML. Disabled capabilities add zero bytes, there is no runtime cost for services you don't use.

Ready to build?

Create your first app for free, no credit card required.