diff --git a/network/blatto-daemon.py b/network/blatto-daemon.py
new file mode 100755
index 0000000000000000000000000000000000000000..37bb202e7545f8f34de56b3293926d2109d1b4b8
--- /dev/null
+++ b/network/blatto-daemon.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python3
+import time
+import signal
+import sys, os
+import socket
+import json
+import subprocess
+
+def p(*args):
+    print(*args, flush=True)
+
+def handler(signum, frame):
+    signame = signal.Signals(signum).name
+    p(f'Signal handler called with signal {signame} ({signum})')
+signal.signal(signal.SIGHUP, handler)
+signal.pthread_sigmask(signal.SIG_BLOCK, [signal.SIGHUP])
+p("PID", os.getpid())
+
+
+sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
+
+def ip(*args):
+    if args[0] in [6, -6]:
+        args = list(args)
+        args[0] = "-6"
+    r = subprocess.run(["ip", "-j", *args], stdout=subprocess.PIPE, encoding="utf-8")
+    return json.loads(r.stdout) if r.stdout else None
+
+def iwconfig():
+    r = subprocess.run(["sh", "-c", "iwconfig  | jc --iwconfig"], stdout=subprocess.PIPE, encoding="utf-8")
+    return json.loads(r.stdout) if r.stdout else None
+
+def send(msg, target_ip):
+    msg = json.dumps(msg).encode("utf-8")
+    p(msg)
+    sock.sendto(b"____01"+msg, (target_ip, 12011))
+
+def format_ip(addr_info):
+    return f"{addr_info['local']}/{addr_info['prefixlen']}"
+def sort_ips(addrs):
+    return addrs
+
+while True:
+    p("RUN")
+    ipa = ip("a")
+    iwc = {i["name"]: i for i in iwconfig()}
+
+    def is_blatto(i):
+        for ip in i["addr_info"]:
+            if any(ip["local"].startswith(f"2a01:510:d504:75{i}a:") for i in range(0, 10)):
+                return True
+        return False
+
+    def is_blatto_wg(i):
+        for ip in i["addr_info"]:
+            if any(ip["local"].startswith(f"2a01:510:d504:75{i}b:") for i in range(0, 10)):
+                return True
+        return False
+
+    interfaces = {}
+    blatto = False
+    for i in ipa:
+        if i["operstate"] in ["UP", "UNKNOWN"]:
+            out = {
+                    "addr": [format_ip(ip) for ip in sort_ips(i["addr_info"])],
+                    "mtu": i["mtu"]
+                }
+
+            if i["link_type"] == "ether": # WiFi or ethernet, no loopback or wireguard
+                if is_blatto(i):
+                   blatto = True
+
+            if is_blatto_wg(i):
+                   blatto_wg = {"mtu": i["mtu"]}
+
+
+            if i["ifname"] in iwc:
+                w = iwc[i["ifname"]]
+                out["essid"] = w["essid"]
+            interfaces[i["ifname"]] = out
+    if blatto_wg:
+        try:
+            autorouting = open("/run/wg-blatto/autorouting").read().strip()
+            current_routing = open("/run/wg-blatto/routing").read().strip()
+            wanted_routing = "no" if blatto else autorouting
+            p(f"blatto-wg routing: {current_routing} -> {wanted_routing}")
+            if wanted_routing != current_routing:
+                subprocess.run(["/etc/net/wg-blatto-route", wanted_routing])
+
+            current_routing = open("/run/wg-blatto/routing").read().strip()
+            blatto_wg["routing"] = current_routing
+
+        except FileNotFoundError as e:
+            p(f"blatto-wg routing: {e}")
+    send({"blatto-wg": blatto_wg, "blatto": blatto, "interfaces": interfaces}, "2a01:510:d504:751a::1" if blatto else "2a01:510:d504:751b::1")
+    p("DONE")
+    signal.sigtimedwait([signal.SIGHUP], 10)
diff --git a/network/init.sh b/network/init.sh
index 51a75bd88d9d2b041a59d6b1319a3e10e0c9ced4..0046a29cf55f9601b40b5f206b93b74fff05e8f0 100755
--- a/network/init.sh
+++ b/network/init.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 cd "$(dirname "$0")"
 . ../userconfig-lib.sh
-version 7
+version 8
 need_root
 install_begin
 
@@ -29,9 +29,11 @@ done
 r udevadm control --reload-rules
 r udevadm trigger
 
-git_clupdate https://codeberg.org/regnarg/cdwifi-autologin.git build_git_cdwifi-autologin
-
+r -c git_clupdate https://codeberg.org/regnarg/cdwifi-autologin.git build_git_cdwifi-autologin
 confln build_git_cdwifi-autologin/cdwifi-autologin.sh /usr/bin/ cE
 confln cdwifi-autologin.service /lib/systemd/system/ cr
 
+confln blatto-daemon.py /usr/bin/net-blatto-daemon c
+init-service net-blatto-daemon root /usr/bin/net-blatto-daemon "" "ExecReload=/bin/kill -HUP \$MAINPID"
+
 install_ok