Skip to main content
The Action Palette is a powerful feature that lets you run one-time AI actions without creating permanent actions. Think of it as a quick input for ad-hoc AI requests. Action Palette

Opening the Action Palette

Configure Hotkey

  1. Open Obsidian Settings
  2. Go to Hotkeys
  3. Search for “Local GPT: Action Palette”
  4. Click + and set your hotkey (recommended: ⌘ + J or Ctrl + J)

Using the Command Palette

Alternatively, open the command palette and search for “Local GPT: Action Palette”.

Features

Custom Prompts

Type any prompt directly into the Action Palette to get an AI response:
1

Open the Action Palette

Press your configured hotkey (e.g., ⌘ + J)
2

Type your prompt

Enter a natural language prompt like “Explain this code” or “Create a summary”
3

Submit

Press Enter to execute the action
The Action Palette will use any selected text as context for your prompt.

Provider & Model Selection

The Action Palette shows your currently configured provider and model at the top. You can switch providers on-the-fly:
showActionPalette(editorView, insertPos, {
  modelLabel: [
    provider.name,
    modelToShow,
    creativityLabel,
  ]
    .filter(Boolean)
    .join(" · "),
  
  getProviders: async () => {
    const aiProviders = await aiRequestWaiter.promise;
    return aiProviders.providers
      .filter((p) => Boolean(p.model))
      .map((p) => ({
        id: p.id,
        name: p.model,
        providerName: p.name,
      }));
  },
  
  onProviderChange: async (providerId: string) => {
    this.actionPaletteProviderId = providerId;
    this.actionPaletteModel = null;
  },
});

How to Change Provider

The Action Palette includes provider/model selection controls. Click on the provider badge to:
  • Switch between configured AI providers
  • Select a different model for the current provider
  • Change creativity settings (temperature)
These changes only affect the Action Palette and don’t modify your global settings.

Creativity Control

Adjust the creativity (temperature) for your prompt:
  • None: Most deterministic responses
  • Low: Balanced and focused (default)
  • Medium: More creative variations
  • High: Most creative and diverse outputs
const creativityKey = this.actionPaletteCreativityKey ?? 
  this.settings.defaults.creativity ?? "";

const temperatureOverride = CREATIVITY[creativityKey]?.temperature;

File Selection for Context

The Action Palette allows you to select additional files to include as context:
1

Click the file selector

Look for the file picker icon in the Action Palette
2

Choose files

Select markdown (.md) or PDF (.pdf) files from your vault
3

Use as context

The content of selected files will be included in the AI request
getFiles: () => {
  return this.app.vault
    .getMarkdownFiles()
    .concat(
      this.app.vault
        .getFiles()
        .filter((f) => f.extension === "pdf"),
    )
    .map((file) => ({
      path: file.path,
      basename: file.basename,
      extension: file.extension,
    }));
}
Selected files are processed and included as additional context for your prompt, making responses more informed.

System Prompts

You can reuse system prompts from your existing actions:
getSystemPrompts: () => {
  return getRunnableActions(this.settings.actions)
    .filter((action) => action.system)
    .map((action) => ({
      name: action.name,
      system: action.system!,
    }));
}
This allows you to apply the behavior of saved actions to new prompts without recreating them.

Example Use Cases

  1. Select a code snippet
  2. Open Action Palette (⌘ + J)
  3. Type: “Explain this code in simple terms”
  4. Press Enter
  1. Open Action Palette
  2. Select relevant research files using the file picker
  3. Type: “Based on these notes, what are the key themes?”
  4. Get a contextual summary
  1. Select your draft text
  2. Open Action Palette
  3. Set creativity to “High”
  4. Type: “Continue this story with an unexpected twist”

Keyboard Shortcuts

Enter
keyboard
Submit the prompt and execute the action
Escape
keyboard
Cancel and close the Action Palette

Implementation Details

export function showActionPalette(
  view: EditorView,
  pos: number,
  options: ActionPaletteOptions,
) {
  const { fakeSelections, previousSelectionRanges, previousCursor } =
    captureSelectionSnapshot(view);

  view.dispatch({
    effects: ShowActionPaletteEffect.of({
      pos,
      options,
      fakeSelections,
      previousSelectionRanges,
      previousCursor,
    }),
  });
}
The Action Palette preserves your cursor position and selection, even while the palette is open.

Next Steps

Enhanced Actions

Learn about RAG-powered context enhancement

Vision Support

Use AI to analyze images in your notes

Build docs developers (and LLMs) love