Skip to main content
Plugins extend CliDeck without modifying the core. A plugin can observe terminal output, transform input, react to status changes, create and control sessions, add toolbar buttons, and communicate between backend and frontend. The plugin API is the same one the bundled plugins use — Autopilot, for example, is built entirely on it.

Bundled Plugins

CliDeck ships with three plugins out of the box. They’re automatically installed into ~/.clideck/plugins/ on first run.

Trim Clip

A clipboard utility that cleans up copied text. Click the scissors icon in the terminal toolbar to trim trailing whitespace from every line in your clipboard. Useful when copying code from terminal output that has extra spaces.

Autopilot

A project-level workflow router that automatically forwards output between role-assigned agent sessions. See the dedicated Autopilot page for full documentation.

Voice Input

Speak to your agents instead of typing. Press a hotkey (default: F4) to start recording, press again to stop. Your speech is transcribed and typed into the active terminal session. Two transcription backends are available: The replacements file uses a simple format — one rule per line:
The | all flag makes the replacement case-insensitive.
Voice Input requires microphone access. Your browser will ask for permission the first time you record.

Installing Custom Plugins

Each plugin is a folder inside ~/.clideck/plugins/. There are two kinds: Plugin without dependencies — loaded immediately on startup:
Plugin with npm dependencies — requires a one-time install:
Plugins without dependencies are loaded on restart. Plugins with dependencies appear in the Plugins panel with an Install button — click it to run npm install in the plugin directory, then the plugin loads.
The install field currently only supports "npm". If your plugin needs non-Node dependencies (Python, Rust, etc.), use scripts.postinstall in your package.json — npm runs it automatically during install.
Plugins run with full Node.js access — same trust model as npm packages. Only install plugins you trust or have reviewed.

Managing Plugins

Plugins appear in the Plugins panel (circuit icon in the sidebar rail). Each plugin shows its icon, name, and settings. If a plugin has settings, they show up as controls (toggles, dropdowns, text fields, number inputs) that you can change on the fly. Install state is tracked in CliDeck’s config. If a plugin’s node_modules is deleted manually, CliDeck detects this on next startup and resets the install state — you’ll see the Install button again. When a bundled plugin is updated to a new version, its install state is also cleared so new dependencies get picked up. To remove a custom plugin, click Delete in the plugin’s settings panel, or delete its folder from ~/.clideck/plugins/ and restart CliDeck.

Creating a Plugin

The Manifest

A clideck-plugin.json manifest lets you define your plugin’s identity and settings. If omitted, the folder name is used as the ID and name.

Setting Types

All setting types support an optional description field for hint text below the control. Settings are validated against the manifest — type, allowed options, and min/max are enforced automatically.

Backend API (index.js)

The backend entry point exports an init function that receives the plugin API:

Session Hooks

Input hooks run as a chain — each hook’s return value becomes the input for the next hook. This lets multiple plugins transform input in sequence.
onSessionInput and onSessionOutput receive raw terminal data (keystrokes, escape sequences, ANSI codes). If you need clean, human-readable text, use onTranscriptEntry instead — it delivers complete lines with all terminal noise stripped out.

Session Info

Frontend Messaging

Backend and frontend communicate through namespaced messages:
Messages are automatically namespaced as plugin.<id>.<event> — no collision between plugins.

Session Control

Config Access

Transcript and Screen

Toolbar and Project Actions

Session Pills

Session pills are sidebar entries that represent background tasks (like Autopilot). They appear under their project, similar to sessions.

Settings

Utilities

Frontend API (client.js)

The optional frontend entry point is an ES module:

Toast Notifications

Show toast notifications from your plugin. Returns an object with a dismiss() method.
Multiple toasts from different plugins stack automatically without overlapping.

Static Assets

Files in the public/ subdirectory are served at /plugins/<id>/<filename>. Use this for images, CSS, or additional scripts your plugin needs.

Example: Simple Logger Plugin

A minimal plugin that logs when agents start and stop working:
clideck-plugin.json:
index.js:

Error Handling

Plugin errors are caught and logged — one plugin can’t crash CliDeck or affect other plugins. If your plugin throws during init, it’s unloaded and its hooks are removed.