Skip to main content
Embed recipes inside IDEs, CMS platforms, or chat apps with native host UX.
The user triggers the plugin; the host forwards context to a local or remote recipe runner.
When to Use: Building IDE extensions, CMS plugins, chat integrations, or any scenario where recipes need to be embedded into an existing platform with native UX.

How It Works

Plugin Mode wraps recipes in a platform-specific adapter that translates between the host platform’s API and PraisonAI’s HTTP interface.
Note: PraisonAI does not include an official plugin SDK. This model documents an integration pattern for building plugins that connect to PraisonAI via HTTP.

Pros & Cons

  • Native UX - Feels like part of the host platform
  • Context-aware - Access to platform context (files, selection, etc.)
  • User-friendly - No CLI or API knowledge needed
  • Discoverable - Users find recipes in familiar UI
  • Streaming support - Real-time feedback in UI

Step-by-Step Tutorial

1

Choose Your Platform

2

Start Recipe Runner

3

Create Plugin Manifest

4

Implement Plugin Logic

See platform-specific examples below.

VS Code Extension Example

Obsidian Plugin Example

Slack App Example

Troubleshooting

Ensure the sidecar is running and accessible:
Configure CORS on the sidecar:
Verify API key is configured correctly:
Consider using streaming for better UX:

Security & Ops Notes

Security Considerations
  • API key storage - Use platform’s secure storage (VS Code SecretStorage, etc.)
  • Input sanitization - Validate user input before sending to recipes
  • Network security - Use HTTPS for remote runners
  • Permissions - Request minimal permissions in plugin manifest
  • Rate limiting - Implement client-side rate limiting

Plugin Distribution

Best Practices

Use VS Code SecretStorage or the equivalent so API keys never sit in plaintext settings or source.
Forward the selection or active file rather than the whole workspace to keep requests small and reduce leakage.
Wire the plugin to /v1/recipes/stream so users see incremental output inside the host UI instead of a frozen progress bar.
Keep platform-specific glue thin and point every adapter at the same sidecar or remote runner to avoid duplicating recipe logic.

Local HTTP Sidecar

Run the sidecar plugins connect to

Remote Managed Runner

Point plugins at a hosted runner