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:
| 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:
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.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’snode_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
Aclideck-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 aninit 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: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 adismiss() method.
Static Assets
Files in thepublic/ 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:Error Handling
Plugin errors are caught and logged — one plugin can’t crash CliDeck or affect other plugins. If your plugin throws duringinit, it’s unloaded and its hooks are removed.