Sovereign Platform is in pre-launch alpha.
Not yet available to purchase. Sign up for our mailing list for upcoming launch dates.
Sovereign Platform is in pre-launch alpha.
Not yet available to purchase. Sign up for our mailing list for upcoming launch dates.
Profiles let you balance cost and quality across different use cases. Instead of configuring provider, model, temperature, and token limits on every workflow node, you define profiles once and reference them by name.
Use a fast, inexpensive model for simple classification and a premium model for complex reasoning — all controlled through profiles.
The shipped configuration includes profiles designed for common patterns:
default — General-purpose profile for most workflow steps. Uses moderate temperature (0.7) for natural language output. Tools are disabled because most text processing steps do not need function calling.
agentic — For autonomous agent nodes and MCP Server interactions. Uses lower temperature (0.3) for more predictable behavior and enables tool calling so the model can invoke platform tools and connectors.
agentic-premium — Like agentic but with a higher output token limit (16,384 vs 8,192). Use this for complex multi-step agent tasks that need more room to reason.
workflow-generator — Powers the AI assistant sidebar and workflow generator in the UI. Has a system prompt that teaches the model about workflow structure and platform tools.
summarization — Optimized for text condensation. Low temperature (0.2) for consistency, small output limit (2,048 tokens), and tools explicitly disabled.
Summarization and Tools
Keeping tools disabled on summarization profiles is important. If a tool execution triggers a summarization call, enabling tools would create an infinite loop. Always set ToolsEnabled: false on profiles used for text processing within tool chains.
You can add as many profiles as you need. Here is an example of a cost-optimized classification profile:
{
"ProfileId": "classification",
"DisplayName": "Fast Classification (GPT-4o Mini)",
"PreferredProviderId": "openai",
"PreferredModelId": "gpt-4o-mini",
"RoutingStrategy": "Direct",
"Temperature": 0.0,
"MaxOutputTokens": 256,
"ToolsEnabled": false
}
And a high-quality reasoning profile:
{
"ProfileId": "reasoning",
"DisplayName": "Complex Reasoning (Gemini 2.5 Pro)",
"PreferredProviderId": "gemini",
"PreferredModelId": "gemini-2.5-pro",
"RoutingStrategy": "Direct",
"Temperature": 0.4,
"MaxOutputTokens": 16384,
"ToolsEnabled": false
}
| Field | Required | Description |
|---|---|---|
ProfileId | Yes | Unique identifier used in workflow nodes (e.g., default, agentic) |
DisplayName | No | Human-readable name shown in the UI |
PreferredProviderId | No | Which provider to use. If omitted, the routing strategy picks one |
PreferredModelId | No | Which model to use. If omitted, the first model on the provider is selected |
RoutingStrategy | No | How the platform selects a provider. Defaults to Direct |
Temperature | No | Randomness (0.0 = deterministic, 2.0 = maximum creativity). Defaults to 0.7 |
MaxOutputTokens | No | Maximum tokens in the response. Defaults to 1024. Capped by the model's limit |
ToolsEnabled | No | Whether this profile can invoke tools. Defaults to false |
SystemPrompt | No | System prompt prepended to all conversations using this profile |
Individual workflow nodes can override profile defaults. The LLM Chat action accepts these parameters:
| Parameter | Required | Description |
|---|---|---|
ProfileId | Yes | Which profile to use for this step |
ProviderIdOverride | No | Override the profile's provider for this specific call |
ModelIdOverride | No | Override the profile's model for this specific call |
Options.Temperature | No | Override temperature for this call |
Options.MaxOutputTokens | No | Override max output tokens for this call |
Options.ExpectJsonObject | No | When true, requests JSON-formatted output |
Settings are resolved in this order (first non-null wins):
ProviderIdOverride, ModelIdOverride, etc.)PreferredProviderId, PreferredModelId, etc.)This means a single workflow can use different providers and models for different steps — a cheap model for data extraction and a premium model for the final analysis — all by specifying ProfileId on each node and optionally overriding specific parameters.
Each profile has a RoutingStrategy that controls how the platform selects a provider.
Uses exactly the provider and model specified in the profile. This is the right choice for most deployments where you want predictable routing.
Checks for a provider with IsLocal: true first. If a local provider is available, it is used. If not, falls back to the profile's preferred cloud provider.
Use this when you want to prefer a self-hosted model but fall back to a cloud API when it is unavailable:
{
"ProfileId": "local-preferred",
"PreferredProviderId": "openai",
"PreferredModelId": "gpt-4o",
"RoutingStrategy": "LocalThenCloud"
}
Filters out all local providers. Use this for profiles that must never run on a local model — for example, when you need guaranteed tool calling support that your local model does not provide.
The optional Context, Chunking, and RagOptions sections in the config file control conversation history management and retrieval-augmented generation.
| Setting | Default | Description |
|---|---|---|
HistoryTokenBudgetFraction | 0.5 | Fraction of the context window reserved for conversation history |
RagTokenBudgetFraction | 0.3 | Fraction reserved for RAG-retrieved content |
EnableAutoSummarization | false | Automatically summarize long conversations to fit the context window |
SessionInactivityTimeout | 00:30:00 | How long a session stays active without new messages |
MaxTokensPerChunk | 512 | Maximum tokens per chunk when splitting documents for RAG |
OverlapTokens | 64 | Token overlap between chunks for context continuity |
TopK | 5 | Number of chunks to retrieve for RAG queries |
MinimumScore | 0.7 | Minimum similarity score for retrieved chunks |
"Unable to resolve API key for provider" — The environment variable specified in ApiKeySecretName is not set or is empty. Check your .env file and docker-compose configuration.
"Provider 'xyz' is not configured" — A profile references a PreferredProviderId that does not match any provider in the Providers array. Check for typos.
"Model 'abc' is not configured for provider 'xyz'" — A profile references a PreferredModelId not listed under that provider. Add the model entry or correct the ID.
"No LLM config file found, using embedded defaults" — The config file mount failed. Verify the volume mount path in docker-compose and ensure the file exists at the host path.