Ask Kepler for one
Say what you need after/plugins:
/plugins on its own tells you what is installed and what is worth adding.
Kepler can look at plugins in any posture. It can propose installing, updating, switching, removing a plugin or adding a marketplace only in Assist and Yolo, and each of those waits for you to confirm a card, Yolo included. The install card lists the plugin’s hooks and MCP servers with the exact commands they run, then its skills, commands and agents.
Install from Settings
Open Settings > Customize, pick the Plugins chip, and choose Add plugin. The browser has two ways in:- Marketplaces. Add a marketplace once, as
owner/repo, a git URL or a folder, and browse it any time with search and its categories. Kepler keeps a local copy. Refresh fetches it again. Removing a marketplace keeps the plugins you installed from it. - From a link. Install one plugin from a GitHub
owner/repo, a git URL or a folder.
What a plugin adds
Plugin items are read-only. Switch a skill or hook off, or update the plugin, to change it.
A plugin’s agents keep to the chat’s posture. An agent that asks for shell or file tools can still change nothing in Observe.
Plugin settings
A plugin can ask for settings, such as a region, a URL or a token. Those plugins get a Settings action. Values marked sensitive go to your operating system keychain and are never shown again, only “Saved”. A channel’s own settings, such as its bot token, are asked for when you connect it on the Gateway page.Servers that need a sign-in
A plugin’s MCP server that signs in through your browser is listed in Settings > Tools & MCP, tagged with the plugin’s name, and shows Sign in until you press Connect on its row. The install card, an update, and/plugins say which of a plugin’s servers still need a sign-in.
A plugin can declare the sign-in in its .mcp.json the way Claude Code reads it, with an oauth block:
clientIdis an app the vendor registered. With one, Kepler skips registering an app of its own.callbackPortis the local port the sign-in returns to.scopesis one space-separated string.- A server that declares nothing is asked whether it needs a sign-in, the same as one you add yourself.
- Where Kepler has its own registered app for a server, such as Slack’s, it signs in with that one instead, so the consent page names Kepler. A client you declare in your own
~/.kepler/mcp.jsonstill wins. - A malformed or unsupported
oauthblock shows Config error, and that server does not start.
Trust
- Nothing changes without you. Kepler can only propose, and every change waits for your card.
- Kepler keeps its own copy of each plugin and records a fingerprint of its files. If those files change on disk afterwards, the plugin stops loading and shows Changed on disk until you review it again. Kepler’s own file tools cannot write there.
- Check for update fetches the source again. A change comes back as a review, and nothing changes until you approve it.
- Plugin hooks follow the same rules as yours: they can block or ask, never approve, and commands on the always-blocked list are refused.
Make a plugin
A plugin is a folder:plugin.json is optional. Without it, Kepler reads the folders above by name. A marketplace is a repository with .kepler-plugin/marketplace.json listing its plugins.
Inside the plugin, ${KEPLER_PLUGIN_ROOT} is the plugin’s folder and ${KEPLER_PLUGIN_DATA} is a folder for its own state, deleted with the plugin. Hook commands and MCP servers also get both as environment variables. A setting the plugin asks for is filled into its MCP servers as ${user_config.KEY} and reaches its hooks as KEPLER_PLUGIN_OPTION_<KEY>.
To give a plugin an icon, add logo or icon to its manifest, or put assets/logo.svg (or .png) in the plugin folder. SVG, PNG, JPEG and WebP up to 256 KB work.
Plugins made for other agents
Kepler also installs plugins and marketplaces in the Claude Code and Cursor formats. When a plugin has no.kepler-plugin/ folder, Kepler reads .claude-plugin/, then .cursor-plugin/. The contents are the same format. Plugins you already installed for Claude Code on this machine are listed under From Claude Code with an Import button.
Where things live
Where to go next
Customize
Where plugins and everything they bring are managed.
Hooks
What a plugin’s hooks can and cannot do.
Channels
Plugins that bring a new chat channel.
Extend Kepler
Integrations, skills, commands and specialists.