How to run Weaviate using a binary?

In the .go code I see a flat list of CamelCase settings, but it’s unclear how they map to the JSON file (or to the YAML file) format. What is the hierarchy?

For example, the DisableTelemetry setting:

If I create weaviate.config.json with the contents {"DisableTelemetry": true} and run ./weaviate-1.25.2 --config-file=weaviate.conf.json, Weaviate still attempts (and fails to) send telemetry, then exits:

{"action":"startup","level":"error","msg":"telemetry failed to start: push: failed to send request: Post \"https://telemetry.weaviate.io/weaviate-telemetry\": dial tcp: lookup telemetry.weaviate.io on [::1]:53: read udp [::1]:49687-\u003e[::1]:53: read: connection refused","time":"2024-06-05T19:29:45-04:00"}
{"address":"10.0.0.68:8300","level":"info","msg":"current Leader","time":"2024-06-05T19:29:45-04:00"}
{"level":"info","msg":"starting migration from old schema","time":"2024-06-05T19:29:45-04:00"}
{"level":"info","msg":"legacy schema is empty, nothing to migrate","time":"2024-06-05T19:29:45-04:00"}
{"level":"info","msg":"migration from the old schema has been successfully completed","time":"2024-06-05T19:29:45-04:00"}
{"action":"restapi_management","level":"info","msg":"the required flags `--tls-certificate` and `--tls-key` were not specified","time":"2024-06-05T19:29:45-04:00"}

From your example in the first post, I tried snake_casing, but {"disable_telemetry": true} in the JSON resulted in the same behavior of the setting being ignored.

I also created w.yaml with the contents

disable_telemetry: true
DISABLE_TELEMETRY: true

When I run ./weaviate-1.25.2 --config-file=w.yaml, Weaviate still attempts (and fails) to send telemetry.

  1. I think clear documentation of the Weaviate binary config file is critical. I find it awkward to pass many environment variables in a standalone deployment, and the vast majority of (database) sever software uses config files. But it’s not clear in the docs what the format of this file is. (I can’t find any information about the config file for the Weaviate binary among the “installation instructions” or by searching the developer docs).

  2. Weaviate should report errors on unrecognized options in its config file. Obviously neither of the disable_telemetry and DISABLE_TELEMETRY options were recognized.

  3. Passing a nonexistent config file should result in a clear error, but apparently Weaviate just ignores the error.

  4. It seems the JSON format is being deprecated (see my post above)? But the CLI help suggests the JSON is still the default config file:

    Please officially document the YAML config file format.