[GH-ISSUE #2435] Enhanced AI Flexibility: Multi-Source Routing, Task-Based Granularity & Manual Triggers #1472

Open
opened 2026-03-02 11:57:33 +03:00 by kerem · 1 comment
Owner

Originally created by @miracloon on GitHub (Jan 30, 2026).
Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/2435

Describe the feature you'd like

I would like to suggest a few improvements to the AI configuration and interaction logic to make Karakeep more flexible for advanced workflows.

A. Transition from Env Vars to UI-Based Multi-Source Routing
Instead of a single global BaseURL configured in environment variables, I suggest adding an AI Management Panel in the UI that allows users to:

  1. Define Multiple Sources: Add distinct API endpoints (e.g., Source A: OpenAI Official, Source B: Custom OpenAI-Compatible Provider, Source C: Google Gemini).
  2. Task-Based Routing: Instead of the current "Text Model / Image Model" split, allow users to assign specific models to specific tasks/intents:
  • Summarization: Assign a "smart" model (e.g., claude-3.5-sonnet from Source A).
  • Tagging: Assign a "fast/cheap" model (e.g., gpt-4o-mini from Source B).
  • Embeddings: Assign a dedicated embedding model (e.g., text-embedding-3 from Source C).

B. Full Prompt Override
Add an option to completely override the system's default summary prompt. Currently, we can only append instructions. A full override would allow users to implement strict structure templates without interference from the default system instructions.

C. Manual Trigger for Browser Extension
Add a "Manual Mode" toggle in the extension settings.

  • Auto (Default): Current behavior.
  • Manual: Saving a page only captures the link. The user must manually click "Generate Summary/Tags" to trigger the AI.

Describe the benefits this would bring to existing Karakeep users

  1. Solves the "Split Provider" Problem: Many users (like myself) use a specific high-performance provider for Chat/Summarization but a completely different provider for Embeddings (because the Chat provider might not offer Embedding endpoints). The current single-BaseURL config makes this impossible.
  2. "Granular" Cost & Performance Optimization: Users can route simple tasks (tagging) to cheap models and complex tasks (summarization) to smart models without being locked into one provider.
  3. Better User Experience: Switching models would no longer require modifying backend files and restarting the container.
  4. Cost Saving: The "Manual Mode" in the extension prevents wasting tokens on accidental clicks or simple "read-later" pages that don't require deep AI analysis.
  5. Higher Quality Outputs: Full prompt override ensures the AI adheres strictly to user-defined templates.

Can the goal of this request already be achieved via other means?

No, not fully.

  • Regarding Multi-Source: Currently, if my affordable Chat API provider does not support Embeddings, I am forced to choose between having Summaries or having Embeddings; I cannot have both because I cannot configure two different BaseURLs via the current environment variables.
  • Regarding Prompts: I can append instructions, but I cannot remove the system's default framing, which sometimes conflicts with my custom output format.
  • Regarding Trigger: There is no way to prevent the extension from automatically consuming tokens upon saving.

Have you searched for an existing open/closed issue?

  • I have searched for existing issues and none cover my fundamental request

Additional context

I understand that moving configuration from Environment Variables to the Database/UI is a significant architectural change. However, as models become more multimodal and API providers more fragmented, the ability to "mix and match" services is becoming essential.

My specific pain point is that my preferred Embedding service and my preferred Chat service are on different hosts. The proposed "Task-Based Routing" would solve this elegantly while making the tool much more powerful for everyone.

Thank you so much for your hard work on this project—it is already an excellent tool, and I hope these suggestions help in its evolution!

Originally created by @miracloon on GitHub (Jan 30, 2026). Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/2435 ### Describe the feature you'd like I would like to suggest a few improvements to the AI configuration and interaction logic to make Karakeep more flexible for advanced workflows. **A. Transition from Env Vars to UI-Based Multi-Source Routing** Instead of a single global BaseURL configured in environment variables, I suggest adding an **AI Management Panel** in the UI that allows users to: 1. **Define Multiple Sources:** Add distinct API endpoints (e.g., Source A: OpenAI Official, Source B: Custom OpenAI-Compatible Provider, Source C: Google Gemini). 2. **Task-Based Routing:** Instead of the current "Text Model / Image Model" split, allow users to assign specific models to specific **tasks/intents**: * **Summarization:** Assign a "smart" model (e.g., `claude-3.5-sonnet` from Source A). * **Tagging:** Assign a "fast/cheap" model (e.g., `gpt-4o-mini` from Source B). * **Embeddings:** Assign a dedicated embedding model (e.g., `text-embedding-3` from Source C). **B. Full Prompt Override** Add an option to **completely override** the system's default summary prompt. Currently, we can only append instructions. A full override would allow users to implement strict structure templates without interference from the default system instructions. **C. Manual Trigger for Browser Extension** Add a "Manual Mode" toggle in the extension settings. * **Auto (Default):** Current behavior. * **Manual:** Saving a page only captures the link. The user must manually click "Generate Summary/Tags" to trigger the AI. ### Describe the benefits this would bring to existing Karakeep users 1. **Solves the "Split Provider" Problem:** Many users (like myself) use a specific high-performance provider for Chat/Summarization but a completely different provider for Embeddings (because the Chat provider might not offer Embedding endpoints). The current single-BaseURL config makes this impossible. 2. **"Granular" Cost & Performance Optimization:** Users can route simple tasks (tagging) to cheap models and complex tasks (summarization) to smart models without being locked into one provider. 3. **Better User Experience:** Switching models would no longer require modifying backend files and restarting the container. 4. **Cost Saving:** The "Manual Mode" in the extension prevents wasting tokens on accidental clicks or simple "read-later" pages that don't require deep AI analysis. 5. **Higher Quality Outputs:** Full prompt override ensures the AI adheres strictly to user-defined templates. ### Can the goal of this request already be achieved via other means? **No, not fully.** * **Regarding Multi-Source:** Currently, if my affordable Chat API provider does not support Embeddings, I am forced to choose between having Summaries or having Embeddings; I cannot have both because I cannot configure two different BaseURLs via the current environment variables. * **Regarding Prompts:** I can append instructions, but I cannot remove the system's default framing, which sometimes conflicts with my custom output format. * **Regarding Trigger:** There is no way to prevent the extension from automatically consuming tokens upon saving. ### Have you searched for an existing open/closed issue? - [x] I have searched for existing issues and none cover my fundamental request ### Additional context I understand that moving configuration from Environment Variables to the Database/UI is a significant architectural change. However, as models become more multimodal and API providers more fragmented, the ability to "mix and match" services is becoming essential. My specific pain point is that my preferred Embedding service and my preferred Chat service are on different hosts. The proposed "Task-Based Routing" would solve this elegantly while making the tool much more powerful for everyone. Thank you so much for your hard work on this project—it is already an excellent tool, and I hope these suggestions help in its evolution!
Author
Owner

@Gekko23 commented on GitHub (Feb 5, 2026):

Point B. Full Prompt Override is an absolute MUST for useful AI integration, it can not stay the uneditable way it is now.

<!-- gh-comment-id:3850847401 --> @Gekko23 commented on GitHub (Feb 5, 2026): Point **B. Full Prompt Override** is an absolute MUST for useful AI integration, it can not stay the uneditable way it is now.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/karakeep#1472
No description provided.