Skip to content
ChatJS
Esc
↑↓navigate↵open⌘Jpreview
On this page

Using Plugins

Install and configure optional ChatJS capabilities

Plugins add capabilities such as project organization, message feedback, connectors, and analytics. Each plugin installs source into your app and registers its server, browser, or native EVE contributions. Browse the plugin catalog to choose what you need.

Using a plugin

Run the install command from your ChatJS app:

bunx chat-js@alpha add projects

The CLI copies the plugin source, installs its dependencies, and generates the registrations. You do not manually add server factories and client declarations to configuration arrays. Some plugins also add thin Next.js routes or EVE hooks.

You can select plugins during chat-js create. Each plugin’s guide lists its setup requirements and configuration.

Database migrations

For a plugin that declares database tables, generate and review a migration after installation:

bun run db:generate
# Review the generated SQL before applying it to your database.
bun run db:migrate

New apps receive an initial migration for their selected plugins. Adding or syncing a plugin preserves that history and does not apply SQL. Removing source does not automatically remove stored data. Use chat-js remove <id> to disconnect installed plugins. Customized files require an explicit backup choice, and schema source is retained for migration generation. Automatic upgrades from older ChatJS templates are not supported.

Configuration

Installed source determines which capabilities are available. Keep runtime preferences in chat.config.ts and credentials in the environment variables listed by the plugin. For example, Follow-up Suggestions also needs its enabled option set to true.

The CLI updates generated plugin lists. Edit the installed plugin components directly, or wrap them in ordinary React components. Typed slots in the app layout determine where contributions appear. composer-controls.ts contains app-owned tool controls, while attachment and connector slots sit beside them in the composer JSX.

How plugins fit into your app

File or directory What you use it for
chatjs/plugins/<id>/ Read and customize the installed implementation
chatjs/plugins/<id>/chatjs.json Declare installed files and contributions
app/ and agent/ adapters Register routes, hooks, and instructions in their framework locations
chatjs/generated/ Inspect generated registrations without editing them

Plugins can provide web server contributions, browser UI, and chat lifecycle callbacks. These use separate entrypoints so browser bundles do not load credentials and native EVE does not load Next.js request helpers. See the Plugin API for the contracts.

After a direct shadcn installation or changes to a descriptor, regenerate composition:

bunx chat-js@alpha sync

Creating a plugin

Built-in and external plugins use the same installation format. Follow Create a plugin to package your source, declare contributions, and verify installation. Tools, gateways, storage, and sandboxes have their own contracts. Use the registry guide to choose the right extension type.

Last updated on Nov 8, 2026

Was this page helpful?