Skip to content

Model Configuration

This guide explains how Self-Managed Kindo installations define and maintain global models — the system-wide LLMs (and related models like embeddings or transcription) that power workflows, chat, ingestion, and other core experiences.

In a self-managed environment, you add models to Kindo, map them to Unleash feature variants, and keep those mappings up to date when models are replaced.

Unleash Features and Strategy Variants

Each key below is an Unleash feature whose variant payload contains one or more global model IDs. The backend and frontend read these variants to decide which models to use.

Required Features

Feature KeyDescription
AUDIO_TRANSCRIPTIONConverts audio to text
CRON_EXPRESSION_GENERATIONGenerates cron expressions from natural language schedule descriptions
DEFAULT_WORKFLOW_STEP_MODELDefault model for workflow step execution
EMBEDDING_MODELSModels for generating text embeddings
INGESTION_WORKERSModels for data ingestion and extraction
INTERNAL_AUTO_GENERATIONInternal model for automatic content generation
INTERNAL_LARGE_WORKERHigh-capacity internal worker for complex tasks
INTERNAL_SMALL_WORKERLightweight internal worker for simple tasks
LOCAL_STORAGE_CHAT_ACTIONS_MODELSDefault chat model for the model dropdown and chat action selection
TOOL_CALLING_MODELSModels that support tool/function calling (used to filter model selection in chat UI)

Optional Features

Feature KeyDescriptionNotes
API_STEP_GENERATIONModels for generating API steps in workflows
DYNAMIC_API_REQUEST_PARSERParses dynamic API requests
SLACK_MESSAGE_GENERATIONGenerates Slack messagesOnly if Slack integration is enabled
MULTIMODAL_MODELSModels with image/multimodal input supportOnly if multimodal chat is enabled

Minimum Model Requirements

Self-Managed Kindo needs baseline global models to function. Without them, core flows like chat, workflow execution, ingestion, and indexing will fail.

Absolute Minimum Set

Model TypePurposeRecommendations
Embedding modelSemantic search, retrieval, and indexingOpen source: BAAI/bge-m3. Hosted: Gemini embedding
Strong/large modelComplex reasoning, workflow execution, long-form generationOpen source: gpt-oss 120B. Hosted: Gemini 2.5 Pro, Claude 4.5, GPT 5.2
Audio transcriptionAudio file processing, voice notes, transcription workflowsOpen source: Faster Whisper. Hosted: Deepgram
  • Small model (title generation, quick summaries, low-latency steps): Gemma 3 or Llama 3.2 7B
  • Security-focused: DeepHat 32B
  • Multimodal: Gemini 2.5 Pro (image + text)

Managing Models

Overview of Steps

  1. Add the new model via the API.
  2. Update Unleash variants to reference the new model IDs.
  3. Delete the old model with replacement.

Add a Global Model

Terminal window
curl -X POST <API_URL>/internal/openapi/admin/model/new \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <UM_INTERNAL_API_KEY>' \
-d '{
"orgId": "<YOUR_ORG_ID>",
"userId": "<YOUR_USER_ID>",
"displayName": "Model Display Name",
"modelProviderDisplayName": "Provider Name",
"type": "CHAT",
"contextWindow": 200000,
"metadata": {
"type": "Text Generation",
"costTier": "HIGH",
"usageTag": "Chat + Agents",
"description": "Model description",
"modelCreator": "Provider Name"
},
"litellmModelName": "model-name",
"litellmParams": {
"model": "provider/model-name",
"api_key": "<API_KEY>",
"max_output_tokens": 64000
}
}'

Delete with Replacement

Terminal window
curl -X POST <API_URL>/internal/openapi/admin/model/delete-with-replacement \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <UM_INTERNAL_API_KEY>' \
-d '{
"deletingModelId": "<OLD_MODEL_ID>",
"replacementModelId": "<NEW_MODEL_ID>",
"orgId": "<YOUR_ORG_ID>",
"userId": "<YOUR_USER_ID>"
}'

Update Parameters on an Existing Model

To modify LiteLLM parameters for an existing model, update the LiteLLM database directly:

UPDATE "public"."LiteLLM_ProxyModelTable"
SET "litellm_params" = jsonb_set(
"litellm_params",
'{max_tokens}',
'64000'::jsonb
)
WHERE "model_name" = 'your-model-name';