Skip to content

Config Schema Reference

This page is generated from the module config structs via mise run docgen. Every field, default, and enum below is derived from source — run that task after adding or changing a module’s Config.

Replace default with any instance name when using multiple instances of a module.

modules.auth.verifier

modules:
auth:
verifier:
default:
issuers: []
static_key: ""
scope_claim: "scope"
roles_claim: ""

modules.cache.memory

modules:
cache:
memory:
default:
caches: {}

modules.db.pgx

modules:
db:
pgx:
default:
dsn: "" # required
max_open_conns: 10
log_level: "info" # one of: trace, debug, info, warn, error, none
health_check: false
min_conns: 0
max_conn_lifetime: "1h0m0s"
max_conn_idle_time: "30m0s"
health_check_period: "1m0s"
statement_timeout: "30s"
migrations: ""

modules.debug.actuator

modules:
debug:
actuator:
default:
enabled: false
host: "127.0.0.1"
port: 6060
base_path: "/debug"
show_values: "never" # one of: never, always, when_authorized
redact_patterns: []
endpoints: ""
allow_insecure: false

modules.events.bus

modules:
events:
bus:
default:
buffer_size: 1024

modules.features.flags

modules:
features:
flags:
default:
flags: {}

modules.grpc.client

modules:
grpc:
client:
default:
target: "localhost:50051"
insecure: false
tls: ""

modules.grpc.server

modules:
grpc:
server:
default:
host: "0.0.0.0"
port: 50051
health_check: false
tls: ""

modules.health.health

modules:
health:
health:
default:
component_name: ""
component_version: ""

modules.http.connect

modules:
http:
connect:
default:
host: "0.0.0.0"
port: 8080
h2c: true
read_timeout: "0s"
read_header_timeout: "10s"
tls: ""

modules.http.fiber

modules:
http:
fiber:
default:
host: "0.0.0.0"
port: 8080
health_path: ""
tls: ""
# + any github.com/gofiber/fiber/v3 Config field via raw passthrough

modules.logging.slog

modules:
logging:
slog:
default:
level: "info"
levels: {}
global_default: true

modules.logging.tint

modules:
logging:
tint:
default:
time_format: "2006-01-02T15:04:05Z07:00"

modules.otel.otel

modules:
otel:
otel:
default:
service_name: "lakta"
service_version: ""
service_namespace: ""
environment: ""
endpoint: ""
protocol: "grpc"
insecure: false
headers: {}
sample_rate: 1
metric_interval: "1m0s"
runtime_interval: "1s"
enabled: true
required: false
signals: [] # default: ["traces","metrics","logs"]

modules.resilience.policy

modules:
resilience:
policy:
default:
policies: {}

modules.workers.pool

modules:
workers:
pool:
default:
pools: {}

modules.workers.scheduler

modules:
workers:
scheduler:
default:
timezone: "UTC"
jobs: {}

modules.workflows.temporal

modules:
workflows:
temporal:
default:
target: "localhost:7233"
task_queue: "" # required
namespace: "default"
insecure: false

Lakta ships a Draft 2020-12 JSON Schema covering every built-in module, generated from the same source as this page via mise run schema and checked in at lakta.schema.json (hosted at https://vilsol.github.io/lakta/lakta.schema.json).

Point the YAML language server at it with a modeline atop your config file to get autocompletion and validation (e.g. a malformed duration string is flagged):

# yaml-language-server: $schema=https://vilsol.github.io/lakta/lakta.schema.json
modules:
grpc:
server:
default:
host: "0.0.0.0"
port: 50051

Category (grpc) and type (server) keys are fixed to the shipped built-ins; instance names (default, or any [A-Za-z0-9_-]+) are open. Passthrough modules (e.g. http.fiber) allow arbitrary extra keys.

The schema is registered with JSON Schema Store so editors resolve it automatically for lakta.* config files. The catalog entry (src/api/json/catalog.json in SchemaStore/schemastore) is:

{
"name": "Lakta",
"description": "Lakta microservice framework configuration",
"fileMatch": ["lakta.yaml", "lakta.yml", "lakta.*.yaml", "lakta.*.yml"],
"url": "https://vilsol.github.io/lakta/lakta.schema.json"
}
  1. Create lakta.yaml with the modeline above.
  2. Open it in an editor with the YAML language server (VS Code + the RedHat YAML extension, or Neovim + yamlls).
  3. Type under modules.grpc.server.default. — completions for host, port, etc. appear.
  4. Set a time.Duration field (e.g. a pgx health_check_period) to notaduration — the server flags it against the duration pattern.

Set LAKTA_PROFILE=<name> (or pass config.WithProfile("<name>")) to overlay a lakta.<name>.<ext> file on top of the base lakta.<ext> in each config directory. The overlay loads after the base (koanf last-wins), so its keys win while base-only keys survive. Precedence is: base files → profile files → env vars → CLI flags. Profile files join the watched set, so hot-reload works for them too. A missing overlay file is silently skipped.