Skip to main content
Wattetheria reads its runtime configuration from a JSON file located at .wattetheria/config.json (or <data_dir>/config.json when you point to a custom data directory). Every key in this file maps directly to a runtime behaviour — from which address the control plane listens on to how often the autonomy loop fires.

Minimal Configuration

The smallest valid configuration file wires up the control plane and enables the rule-based (non-LLM) brain provider. This is the right starting point when you want to bring up the runtime and verify connectivity before introducing an AI backend.
{
  "control_plane_bind": "127.0.0.1:7777",
  "control_plane_endpoint": "http://127.0.0.1:7777",
  "recovery_sources": [
    "http://127.0.0.1:7778/v1/events/export"
  ],
  "brain_provider": {
    "kind": "rules"
  }
}
The control_plane_bind value controls which interface the HTTP server binds to, while control_plane_endpoint is the address the runtime advertises to internal components. Keep them consistent unless you are running behind a proxy.

Autonomous Loop Configuration

When you want agents to operate without manual intervention, add the autonomy_enabled and autonomy_interval_sec fields alongside an LLM-backed brain provider. The following example uses a local Ollama instance running qwen2.5:7b-instruct and fires the autonomy loop every 30 seconds.
{
  "control_plane_bind": "127.0.0.1:7777",
  "control_plane_endpoint": "http://127.0.0.1:7777",
  "brain_provider": {
    "kind": "ollama",
    "base_url": "http://127.0.0.1:11434",
    "model": "qwen2.5:7b-instruct"
  },
  "autonomy_enabled": true,
  "autonomy_interval_sec": 30
}
Setting autonomy_interval_sec too low can cause the brain provider to queue more inference requests than it can process. A value of 30 is a safe default for most local models; increase it if you observe back-pressure in the logs.

Configuration Reference

The table below describes every top-level key that Wattetheria recognises in config.json.
KeyTypeDescription
control_plane_bindstringhost:port the control-plane HTTP server binds to
control_plane_endpointstringPublicly-reachable URL of the control plane
recovery_sourcesstring[]Event-export endpoints used for state recovery
brain_providerobjectBrain provider configuration (see Brain Provider)
autonomy_enabledbooleanEnable the autonomous agent loop
autonomy_interval_secintegerSeconds between autonomy loop ticks

Environment Variables

When you deploy using npx wattetheria install, the CLI writes a .env file into the deploy directory. You can set the following variables there (or export them in your shell) to override configuration without editing config.json directly.
VariableDescription
WATTETHERIA_HOST_STATE_DIRAbsolute path on the host that is bind-mounted as the state directory inside containers
WATTETHERIA_GATEWAY_URLSComma-separated list of gateway URLs the runtime connects to
WATTETHERIA_WATTSWARM_UI_BASE_URLBase URL used by the Wattswarm UI service
The supervision console at http://127.0.0.1:7777/supervision exposes a UI card that lets you update brain provider settings and writes the result directly to the deploy .env — no manual file editing required.

Docker Networking

When the Wattetheria runtime runs inside Docker and your brain provider or AI gateway is a process on the host machine, localhost inside the container resolves to the container itself — not your workstation. Use Docker’s special hostname instead:
{
  "brain_provider": {
    "kind": "openai-compatible",
    "base_url": "http://host.docker.internal:4000/v1",
    "model": "my-model"
  }
}
Replace the port number with whichever port your host-local AI gateway is listening on.
host.docker.internal is available on Docker Desktop (macOS and Windows) by default. On Linux, you may need to add --add-host=host.docker.internal:host-gateway to your Docker run flags, or set it via extra_hosts in your Compose file.

Applying Configuration Changes

After editing config.json or the deploy .env, restart the stack and run the diagnostics command to confirm that the new settings are picked up correctly.
npx wattetheria restart
npx wattetheria doctor --brain --connect