{ "Logging": { "LogLevel": { "Default": "Warning", "Elsa": "Warning", "MassTransit": "Warning", "Microsoft.Extensions.Http": "Warning", "Microsoft.Hosting.Lifetime": "Information", "Microsoft.EntityFrameworkCore": "Warning", "Microsoft.AspNetCore": "Warning", "Quartz": "Warning", "System.Net.Http": "Warning" } }, "HostBuilder": { "reloadConfigOnChange": true }, "AllowedHosts": "*", "ConnectionStrings": { "Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;", "PostgreSql": "Server=localhost;Username=elsa;Database=elsa;Port=5432;Password=elsa;SSLMode=Prefer;MaxPoolSize=2000;Timeout=60", "CockroachDb": "Host=localhost;Port=26257;Database=elsa;SslMode=Disable;Username=root;IncludeErrorDetail=true", "MongoDb": "mongodb://localhost:27017/elsa-workflows", "AzureServiceBus": "", "RabbitMq": "amqp://guest:guest@localhost:5672", "Redis": "localhost:6379,abortConnect=false" }, "DatabaseProvider": "Sqlite", "Multitenancy": { "Tenants": [ { "Id": null, "Name": "Default", "Configuration": { "Http": { "Prefix": "", "Host": "localhost:5001" }, "ConnectionStrings": { "Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;" } } }, { "Id": "tenant-1", "Name": "Tenant 12 dd", "Configuration": { "Http": { "Prefix": "/tenant-1", "Host": "localhost:5001" }, "ConnectionStrings": { "Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;" } } } ] }, "Smtp": { "Host": "localhost", "Port": 2525, "DefaultSender": "noreply@crmservices.com" }, "Http": { "BaseUrl": "https://localhost:5001", "BasePath": "/workflows", "ApiRoutePrefix": "elsa/api", "AvailableContentTypes": [ "application/json", "application/xml", "text/plain", "text/html" ] }, "Identity": { "Tokens": { "SigningKey": "sufficiently-large-secret-signing-key", "AccessTokenLifetime": "1:00:00:00", "RefreshTokenLifetime": "7:00:00:00" }, "Roles": [ { "Id": "admin", "Name": "Administrator", "Permissions": [ "*" ], "TenantId": "default" } ], "Users": [ { "Id": "a2323f46-42db-4e15-af8b-94238717d817", "Name": "admin", "HashedPassword": "TfKzh9RLix6FPcCNeHLkGrysFu3bYxqzGqduNdi8v1U=", "HashedPasswordSalt": "JEy9kBlhHCNsencitRHlGxmErmSgY+FVyMJulCH27Ds=", "Roles": [ "admin" ], "TenantId": "" }, { "Id": "b0cd0e506e713a9d", "Name": "alice", "Roles": [ "admin" ], "HashedPassword": "8B0fFK/f/kk9GkVtzXfRJ2Y6cNyYVvLTfKouWcAcuPg=", "HashedPasswordSalt": "xlNWvEng8fRvo0McyJopbRJ2MJ9NIYV/4IY5dOZeiiw=", "TenantId": "tenant-2" }, { "Id": "789d5056cb3bb8e9", "Name": "bob", "Roles": [ "admin" ], "HashedPassword": "GMHHvUw7RfIIBq+GAWZ/AlHR50TbgONYfGQ92Xge0EI=", "HashedPasswordSalt": "V4uHKg1PFBc1bsngCQoptibOu14faj9obSn5B23h1wE=", "TenantId": "tenant-1" } ], "Applications": [ { "Id": "d57030226341448daff5a2935aba2d3f", "Name": "Postman", "Roles": [ "admin" ], "ClientId": "HXr0Vzdm9KCZbwsJ", "ClientSecret": "a<~QGGHTEA%u4;CU&'Wga5ED:_&Gd1C)", "HashedApiKey": "Z5ClHs3mbzx8Pnw3+PxbMq8A/Y+VKMCCDTGYtax8JFM=", "HashedApiKeySalt": "kBisa1X8FwBfN2zmyGMFRgIVVBleghhQAJ4WGyTkaD0=", "HashedClientSecret": "jEv58d0SVbGQ3nBZM0lkzHghG4Y+lMKW80wipz+9vHk=", "HashedClientSecretSalt": "xRKy14Ok1/tU3kLf/8V1fcbLIegy9vcM90Peu2tzohU=", "TenantId": "default" } ] }, "Environments": { "Environments": [ { "Name": "Local", "ServerUrl": "https://localhost:5001/elsa/api" }, { "Name": "Staging", "ServerUrl": "https://staging.acme.com/elsa/api" }, { "Name": "Production", "ServerUrl": "https://production.acme.com/elsa/api" } ] }, "AppRole": "Default", "Runtime": { "DistributedLocking": { "Provider": "File", "LockAcquisitionTimeout": "00:00:10" }, "DistributedLockProvider": "File", "WorkflowDispatcher": { "Channels": [ { "Name": "Low" }, { "Name": "Medium" }, { "Name": "High" } ] } }, "Scripting": { "Python": { "PythonDllPath": "", "Scripts": [ "def greet(name): return f'Hello {name}!'", "def say_hello_world(): return greet('World')" ] } }, "AzureServiceBus": { "Queues": [ { "Name": "queue1" }, { "Name": "queue2" } ], "Topics": [ { "Name": "topic1", "Subscriptions": [ { "Name": "subscription1" }, { "Name": "subscription2" } ] } ] }, "Kafka": { "Topics": [ { "Id": "topic-1", "Name": "topic-1" }, { "Id": "topic-2", "Name": "topic-2" } ], "Producers": [ { "Id": "producer-1", "Name": "Producer 1", "FactoryType": "Elsa.Kafka.Factories.GenericProducerFactory`2[[System.String, System.Private.CoreLib], [Elsa.Server.Web.Messages.OrderReceived, Elsa.Server.Web]], Elsa.Kafka", "Config": { "BootstrapServers": "localhost:9092" } } ], "Consumers": [ { "Id": "consumer-1", "Name": "Consumer 1", "FactoryType": "Elsa.Kafka.Factories.GenericConsumerFactory`2[[System.String, System.Private.CoreLib], [Elsa.Server.Web.Messages.OrderReceived, Elsa.Server.Web]], Elsa.Kafka", "Config": { "BootstrapServers": "localhost:9092", "GroupId": "group-1", "AutoOffsetReset": "earliest", "EnableAutoCommit": "true" } } ] }, "Secrets": { "Management": { "SweepInterval": "04:00:00" } }, "Agents": { "ApiKeys": [ { "Name": "MyApiKey", "Value": "my-api-key" } ], "Services": [ { "Name": "ChatCompletion", "Type": "OpenAIChatCompletion", "Settings": { "ModelId": "gpt-4o", "ApiKeyRef": "MyApiKey" } }, { "Name": "TextToImage", "Type": "OpenAITextToImage", "Settings": { "ModelId": "dall-e-3", "ApiKeyRef": "MyApiKey" } } ], "Agents": [ { "Name": "Copywriter", "Description": "A persona that writes articles on any topic.", "Services": [ "ChatCompletion" ], "FunctionName": "WriteArticle", "PromptTemplate": "You are a writer of articles about any topic and any additional instructions given to you. The syntax of the article content will be markdown, and your response will be in JSON format containing a \"title\" field and a \"markdown\" field using the following JSON structure: { \"title\": \"The title of the Article\", \"markdown\": \"The article content in markdown syntax.\" }. This is the topic: {{$Topic}}. The article consists of around {{$ParagraphCount}} paragraphs. The article must be written in the language {{$Language}} using the following style: {{$WritingStyle}}. Additional instructions (if any): {{$AdditionalInstructions}}.", "InputVariables": [ { "Name": "Topic", "Description": "The topic to write an article about.", "Type": "string" }, { "Name": "ParagraphCount", "Description": "The number of paragraphs to write.", "Type": "int" }, { "Name": "Language", "Description": "The language to write the text in.", "Type": "string" }, { "Name": "WritingStyle", "Description": "The style to write the text in.", "Type": "string" }, { "Name": "AdditionalInstructions", "Description": "Any additional instructions.", "Type": "string" } ], "OutputVariable": { "Name": "Article", "Description": "The article consisting of a title and markdown text." }, "ExecutionSettings": { "MaxTokens": null, "Temperature": 0.5, "TopP": 0.9, "PresencePenalty": 0.5, "FrequencyPenalty": 0.5, "ResponseFormat": "json_object" } } ] } }