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_MODELSDefault chat model for the model dropdown
GENERAL_PURPOSE_MODELSVersatile models for selection categories and “Recommend Model”
LONG_CONTEXT_MODELSModels optimized for long context windows

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
AGENT_MODELModels for ReAct-Agent interactions
STREAMING_UNSUPPORTED_MODELSModels without streaming supportUsed for UI loading states
GEMINI_CHAT_MODELSGoogle Gemini modelsOnly if multimodal chat is enabled

Conditional Features

Feature KeyDescriptionNotes
REASONING_MODELSModels for complex reasoningRequired only if OpenAI o-series models exist
CYBERSECURITY_MODELSModels for cybersecurity analysisRequired only if DeepHat is available

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';