# Example configuration: `furnace --config furnace.example.toml`
# (or set FURNACE_CONFIG). Every key is optional; options given on the command line override
# the file. Unknown keys are an error, so typos don't go unnoticed.
[]
= "127.0.0.1"
= 3000
= 100 # beyond this, requests get 503
= 100
# request_timeout_ms = 5000 # beyond this, requests get 504 (default: no timeout)
= "info" # error, warn, info, debug or trace
# threads = 8 # inference threads (default: one per physical core)
# grpc_port = 8001 # also serve gRPC (KServe / Triton protocol); needs the `grpc` feature
# admin_token = "..." # enable POST /admin/models/{model}/reload; prefer $FURNACE_ADMIN_TOKEN
# api_keys = ["..."] # require one of these keys; prefer $FURNACE_API_KEYS
# rate_limit = 50 # requests/s per client (API key, or IP address), beyond which 429
# rate_limit_burst = 100 # requests a client may send at once (default: rate_limit)
# tls_cert = "/etc/furnace/tls.crt" # HTTPS and gRPC over TLS (`tls` feature); reloaded on change
# tls_key = "/etc/furnace/tls.key" # ECDSA P-256 / P-384 or Ed25519
# tls_client_ca = "/etc/furnace/ca.crt" # mutual TLS: only clients with a certificate from this CA
[]
= "resnet18" # built-in model compiled from models/<name>.onnx
# name = ["resnet18", "mnist"] # or several; the first is the one /predict serves
# path = "examples/basic_mnist/model" # or a file-based Burn model instead of `name`
# weights = "/srv/models/resnet18.bpk" # default: <name>.bpk next to the binary
= "cpu" # cpu, or wgpu / metal / cuda when built with that feature
[]
= 8 # 1 turns dynamic batching off
= 2000
= 4