wattetheria 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -586,8 +586,9 @@ read it from the `wattetheria_state` volume; for the full stack, read
586
586
  `./data/wattetheria/control.token`.
587
587
 
588
588
  The supervision console includes an Agent Runtime configuration card for the brain provider.
589
- Saving that form updates the deployment env file under `.wattetheria/deploy/.env` so the next
590
- service restart picks up the new runtime settings without manual env editing.
589
+ Saving that form updates the deployment env file under `.wattetheria/deploy/.env` through the
590
+ container's `/var/lib/wattetheria-deploy` mount, so the next service restart picks up the new
591
+ runtime settings without manual env editing.
591
592
 
592
593
  The Logs page is now a WattSwarm Diagnostics view. It proxies authenticated
593
594
  `/v1/client/wattswarm-diagnostics` to the local Wattswarm UI API so operators can inspect
@@ -708,11 +709,10 @@ WATTETHERIA_GATEWAY_URLS=http://gateway.example.com:8080
708
709
  ```
709
710
 
710
711
  `docker-compose.release.yml` also mounts `${WATTSWARM_HOST_STATE_DIR}/startup_config.json` into the
711
- kernel container. If `WATTETHERIA_GATEWAY_URLS` is unset, the kernel now falls back to `gateway_urls`
712
- saved by the Wattswarm startup UI in that file. Wattetheria also resolves coarse node geo location
713
- at startup and syncs the resulting `latitude` / `longitude` into that mounted startup config so
714
- Wattswarm can publish nearby-discovery coordinates without exposing editable geo fields in the
715
- startup UI.
712
+ kernel container as read-only. If `WATTETHERIA_GATEWAY_URLS` is unset, the kernel falls back to
713
+ `gateway_urls` saved by the Wattswarm startup UI in that file. Wattetheria resolves coarse node geo
714
+ location at startup and sends the resulting `latitude` / `longitude` to Wattswarm over the local
715
+ sync gRPC bridge, so Wattswarm remains the writer for its own startup config.
716
716
 
717
717
  When Wattetheria registers `core-agent` with Wattswarm, it keeps the brain/runtime
718
718
  `base_url` pointed at the OpenAI-compatible gateway for `/execute` work and exposes a
@@ -17,13 +17,14 @@ services:
17
17
  image: ${WATTETHERIA_KERNEL_IMAGE:-wattetheria/wattetheria-kernel:latest}
18
18
  restart: unless-stopped
19
19
  env_file:
20
- - ${WATTETHERIA_RUNTIME_ENV_FILE:-.env.release.local}
20
+ - ${WATTETHERIA_COMPOSE_ENV_FILE:-.env.release.local}
21
21
  depends_on:
22
22
  wattswarm-kernel:
23
23
  condition: service_started
24
24
  environment:
25
25
  WATTETHERIA_DATA_DIR: /var/lib/wattetheria
26
26
  WATTETHERIA_CONTROL_PLANE_BIND: 0.0.0.0:7777
27
+ WATTETHERIA_RUNTIME_ENV_FILE: ${WATTETHERIA_RUNTIME_ENV_FILE:-/var/lib/wattetheria-deploy/.env.release.local}
27
28
  WATTETHERIA_WATTSWARM_UI_BASE_URL: http://wattswarm-kernel:7788
28
29
  WATTETHERIA_WATTSWARM_SYNC_GRPC_ENDPOINT: http://wattswarm-kernel:7791
29
30
  WATTETHERIA_AGENT_CONTROL_PLANE_ENDPOINT: ${WATTETHERIA_AGENT_CONTROL_PLANE_ENDPOINT:-http://127.0.0.1:7777}
@@ -40,8 +41,9 @@ services:
40
41
  WATTETHERIA_AUTONOMY_ENABLED: ${WATTETHERIA_AUTONOMY_ENABLED:-false}
41
42
  WATTETHERIA_AUTONOMY_INTERVAL_SEC: ${WATTETHERIA_AUTONOMY_INTERVAL_SEC:-30}
42
43
  volumes:
44
+ - ${WATTETHERIA_DEPLOY_DIR:-.}:/var/lib/wattetheria-deploy
43
45
  - ${WATTETHERIA_HOST_STATE_DIR:-./data/wattetheria}:/var/lib/wattetheria
44
- - ${WATTSWARM_HOST_STATE_DIR:-./data/wattswarm}:/var/lib/wattswarm
46
+ - ${WATTSWARM_HOST_STATE_DIR:-./data/wattswarm}:/var/lib/wattswarm:ro
45
47
  ports:
46
48
  - "${WATTETHERIA_CONTROL_PLANE_BIND_HOST:-127.0.0.1}:${WATTETHERIA_CONTROL_PLANE_PORT:-7777}:7777"
47
49
  healthcheck:
@@ -110,8 +112,8 @@ services:
110
112
  WATTSWARM_UDP_ANNOUNCE_MODE: ${WATTSWARM_UDP_ANNOUNCE_MODE:-multicast}
111
113
  WATTSWARM_UDP_ANNOUNCE_ADDR: ${WATTSWARM_UDP_ANNOUNCE_ADDR:-239.255.42.99}
112
114
  WATTSWARM_UDP_ANNOUNCE_PORT: ${WATTSWARM_UDP_ANNOUNCE_PORT:-37931}
113
- WATTSWARM_IROH_RELAY_URLS: ${WATTSWARM_IROH_RELAY_URLS:-}
114
- WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS: ${WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS:-true}
115
+ WATTSWARM_IROH_RELAY_URLS: ${WATTSWARM_IROH_RELAY_URLS:-https://relay.wattetheria.com}
116
+ WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS: ${WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS:-false}
115
117
  WATTSWARM_PUBLIC_BOOTSTRAP_URLS: ${WATTSWARM_PUBLIC_BOOTSTRAP_URLS:-}
116
118
  WATTSWARM_PUBLIC_BOOTSTRAP_CONTACTS: ${WATTSWARM_PUBLIC_BOOTSTRAP_CONTACTS:-}
117
119
  WATTSWARM_PUBLIC_GATEWAY_URLS: ${WATTSWARM_PUBLIC_GATEWAY_URLS:-}
package/lib/cli.js CHANGED
@@ -37,7 +37,9 @@ const DEFAULT_ENV_ENTRIES = [
37
37
  ["WATTSWARM_UDP_ANNOUNCE_HOST_PORT", "37931"],
38
38
  ["WATTETHERIA_HOST_STATE_DIR", "./data/wattetheria"],
39
39
  ["WATTSWARM_HOST_STATE_DIR", "./data/wattswarm"],
40
- ["WATTETHERIA_RUNTIME_ENV_FILE", ".env.release.local"],
40
+ ["WATTETHERIA_COMPOSE_ENV_FILE", ".env.release.local"],
41
+ ["WATTETHERIA_DEPLOY_DIR", "."],
42
+ ["WATTETHERIA_RUNTIME_ENV_FILE", "/var/lib/wattetheria-deploy/.env.release.local"],
41
43
  ["WATTETHERIA_AGENT_CONTROL_PLANE_ENDPOINT", "http://127.0.0.1:7777"],
42
44
  ["WATTETHERIA_AGENT_WATTSWARM_UI_BASE_URL", "http://127.0.0.1:7788"],
43
45
  ["WATTETHERIA_AGENT_WATTSWARM_SYNC_GRPC_ENDPOINT", "http://127.0.0.1:7791"],
@@ -55,6 +57,8 @@ const DEFAULT_ENV_ENTRIES = [
55
57
  ["WATTSWARM_P2P_ENABLED", "true"],
56
58
  ["WATTSWARM_P2P_MDNS", "true"],
57
59
  ["WATTSWARM_P2P_PORT", "4001"],
60
+ ["WATTSWARM_IROH_RELAY_URLS", "https://relay.wattetheria.com"],
61
+ ["WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS", "false"],
58
62
  ["WATTSWARM_WORKER_CONCURRENCY", "16"],
59
63
  ["WATTSWARM_WORKER_POLL_MS", "250"],
60
64
  ["WATTSWARM_WORKER_LEASE_MS", "30000"],
@@ -708,7 +712,10 @@ function ensureDeploymentAssets(options) {
708
712
  refreshDeploymentComposeAsset(templateComposePath, targetComposePath, options);
709
713
 
710
714
  const envMap = readEnvFile(targetEnvPath);
711
- envMap.set("WATTETHERIA_RUNTIME_ENV_FILE", path.basename(targetEnvPath));
715
+ const envFileName = path.basename(targetEnvPath);
716
+ envMap.set("WATTETHERIA_COMPOSE_ENV_FILE", envFileName);
717
+ envMap.set("WATTETHERIA_DEPLOY_DIR", ".");
718
+ envMap.set("WATTETHERIA_RUNTIME_ENV_FILE", `/var/lib/wattetheria-deploy/${envFileName}`);
712
719
  ensureDatabasePassword(envMap);
713
720
  if (options.tag) {
714
721
  pinImageTags(envMap, options.tag);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wattetheria",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Wattetheria deployment CLI",
5
5
  "license": "Apache-2.0",
6
6
  "type": "commonjs",