Skip to content

Configuration

Every Prologue tool binds the same cratis-prologue.json, via the shared Cratis.Prologue.Configuration package — never appsettings.json. The Extractor binds the prologue section; the Interpreter binds llm; the HTTP capture source binds the top-level reverseProxy section (a plain YARP configuration block, not a Prologue-specific schema).

  • Each tool looks for cratis-prologue.json in its working directory by default. Override the path with the PROLOGUE_CONFIG environment variable, or point --config-style hosting at a different basePath if you’re calling AddPrologueConfiguration() yourself.
  • The file is the baseline; environment variables override it. Every property below has a double-underscore environment variable equivalent — Prologue__Output__Kind, Prologue__SqlServer__0__ConnectionString, ReverseProxy__Clusters__monitored__Destinations__primary__Address — so a deployed tool can be configured by its host (a container, an orchestrator, an Aspire composition) without rewriting the file. If you’re hosting a Prologue tool yourself, AddPrologueConfiguration() from Cratis.Prologue.Configuration wires up that precedence for you.
  • The file is missing? That’s fine — every property below has a default, and environment variables still apply.
PropertyTypePurpose
prologuePrologueOptionsCapture sources, correlation, and output — bound by the Extractor
llmLlmOptionsOptional language-model refinement — bound by the Interpreter
reverseProxyYARP configurationRoutes and clusters for the HTTP capture source — see YARP’s configuration docs
PropertyTypeDefaultPurpose
prologueIdguida fresh idIdentifies this Prologue’s captures, so a folder or Receiver can hold more than one Prologue’s data without mixing them
outputOutputOptionsWhere captures are written
correlationCorrelationOptionsThe correlation time window
sqlServerarray of SqlServerOptions[]SQL Server databases to watch via CDC
postgresarray of PostgresOptions[]PostgreSQL databases to watch via logical replication
openTelemetryOpenTelemetryOptionsOTLP proxy configuration
PropertyTypeDefaultPurpose
kind"Api" | "Json""Api"Whether captures are posted to a Receiver or written to JSON files
api.endpointstring"http://localhost:5005"Receiver base address, used when kind is "Api"
json.directorystring"./captures"Folder to write rolling .jsonl capture files to, used when kind is "Json"
json.maxEntriesPerFileint10000Entries per file before the Extractor rolls to a new one
PropertyTypeDefaultPurpose
windowMillisecondsint2000How long after a command the correlator keeps grouping database transactions and telemetry into the same capture — see How Prologue works
PropertyTypeDefaultPurpose
namestring"sqlserver"Label for this database in captures
connectionStringstringConnection string; needs permission to enable CDC
enableChangeDataCapturebooltrueWhether the Extractor enables CDC on the database itself
tablesarray of string[]Table allowlist; empty captures every user table
pollIntervalMillisecondsint500How often the Extractor polls for new CDC changes
PropertyTypeDefaultPurpose
namestring"postgres"Label for this database in captures
connectionStringstringConnection string; needs permission to create a replication slot and publication, and wal_level = logical on the server
slotstring"prologue_slot"Replication slot name
publicationstring"prologue_publication"Publication name
PropertyTypeDefaultPurpose
enabledboolfalseWhether the OTLP proxy is active
serviceNamesarray of string[]Service name allowlist; empty captures telemetry from every service
attributeKeysarray of string[]Span/log attribute keys whose values are captured; everything else is dropped
upstream.httpstringUpstream OTLP/HTTP collector to forward telemetry to
upstream.grpcstringUpstream OTLP/gRPC collector to forward telemetry to

Leave both upstream addresses empty to make the Extractor a terminal collector rather than a forwarding proxy.

PropertyTypeDefaultPurpose
enabledboolfalseWhether the Interpreter refines the heuristic model with a language model
kind"Ollama" | "OpenAI" | "AzureOpenAI" | "OpenAICompatible" | "Anthropic""Ollama"Which provider to call
endpointstring"http://llm:11434"Provider endpoint; the hosted providers (OpenAI, Azure OpenAI, Anthropic) default to their public endpoint if you don’t set one
accessTokenstringAPI key for the hosted providers; not needed for a local Ollama endpoint
modelIdstringan Ollama model tagThe model to call — for AzureOpenAI, this is the deployment name, not a model name
refinementTimeoutduration2 minutesHow long the Interpreter waits for a refinement response before giving up and keeping the heuristic result

See Running the Interpreter for a worked example.