Extensions
Extend Summon's functionality with custom extensions. Add new commands, integrate with third-party services, or create specialized workflows.
What Are Extensions?
Extensions are Python modules that add new functionality to Summon. They can:
- Add custom search providers
- Create new commands with rich previews
- Integrate with APIs and external services
- Handle forms and user input
- Execute shell commands and scripts
Installing Extensions
Manual Installation
- Download the extension folder
- Place it in
~/.summon/extensions/ - Restart Summon or refresh extensions in Settings
Extension Structure
Each extension is a folder containing:
my-extension/
├── manifest.json # Extension metadata and config
├── main.py # Entry point
└── icons/ # Optional custom icons
Built-in Extensions
Obsidian Workspace
Quickly switch between Obsidian vaults and open recent notes.
Features:
- Search all vaults
- Open recent notes
- Quick vault switching
Notes Viewer
Browse and search your Quick Notes directly from Summon.
Quick Note
Create new notes instantly without leaving Summon.
Creating Extensions
Want to create your own extension? Check out the Creating Extensions guide.
Extension Capabilities
Extensions can use these features:
- Rich Previews: Markdown, metadata tables, forms, code blocks
- Multiple Actions: Open URLs, copy text, run commands, paste text
- Form Handling: Text fields, selects, checkboxes, and more
- SF Symbols: Native macOS icons
- Keyboard Shortcuts: Custom hotkeys for extension items
Permissions
Extensions declare permissions in their manifest:
| Permission | Description |
|------------|-------------|
| shell | Execute shell commands |
| storage | Persistent storage |
| clipboard | Read/write clipboard |
| network | Make HTTP requests |
Extension Settings
Extensions can define configuration options in their manifest using config_schema. Users can modify these settings in Settings → Extensions → [Extension Name].
Example configuration:
{
"config_schema": {
"api_key": {
"type": "string",
"description": "Your API key",
"default": ""
},
"max_results": {
"type": "number",
"description": "Maximum results to show",
"default": 10
}
}
}
Runtime Modes
Extensions can run in different modes:
| Mode | Description |
|------|-------------|
| persistent | Stays running, faster responses |
| on_demand | Starts when triggered, lower memory |
Configure the mode in manifest.json with the runtime field.