sync: 2026-03-15 22:00 — 33 files from Alexandria
Some checks failed
Lint & Format / detect (push) Failing after 40s
Monorepo Lint / lint-shell (push) Failing after 29s
Monorepo Lint / lint-js (push) Failing after 41s
Lint & Format / js-lint (push) Has been skipped
Lint & Format / py-lint (push) Has been skipped
Lint & Format / sh-lint (push) Has been skipped
Lint & Format / go-lint (push) Has been skipped

RoadChain-SHA2048: 2867f1c5c7b75253
RoadChain-Identity: alexa@sovereign
RoadChain-Full: 2867f1c5c7b75253f424feccd6bc0ca63474c4af16caab7c3067b501a8743b73868caa3468453e496cf5a883d0cd7ac2e3e0c4671c1f507f6973a7a81b6ba2a67cf432e61099d82d1862493cd627bbfcd5667f98aa51d6573436778b7255e1f02566fdd7b226ac767cab1ff8d6f74a2872ad8374678723f75d62e8cebf5aacc9c4b7e2153b65e1254175a98899b0a602b58808acd14d63bc09c14063116b5ae67097c59a5970734bec7805a1f122201568a4624707d168301a4c71050fc3c2d248036b82c7590a7316da65cb2828ffa2d5d1791a8f4caeabecaab0915cffa0814b9c76f1eead115756ddf0ddaa5b122e347343da28ae60680983be30b1ec8d50
This commit is contained in:
2026-03-15 22:00:02 -05:00
parent 0962fa9ace
commit f3fe40170e
33 changed files with 325 additions and 300 deletions

View File

@@ -1,50 +1,50 @@
[2026-03-15 21:03:01] [BEAT] [alice] load=0.68 mem=3348/3794MB temp=34.1C disk=80% [2026-03-15 21:32:01] [BEAT] [alice] load=1.02 mem=3340/3794MB temp=34.6C disk=80%
[2026-03-15 21:04:03] [BEAT] [alice] load=3.13 mem=3342/3794MB temp=34.1C disk=80% [2026-03-15 21:33:02] [BEAT] [alice] load=0.98 mem=3348/3794MB temp=34.6C disk=80%
[2026-03-15 21:05:01] [BEAT] [alice] load=1.95 mem=3338/3794MB temp=35.0C disk=80% [2026-03-15 21:34:01] [BEAT] [alice] load=0.61 mem=3342/3794MB temp=36.0C disk=80%
[2026-03-15 21:05:30] [BEAT] [alice] load=1.36 mem=3341/3794MB temp=34.1C disk=80% [2026-03-15 21:35:01] [BEAT] [alice] load=0.63 mem=3334/3794MB temp=34.6C disk=80%
[2026-03-15 21:05:30] [BEAT] [alice] load=1.36 mem=3341/3794MB temp=33.6C disk=80% [2026-03-15 21:36:01] [BEAT] [alice] load=0.69 mem=3344/3794MB temp=36.5C disk=80%
[2026-03-15 21:06:01] [BEAT] [alice] load=1.33 mem=3344/3794MB temp=36.5C disk=80% [2026-03-15 21:37:02] [BEAT] [alice] load=0.55 mem=3344/3794MB temp=34.6C disk=80%
[2026-03-15 21:07:01] [BEAT] [alice] load=1.03 mem=3347/3794MB temp=33.1C disk=80% [2026-03-15 21:38:01] [BEAT] [alice] load=0.95 mem=3341/3794MB temp=36.0C disk=80%
[2026-03-15 21:08:01] [BEAT] [alice] load=0.95 mem=3343/3794MB temp=35.5C disk=80% [2026-03-15 21:38:14] [BEAT] [alice] load=0.96 mem=3340/3794MB temp=35.5C disk=80%
[2026-03-15 21:09:01] [BEAT] [alice] load=0.47 mem=3350/3794MB temp=33.6C disk=80% [2026-03-15 21:38:14] [BEAT] [alice] load=0.96 mem=3339/3794MB temp=33.6C disk=80%
[2026-03-15 21:10:01] [FLEET] [alice] Starting cross-node health check [2026-03-15 21:39:01] [BEAT] [alice] load=0.99 mem=3348/3794MB temp=34.1C disk=80%
[2026-03-15 21:10:02] [BEAT] [alice] load=0.53 mem=3336/3794MB temp=37.0C disk=80% [2026-03-15 21:40:01] [FLEET] [alice] Starting cross-node health check
[2026-03-15 21:10:03] [FLEET] [alice] octavia: DOWN (no ping response) [2026-03-15 21:40:01] [BEAT] [alice] load=0.85 mem=3322/3794MB temp=36.0C disk=80%
[2026-03-15 21:10:04] [FLEET] [alice] cecilia: UP temp=43C mem=1269MB disk=19% [2026-03-15 21:40:03] [FLEET] [alice] octavia: DOWN (no ping response)
[2026-03-15 21:10:06] [FLEET] [alice] gematria: UP temp=C mem=4172MB disk=67% [2026-03-15 21:40:03] [FLEET] [alice] cecilia: UP temp=39C mem=1412MB disk=19%
[2026-03-15 21:10:07] [FLEET] [alice] lucidia: UP temp=58C mem=1423MB disk=33% [2026-03-15 21:40:05] [FLEET] [alice] gematria: UP temp=C mem=4184MB disk=67%
[2026-03-15 21:10:09] [FLEET] [alice] aria: DOWN (no ping response) [2026-03-15 21:40:33] [FLEET] [alice] lucidia: UP temp=52C mem=5496MB disk=33%
[2026-03-15 21:10:11] [FLEET] [alice] anastasia: UP temp=C mem=301MB disk=69% [2026-03-15 21:40:35] [FLEET] [alice] aria: DOWN (no ping response)
[2026-03-15 21:10:39] [BEAT] [alice] load=0.70 mem=3342/3794MB temp=36.0C disk=80% [2026-03-15 21:40:36] [FLEET] [alice] anastasia: UP temp=C mem=286MB disk=69%
[2026-03-15 21:10:39] [BEAT] [alice] load=0.70 mem=3341/3794MB temp=35.0C disk=80% [2026-03-15 21:41:01] [BEAT] [alice] load=0.41 mem=3341/3794MB temp=33.6C disk=80%
[2026-03-15 21:11:01] [BEAT] [alice] load=0.70 mem=3350/3794MB temp=34.1C disk=80% [2026-03-15 21:42:01] [BEAT] [alice] load=1.05 mem=3347/3794MB temp=34.6C disk=80%
[2026-03-15 21:12:01] [BEAT] [alice] load=0.82 mem=3342/3794MB temp=35.5C disk=80% [2026-03-15 21:43:01] [BEAT] [alice] load=0.75 mem=3347/3794MB temp=34.1C disk=80%
[2026-03-15 21:13:01] [BEAT] [alice] load=0.60 mem=3348/3794MB temp=34.6C disk=80% [2026-03-15 21:45:06] [BEAT] [alice] load=7.87 mem=3373/3794MB temp=37.5C disk=80%
[2026-03-15 21:14:01] [BEAT] [alice] load=0.59 mem=3346/3794MB temp=34.1C disk=80% [2026-03-15 21:45:06] [BEAT] [alice] load=7.87 mem=3372/3794MB temp=37.5C disk=80%
[2026-03-15 21:15:02] [BEAT] [alice] load=0.31 mem=3333/3794MB temp=36.5C disk=80% [2026-03-15 21:45:06] [BEAT] [alice] load=7.87 mem=3368/3794MB temp=38.5C disk=80%
[2026-03-15 21:15:47] [BEAT] [alice] load=0.65 mem=3336/3794MB temp=35.0C disk=80% [2026-03-15 21:45:06] [BEAT] [alice] load=7.87 mem=3367/3794MB temp=38.5C disk=80%
[2026-03-15 21:15:47] [DIAL] [alice] Switchboard unreachable [2026-03-15 21:45:34] [BEAT] [alice] load=5.61 mem=3380/3794MB temp=36.5C disk=80%
[2026-03-15 21:15:47] [BEAT] [alice] load=0.65 mem=3335/3794MB temp=36.0C disk=80% [2026-03-15 21:45:34] [BEAT] [alice] load=5.61 mem=3379/3794MB temp=35.5C disk=80%
[2026-03-15 21:16:01] [BEAT] [alice] load=0.58 mem=3342/3794MB temp=35.5C disk=80% [2026-03-15 21:45:52] [DIAL] [alice] Switchboard unreachable
[2026-03-15 21:16:09] [DIAL] [alice] Switchboard unreachable [2026-03-15 21:46:01] [BEAT] [alice] load=3.77 mem=3389/3794MB temp=35.0C disk=80%
[2026-03-15 21:17:01] [BEAT] [alice] load=0.79 mem=3343/3794MB temp=35.0C disk=80% [2026-03-15 21:46:07] [DIAL] [alice] Switchboard unreachable
[2026-03-15 21:18:02] [BEAT] [alice] load=0.82 mem=3349/3794MB temp=34.1C disk=80% [2026-03-15 21:47:01] [BEAT] [alice] load=2.23 mem=3383/3794MB temp=36.0C disk=80%
[2026-03-15 21:19:01] [BEAT] [alice] load=0.41 mem=3345/3794MB temp=35.5C disk=80% [2026-03-15 21:48:01] [BEAT] [alice] load=1.07 mem=3373/3794MB temp=34.1C disk=80%
[2026-03-15 21:20:01] [FLEET] [alice] Starting cross-node health check [2026-03-15 21:49:01] [BEAT] [alice] load=1.89 mem=3385/3794MB temp=34.1C disk=80%
[2026-03-15 21:20:01] [BEAT] [alice] load=0.61 mem=3333/3794MB temp=35.5C disk=80% [2026-03-15 21:50:02] [FLEET] [alice] Starting cross-node health check
[2026-03-15 21:20:03] [FLEET] [alice] octavia: DOWN (no ping response) [2026-03-15 21:50:02] [BEAT] [alice] load=1.08 mem=3373/3794MB temp=35.0C disk=80%
[2026-03-15 21:20:03] [FLEET] [alice] cecilia: UP temp=41C mem=1283MB disk=19% [2026-03-15 21:50:04] [FLEET] [alice] octavia: DOWN (no ping response)
[2026-03-15 21:20:05] [FLEET] [alice] gematria: UP temp=C mem=4191MB disk=67% [2026-03-15 21:50:04] [FLEET] [alice] cecilia: UP temp=37C mem=6998MB disk=19%
[2026-03-15 21:20:05] [FLEET] [alice] lucidia: UP temp=54C mem=1566MB disk=33% [2026-03-15 21:50:05] [FLEET] [alice] gematria: UP temp=C mem=4182MB disk=67%
[2026-03-15 21:20:07] [FLEET] [alice] aria: DOWN (no ping response) [2026-03-15 21:50:17] [FLEET] [alice] lucidia: UP temp=47C mem=6382MB disk=33%
[2026-03-15 21:20:08] [FLEET] [alice] anastasia: UP temp=C mem=304MB disk=69% [2026-03-15 21:50:17] [FLEET] [alice] aria: UP temp=42C mem=7050MB disk=81%
[2026-03-15 21:20:58] [BEAT] [alice] load=0.93 mem=3339/3794MB temp=37.0C disk=80% [2026-03-15 21:50:18] [FLEET] [alice] anastasia: UP temp=C mem=321MB disk=69%
[2026-03-15 21:20:58] [BEAT] [alice] load=0.93 mem=3339/3794MB temp=37.5C disk=80% [2026-03-15 21:50:43] [BEAT] [alice] load=1.25 mem=3380/3794MB temp=35.5C disk=80%
[2026-03-15 21:21:01] [BEAT] [alice] load=0.94 mem=3336/3794MB temp=37.5C disk=80% [2026-03-15 21:50:43] [BEAT] [alice] load=1.25 mem=3380/3794MB temp=35.5C disk=80%
[2026-03-15 21:22:02] [BEAT] [alice] load=1.09 mem=3342/3794MB temp=34.6C disk=80% [2026-03-15 21:51:01] [BEAT] [alice] load=1.24 mem=3381/3794MB temp=35.0C disk=80%
[2026-03-15 21:23:01] [BEAT] [alice] load=0.85 mem=3340/3794MB temp=37.0C disk=80% [2026-03-15 21:52:01] [BEAT] [alice] load=1.09 mem=3379/3794MB temp=34.6C disk=80%
[2026-03-15 21:24:01] [BEAT] [alice] load=0.65 mem=3349/3794MB temp=33.6C disk=80% [2026-03-15 21:53:01] [BEAT] [alice] load=0.91 mem=3379/3794MB temp=33.1C disk=80%
[2026-03-15 21:25:01] [BEAT] [alice] load=0.90 mem=3341/3794MB temp=37.0C disk=80% [2026-03-15 21:54:01] [BEAT] [alice] load=0.73 mem=3381/3794MB temp=33.6C disk=80%
[2026-03-15 21:26:01] [BEAT] [alice] load=1.03 mem=3339/3794MB temp=35.0C disk=80% [2026-03-15 21:55:01] [BEAT] [alice] load=0.58 mem=3377/3794MB temp=34.6C disk=80%
[2026-03-15 21:26:06] [BEAT] [alice] load=0.95 mem=3329/3794MB temp=35.5C disk=80% [2026-03-15 21:55:56] [BEAT] [alice] load=0.45 mem=3372/3794MB temp=33.6C disk=80%
[2026-03-15 21:26:06] [BEAT] [alice] load=0.95 mem=3342/3794MB temp=36.0C disk=80% [2026-03-15 21:55:56] [BEAT] [alice] load=0.45 mem=3368/3794MB temp=34.6C disk=80%

View File

@@ -1 +1 @@
{"node":"alice","ts":"2026-03-16T02:26:06Z","load":0.95,"mem_free_mb":3342,"mem_total_mb":3794,"temp_c":36.0,"disk_pct":80,"throttle":"0x0"} {"node":"alice","ts":"2026-03-16T02:55:56Z","load":0.45,"mem_free_mb":3368,"mem_total_mb":3794,"temp_c":34.6,"disk_pct":80,"throttle":"0x0"}

View File

@@ -1 +0,0 @@
alice

View File

@@ -1,29 +1,29 @@
LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:* LISTEN 0 5 0.0.0.0:8184 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8095 0.0.0.0:* users:(("python3",pid=608,fd=3))
LISTEN 0 511 0.0.0.0:8083 0.0.0.0:* users:(("node /usr/lib/n",pid=3890,fd=20))
LISTEN 0 511 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=610,fd=3))
LISTEN 0 5 0.0.0.0:8011 0.0.0.0:* users:(("python3",pid=828,fd=3))
LISTEN 0 5 0.0.0.0:8010 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8013 0.0.0.0:* users:(("python3",pid=622,fd=3))
LISTEN 0 5 0.0.0.0:8012 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8014 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8001 0.0.0.0:* users:(("python3",pid=617,fd=6))
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=7329,fd=5))
LISTEN 0 200 0.0.0.0:443 0.0.0.0:* LISTEN 0 200 0.0.0.0:443 0.0.0.0:*
LISTEN 0 244 127.0.0.1:5432 0.0.0.0:*
LISTEN 0 200 0.0.0.0:80 0.0.0.0:*
LISTEN 0 32 0.0.0.0:53 0.0.0.0:*
LISTEN 0 128 127.0.0.1:11434 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1024 0.0.0.0:6333 0.0.0.0:* LISTEN 0 1024 0.0.0.0:6333 0.0.0.0:*
LISTEN 0 128 0.0.0.0:6334 0.0.0.0:* LISTEN 0 128 0.0.0.0:6334 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8001 0.0.0.0:* users:(("python3",pid=611,fd=6)) LISTEN 0 200 0.0.0.0:80 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8012 0.0.0.0:* LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8013 0.0.0.0:* users:(("python3",pid=613,fd=3)) LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8014 0.0.0.0:* LISTEN 0 32 0.0.0.0:53 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8010 0.0.0.0:* LISTEN 0 128 127.0.0.1:11434 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8011 0.0.0.0:* users:(("python3",pid=820,fd=3)) LISTEN 0 244 127.0.0.1:5432 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8184 0.0.0.0:* LISTEN 0 128 [::1]:11434 [::]:*
LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=607,fd=3))
LISTEN 0 511 0.0.0.0:8083 0.0.0.0:* users:(("node /usr/lib/n",pid=4750,fd=20))
LISTEN 0 5 0.0.0.0:8095 0.0.0.0:* users:(("python3",pid=606,fd=3))
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=19832,fd=5))
LISTEN 0 511 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 511 *:8787 *:*
LISTEN 0 244 [::1]:5432 [::]:* LISTEN 0 244 [::1]:5432 [::]:*
LISTEN 0 200 [::]:443 [::]:* LISTEN 0 200 [::]:443 [::]:*
LISTEN 0 200 [::]:80 [::]:*
LISTEN 0 128 [::1]:11434 [::]:*
LISTEN 0 32 [::]:53 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::1]:6379 [::]:* LISTEN 0 511 [::1]:6379 [::]:*
LISTEN 0 200 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 32 [::]:53 [::]:*
LISTEN 0 511 *:8787 *:*

View File

@@ -16,6 +16,7 @@ dhcpcd.service
docker.service docker.service
getty@tty1.service getty@tty1.service
hciuart.service hciuart.service
nginx.service
pi-fleet-dashboard.service pi-fleet-dashboard.service
pihole-FTL.service pihole-FTL.service
pm2-pi.service pm2-pi.service

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "alice", "hostname": "alice",
"ts": "2026-03-16T02:26:09Z", "ts": "2026-03-16T02:55:58Z",
"uptime_seconds": 90752, "uptime_seconds": 695,
"kernel": "6.1.21-v8+", "kernel": "6.1.21-v8+",
"temp_c": 34.6, "temp_c": 35.5,
"memory_mb": { "memory_mb": {
"total": 3794, "total": 3794,
"used": 366, "used": 329,
"free": 3339 "free": 3376
}, },
"disk": "11G/15G (80%)", "disk": "11G/15G (80%)",
"load": [ "load": [
0.95, 0.58,
0.83, 0.97,
1.31 0.81
], ],
"ollama_models": [ "ollama_models": [
"qwen2.5:3b", "qwen2.5:3b",

View File

@@ -11,7 +11,7 @@ LISTEN 0 5 0.0.0.0:8787 0.0.0.0:* users:(("python3",pid
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=3461172,fd=8),("nginx",pid=3461171,fd=8)) LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=3461172,fd=8),("nginx",pid=3461171,fd=8))
LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=589,fd=4),("systemd",pid=1,fd=127)) LISTEN 0 4096 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=589,fd=4),("systemd",pid=1,fd=127))
LISTEN 0 4096 *:8080 *:* users:(("headscale",pid=2341808,fd=12)) LISTEN 0 4096 *:8080 *:* users:(("headscale",pid=2341808,fd=12))
LISTEN 0 511 *:3000 *:* users:(("node /srv/hello",pid=1753152,fd=19)) LISTEN 0 511 *:3000 *:* users:(("node /srv/hello",pid=1758871,fd=19))
LISTEN 0 511 *:3001 *:* users:(("node",pid=757,fd=21)) LISTEN 0 511 *:3001 *:* users:(("node",pid=757,fd=21))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=991,fd=8)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=991,fd=8))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=3461172,fd=9),("nginx",pid=3461171,fd=9)) LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=3461172,fd=9),("nginx",pid=3461171,fd=9))

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "anastasia", "hostname": "anastasia",
"ts": "2026-03-16T02:26:08Z", "ts": "2026-03-16T02:55:57Z",
"uptime_seconds": 6769860, "uptime_seconds": 6771649,
"kernel": "5.14.0-651.el9.x86_64", "kernel": "5.14.0-651.el9.x86_64",
"temp_c": 0, "temp_c": 0,
"memory_mb": { "memory_mb": {
"total": 765, "total": 765,
"used": 432, "used": 466,
"free": 332 "free": 298
}, },
"disk": "18G/25G (69%)", "disk": "18G/25G (69%)",
"load": [ "load": [
0.08, 0.03,
0.09, 0.03,
0.08 0.04
], ],
"ollama_models": [], "ollama_models": [],
"throttle": "N/A", "throttle": "N/A",

Binary file not shown.

View File

@@ -1 +1 @@
{"node":"aria","ts":"2026-03-15T01:39:45Z","load":0.11,"mem_free_mb":7068,"mem_total_mb":8059,"temp_c":52.4,"disk_pct":81,"throttle":"N/A"} {"node":"aria","ts":"2026-03-16T02:55:55Z","load":0.62,"mem_free_mb":7098,"mem_total_mb":8059,"temp_c":45.2,"disk_pct":81,"throttle":"N/A"}

View File

@@ -1,26 +1,26 @@
LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:* LISTEN 0 5 0.0.0.0:7890 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=740,fd=6))
LISTEN 0 5 0.0.0.0:8180 0.0.0.0:*
LISTEN 0 5 0.0.0.0:3000 0.0.0.0:* users:(("python3",pid=973,fd=3))
LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:* LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:45067 0.0.0.0:*
LISTEN 0 32 127.0.0.1:53 0.0.0.0:*
LISTEN 0 128 0.0.0.0:34001 0.0.0.0:* LISTEN 0 128 0.0.0.0:34001 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9443 0.0.0.0:* LISTEN 0 4096 0.0.0.0:9443 0.0.0.0:*
LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
LISTEN 0 128 127.0.0.1:9090 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9000 0.0.0.0:* LISTEN 0 4096 0.0.0.0:9000 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:39015 0.0.0.0:* LISTEN 0 4096 *:8086 *:*
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* LISTEN 0 128 *:8090 *:*
LISTEN 0 5 0.0.0.0:8180 0.0.0.0:* LISTEN 0 4096 *:11434 *:*
LISTEN 0 2048 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=737,fd=6))
LISTEN 0 128 127.0.0.1:9090 0.0.0.0:*
LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
LISTEN 0 5 0.0.0.0:3000 0.0.0.0:* users:(("python3",pid=970,fd=3))
LISTEN 0 32 127.0.0.1:53 0.0.0.0:*
LISTEN 0 16 *:5900 *:* LISTEN 0 16 *:5900 *:*
LISTEN 0 4096 [::]:9443 [::]:* LISTEN 0 4096 [::]:9443 [::]:*
LISTEN 0 4096 *:9100 *:*
LISTEN 0 128 [::1]:631 [::]:*
LISTEN 0 4096 [::]:9000 [::]:* LISTEN 0 4096 [::]:9000 [::]:*
LISTEN 0 4096 *:9100 *:*
LISTEN 0 32 [::1]:53 [::]:*
LISTEN 0 511 [::]:80 [::]:* LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:* LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 32 [::1]:53 [::]:* LISTEN 0 128 [::1]:631 [::]:*
LISTEN 0 128 *:8090 *:*
LISTEN 0 4096 *:8086 *:*
LISTEN 0 4096 *:11434 *:*

View File

@@ -1 +1 @@
{"node":"aria","status":"down","ts":"2026-03-16T02:26:06Z"} {"node":"aria","status":"down","ts":"2026-03-16T02:45:34Z"}

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "aria", "hostname": "aria",
"ts": "2026-03-15T01:39:50Z", "ts": "2026-03-16T02:55:55Z",
"uptime_seconds": 1559, "uptime_seconds": 624,
"kernel": "6.12.62+rpt-rpi-2712", "kernel": "6.12.62+rpt-rpi-2712",
"temp_c": 52.4, "temp_c": 45.8,
"memory_mb": { "memory_mb": {
"total": 8059, "total": 8059,
"used": 985, "used": 956,
"free": 7073 "free": 7102
}, },
"disk": "22G/29G (81%)", "disk": "22G/29G (81%)",
"load": [ "load": [
0.1, 0.62,
0.16, 0.84,
0.21 0.62
], ],
"ollama_models": [ "ollama_models": [
"nomic-embed-text:latest", "nomic-embed-text:latest",

View File

@@ -1,50 +1,50 @@
[2026-03-15 21:05:29] [BEAT] [cecilia] load=1.41 mem=1338/8058MB temp=40.2C disk=19% [2026-03-15 21:30:06] [FLEET] [cecilia] gematria: UP temp=C mem=4092MB disk=67%
[2026-03-15 21:06:01] [BEAT] [cecilia] load=0.90 mem=1339/8058MB temp=40.2C disk=19% [2026-03-15 21:30:46] [DIAL] [cecilia] Switchboard unreachable
[2026-03-15 21:07:01] [BEAT] [cecilia] load=0.53 mem=1344/8058MB temp=40.2C disk=19% [2026-03-15 21:31:01] [BEAT] [cecilia] load=0.52 mem=1455/8058MB temp=38.6C disk=19%
[2026-03-15 21:08:01] [BEAT] [cecilia] load=0.43 mem=1338/8058MB temp=41.4C disk=19% [2026-03-15 21:31:10] [FLEET] [cecilia] lucidia: UP temp=57C mem=2817MB disk=33%
[2026-03-15 21:09:01] [BEAT] [cecilia] load=0.48 mem=1336/8058MB temp=40.8C disk=19% [2026-03-15 21:31:12] [FLEET] [cecilia] aria: DOWN (no ping response)
[2026-03-15 21:10:02] [FLEET] [cecilia] Starting cross-node health check [2026-03-15 21:31:12] [FLEET] [cecilia] anastasia: UP temp=C mem=286MB disk=69%
[2026-03-15 21:10:02] [BEAT] [cecilia] load=0.42 mem=1296/8058MB temp=41.9C disk=19% [2026-03-15 21:31:26] [BEAT] [cecilia] load=0.45 mem=1466/8058MB temp=39.7C disk=19%
[2026-03-15 21:10:02] [HEAL] [cecilia] High swap: 1069MB — clearing inactive [2026-03-15 21:31:26] [BEAT] [cecilia] load=0.45 mem=1463/8058MB temp=39.7C disk=19%
[2026-03-15 21:10:02] [FLEET] [cecilia] alice: UP temp=38C mem=3322MB disk=80% [2026-03-15 21:32:01] [BEAT] [cecilia] load=0.34 mem=1453/8058MB temp=39.1C disk=19%
[2026-03-15 21:10:04] [FLEET] [cecilia] octavia: DOWN (no ping response) [2026-03-15 21:32:59] [DIAL] [cecilia] Switchboard unreachable
[2026-03-15 21:10:06] [FLEET] [cecilia] gematria: UP temp=C mem=4190MB disk=67% [2026-03-15 21:33:01] [BEAT] [cecilia] load=0.36 mem=1460/8058MB temp=38.6C disk=19%
[2026-03-15 21:10:07] [FLEET] [cecilia] lucidia: UP temp=58C mem=1423MB disk=33% [2026-03-15 21:34:02] [BEAT] [cecilia] load=0.31 mem=1454/8058MB temp=40.2C disk=19%
[2026-03-15 21:10:09] [FLEET] [cecilia] aria: DOWN (no ping response) [2026-03-15 21:35:01] [BEAT] [cecilia] load=0.23 mem=1446/8058MB temp=40.2C disk=19%
[2026-03-15 21:10:10] [FLEET] [cecilia] anastasia: UP temp=C mem=301MB disk=69% [2026-03-15 21:35:01] [HEAL] [cecilia] High swap: 1161MB — clearing inactive
[2026-03-15 21:10:38] [BEAT] [cecilia] load=0.29 mem=1341/8058MB temp=40.8C disk=19% [2026-03-15 21:36:01] [BEAT] [cecilia] load=1.00 mem=1461/8058MB temp=38.6C disk=19%
[2026-03-15 21:10:38] [BEAT] [cecilia] load=0.29 mem=1340/8058MB temp=40.8C disk=19% [2026-03-15 21:37:01] [BEAT] [cecilia] load=0.51 mem=1458/8058MB temp=38.0C disk=19%
[2026-03-15 21:11:01] [BEAT] [cecilia] load=0.39 mem=1336/8058MB temp=40.2C disk=19% [2026-03-15 21:38:01] [BEAT] [cecilia] load=0.58 mem=1462/8058MB temp=38.6C disk=19%
[2026-03-15 21:12:01] [BEAT] [cecilia] load=0.85 mem=1334/8058MB temp=41.4C disk=19% [2026-03-15 21:38:13] [BEAT] [cecilia] load=0.45 mem=1469/8058MB temp=38.6C disk=19%
[2026-03-15 21:13:01] [BEAT] [cecilia] load=0.52 mem=1327/8058MB temp=41.9C disk=19% [2026-03-15 21:38:13] [BEAT] [cecilia] load=0.45 mem=1467/8058MB temp=38.6C disk=19%
[2026-03-15 21:14:01] [BEAT] [cecilia] load=0.57 mem=1320/8058MB temp=41.4C disk=19% [2026-03-15 21:39:01] [BEAT] [cecilia] load=0.27 mem=1464/8058MB temp=38.6C disk=19%
[2026-03-15 21:15:01] [BEAT] [cecilia] load=0.56 mem=1275/8058MB temp=40.2C disk=19% [2026-03-15 21:40:01] [FLEET] [cecilia] Starting cross-node health check
[2026-03-15 21:15:01] [HEAL] [cecilia] High swap: 1052MB — clearing inactive [2026-03-15 21:40:01] [BEAT] [cecilia] load=0.33 mem=1430/8058MB temp=38.0C disk=19%
[2026-03-15 21:15:46] [DIAL] [cecilia] Switchboard unreachable [2026-03-15 21:40:01] [HEAL] [cecilia] High swap: 1161MB — clearing inactive
[2026-03-15 21:15:47] [BEAT] [cecilia] load=0.34 mem=1305/8058MB temp=39.7C disk=19% [2026-03-15 21:40:02] [FLEET] [cecilia] alice: UP temp=37C mem=3321MB disk=80%
[2026-03-15 21:15:47] [BEAT] [cecilia] load=0.34 mem=1303/8058MB temp=40.2C disk=19% [2026-03-15 21:40:04] [FLEET] [cecilia] octavia: DOWN (no ping response)
[2026-03-15 21:16:01] [BEAT] [cecilia] load=0.27 mem=1297/8058MB temp=40.2C disk=19% [2026-03-15 21:40:06] [FLEET] [cecilia] gematria: UP temp=C mem=4184MB disk=67%
[2026-03-15 21:17:01] [BEAT] [cecilia] load=0.28 mem=1301/8058MB temp=39.7C disk=19% [2026-03-15 21:40:34] [FLEET] [cecilia] lucidia: UP temp=52C mem=5492MB disk=33%
[2026-03-15 21:17:58] [DIAL] [cecilia] Switchboard unreachable [2026-03-15 21:40:36] [FLEET] [cecilia] aria: DOWN (no ping response)
[2026-03-15 21:18:01] [BEAT] [cecilia] load=0.34 mem=1227/8058MB temp=41.4C disk=19% [2026-03-15 21:40:37] [FLEET] [cecilia] anastasia: UP temp=C mem=287MB disk=69%
[2026-03-15 21:19:01] [BEAT] [cecilia] load=0.24 mem=1228/8058MB temp=39.7C disk=19% [2026-03-15 21:41:01] [BEAT] [cecilia] load=0.33 mem=1444/8058MB temp=38.6C disk=19%
[2026-03-15 21:20:01] [FLEET] [cecilia] Starting cross-node health check [2026-03-15 21:42:01] [BEAT] [cecilia] load=0.49 mem=1454/8058MB temp=38.6C disk=19%
[2026-03-15 21:20:01] [BEAT] [cecilia] load=0.34 mem=1198/8058MB temp=40.8C disk=19% [2026-03-15 21:43:01] [BEAT] [cecilia] load=0.52 mem=1450/8058MB temp=38.6C disk=19%
[2026-03-15 21:20:01] [HEAL] [cecilia] High swap: 1052MB — clearing inactive [2026-03-15 21:50:01] [FLEET] [cecilia] Starting cross-node health check
[2026-03-15 21:20:02] [FLEET] [cecilia] alice: UP temp=37C mem=3336MB disk=80% [2026-03-15 21:50:01] [BEAT] [cecilia] load=1.13 mem=7079/8062MB temp=37.5C disk=19%
[2026-03-15 21:20:04] [FLEET] [cecilia] octavia: DOWN (no ping response) [2026-03-15 21:50:02] [DIAL] [cecilia] Switchboard unreachable
[2026-03-15 21:20:05] [FLEET] [cecilia] gematria: UP temp=C mem=4191MB disk=67% [2026-03-15 21:50:02] [FLEET] [cecilia] alice: UP temp=36C mem=3367MB disk=80%
[2026-03-15 21:20:06] [FLEET] [cecilia] lucidia: UP temp=55C mem=1574MB disk=33% [2026-03-15 21:50:04] [FLEET] [cecilia] octavia: DOWN (no ping response)
[2026-03-15 21:20:08] [FLEET] [cecilia] aria: DOWN (no ping response) [2026-03-15 21:50:06] [FLEET] [cecilia] gematria: UP temp=C mem=4182MB disk=67%
[2026-03-15 21:20:09] [FLEET] [cecilia] anastasia: UP temp=C mem=304MB disk=69% [2026-03-15 21:50:17] [FLEET] [cecilia] lucidia: UP temp=47C mem=6380MB disk=33%
[2026-03-15 21:20:56] [BEAT] [cecilia] load=0.25 mem=1318/8058MB temp=39.7C disk=19% [2026-03-15 21:50:17] [FLEET] [cecilia] aria: UP temp=44C mem=7048MB disk=81%
[2026-03-15 21:20:56] [BEAT] [cecilia] load=0.25 mem=1315/8058MB temp=39.7C disk=19% [2026-03-15 21:50:19] [FLEET] [cecilia] anastasia: UP temp=C mem=321MB disk=69%
[2026-03-15 21:21:01] [BEAT] [cecilia] load=0.25 mem=1313/8058MB temp=39.1C disk=19% [2026-03-15 21:50:42] [BEAT] [cecilia] load=0.99 mem=7101/8062MB temp=36.4C disk=19%
[2026-03-15 21:22:01] [BEAT] [cecilia] load=0.19 mem=1315/8058MB temp=39.7C disk=19% [2026-03-15 21:50:42] [BEAT] [cecilia] load=0.99 mem=7099/8062MB temp=35.3C disk=19%
[2026-03-15 21:23:01] [BEAT] [cecilia] load=1.65 mem=1422/8058MB temp=47.4C disk=19% [2026-03-15 21:51:01] [BEAT] [cecilia] load=1.17 mem=7105/8062MB temp=36.4C disk=19%
[2026-03-15 21:24:01] [BEAT] [cecilia] load=1.10 mem=1454/8058MB temp=40.8C disk=19% [2026-03-15 21:52:01] [BEAT] [cecilia] load=0.57 mem=7138/8062MB temp=37.5C disk=19%
[2026-03-15 21:25:01] [BEAT] [cecilia] load=2.37 mem=1411/8058MB temp=43.0C disk=19% [2026-03-15 21:53:01] [BEAT] [cecilia] load=0.59 mem=7138/8062MB temp=35.9C disk=19%
[2026-03-15 21:25:01] [HEAL] [cecilia] High swap: 1161MB — clearing inactive [2026-03-15 21:54:01] [BEAT] [cecilia] load=0.92 mem=6361/8062MB temp=38.0C disk=19%
[2026-03-15 21:26:01] [BEAT] [cecilia] load=2.60 mem=1450/8058MB temp=40.8C disk=19% [2026-03-15 21:55:01] [BEAT] [cecilia] load=0.63 mem=6361/8062MB temp=37.0C disk=19%
[2026-03-15 21:26:05] [BEAT] [cecilia] load=2.39 mem=1446/8058MB temp=40.8C disk=19% [2026-03-15 21:55:55] [BEAT] [cecilia] load=0.43 mem=6384/8062MB temp=37.5C disk=19%
[2026-03-15 21:26:05] [BEAT] [cecilia] load=2.39 mem=1444/8058MB temp=40.2C disk=19% [2026-03-15 21:55:55] [BEAT] [cecilia] load=0.43 mem=6383/8062MB temp=37.0C disk=19%

View File

@@ -1 +1 @@
{"node":"cecilia","ts":"2026-03-16T02:26:05Z","load":2.39,"mem_free_mb":1444,"mem_total_mb":8058,"temp_c":40.2,"disk_pct":19,"throttle":"N/A"} {"node":"cecilia","ts":"2026-03-16T02:55:55Z","load":0.43,"mem_free_mb":6383,"mem_total_mb":8062,"temp_c":37.0,"disk_pct":19,"throttle":"N/A"}

View File

@@ -1 +1 @@
2026-03-14T20:15:07-05:00 2026-03-15T21:49:17-05:00

View File

@@ -1,36 +1,33 @@
LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=1043,fd=3)) LISTEN 0 4096 127.0.0.1:33551 0.0.0.0:*
LISTEN 0 511 0.0.0.0:8080 0.0.0.0:* LISTEN 0 4096 127.0.0.1:9000 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:* LISTEN 0 128 0.0.0.0:34001 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:* LISTEN 0 32 127.0.0.1:53 0.0.0.0:*
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=2340686,fd=5)) LISTEN 0 2048 0.0.0.0:8788 0.0.0.0:* users:(("python3",pid=1429,fd=16))
LISTEN 0 32 10.10.2.1:53 0.0.0.0:* LISTEN 0 5 0.0.0.0:8787 0.0.0.0:* users:(("python3",pid=1562,fd=3))
LISTEN 0 511 0.0.0.0:3100 0.0.0.0:* LISTEN 0 5 0.0.0.0:9100 0.0.0.0:*
LISTEN 0 5 0.0.0.0:11435 0.0.0.0:* users:(("python3",pid=1366,fd=3)) LISTEN 0 128 0.0.0.0:5002 0.0.0.0:* users:(("python3",pid=1566,fd=3))
LISTEN 0 5 0.0.0.0:3001 0.0.0.0:* LISTEN 0 128 0.0.0.0:5001 0.0.0.0:* users:(("python3",pid=1572,fd=3))
LISTEN 0 5 0.0.0.0:3000 0.0.0.0:* users:(("python3",pid=1548,fd=3)) LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 32 192.168.4.96:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:39187 0.0.0.0:* LISTEN 0 200 127.0.0.1:5432 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:35249 0.0.0.0:* LISTEN 0 32 192.168.4.96:53 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:42623 0.0.0.0:* LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=1251,fd=4))
LISTEN 0 200 127.0.0.1:5432 0.0.0.0:* LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=1035,fd=3))
LISTEN 0 128 0.0.0.0:34001 0.0.0.0:* LISTEN 0 511 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 128 0.0.0.0:5001 0.0.0.0:* users:(("python3",pid=1556,fd=3)) LISTEN 0 511 0.0.0.0:3100 0.0.0.0:*
LISTEN 0 128 0.0.0.0:5002 0.0.0.0:* users:(("python3",pid=1553,fd=3)) LISTEN 0 5 0.0.0.0:11435 0.0.0.0:* users:(("python3",pid=1412,fd=3))
LISTEN 0 4096 127.0.0.1:9000 0.0.0.0:* LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8788 0.0.0.0:* users:(("python3",pid=1362,fd=16)) LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8787 0.0.0.0:* users:(("python3",pid=1547,fd=3)) LISTEN 0 5 0.0.0.0:3001 0.0.0.0:*
LISTEN 0 32 127.0.0.1:53 0.0.0.0:* LISTEN 0 5 0.0.0.0:3000 0.0.0.0:* users:(("python3",pid=1563,fd=3))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 16 *:5900 *:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* LISTEN 0 4096 *:9001 *:*
LISTEN 0 4096 *:8086 *:* LISTEN 0 4096 *:9000 *:*
LISTEN 0 511 [::]:8080 [::]:* LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 4096 *:11434 *:* LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 16 *:5900 *:* LISTEN 0 4096 [::1]:9000 [::]:*
LISTEN 0 32 [::1]:53 [::]:* LISTEN 0 4096 *:8086 *:*
LISTEN 0 4096 [::1]:9000 [::]:* LISTEN 0 511 [::]:8080 [::]:*
LISTEN 0 4096 *:9001 *:* LISTEN 0 4096 *:11434 *:*
LISTEN 0 4096 *:9000 *:* LISTEN 0 32 [::1]:53 [::]:*
LISTEN 0 4096 *:9100 *:* LISTEN 0 200 [::1]:5432 [::]:*
LISTEN 0 200 [::1]:5432 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 511 [::]:80 [::]:*

View File

@@ -2,6 +2,7 @@ accounts-daemon.service
avahi-daemon.service avahi-daemon.service
blackroad-agent.service blackroad-agent.service
blackroad-dashboard.service blackroad-dashboard.service
blackroad-monitor.service
blackroad-nats-agent.service blackroad-nats-agent.service
bluetooth.service bluetooth.service
cece-api.service cece-api.service
@@ -18,7 +19,6 @@ influxdb.service
minio.service minio.service
ModemManager.service ModemManager.service
NetworkManager.service NetworkManager.service
node_exporter.service
ollama.service ollama.service
pironman5.service pironman5.service
polkit.service polkit.service

View File

@@ -0,0 +1 @@
{"node":"cecilia","status":"down","ts":"2026-03-16T02:45:34Z"}

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "cecilia", "hostname": "cecilia",
"ts": "2026-03-16T02:26:06Z", "ts": "2026-03-16T02:55:55Z",
"uptime_seconds": 90727, "uptime_seconds": 465,
"kernel": "6.12.62+rpt-rpi-2712", "kernel": "6.12.62+rpt-rpi-2712",
"temp_c": 41.4, "temp_c": 38.0,
"memory_mb": { "memory_mb": {
"total": 8058, "total": 8062,
"used": 6616, "used": 1689,
"free": 1442 "free": 6373
}, },
"disk": "79G/457G (19%)", "disk": "81G/457G (19%)",
"load": [ "load": [
2.39, 0.47,
1.38, 0.55,
1.03 0.28
], ],
"ollama_models": [ "ollama_models": [
"deepseek-r1:1.5b", "deepseek-r1:1.5b",

View File

@@ -6,7 +6,6 @@ do-agent.service
droplet-agent.service droplet-agent.service
fail2ban.service fail2ban.service
getty@tty1.service getty@tty1.service
github-runner-gematria.service
irqbalance.service irqbalance.service
lucidia-agent.service lucidia-agent.service
lucidia-watchdog.service lucidia-watchdog.service

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "gematria", "hostname": "gematria",
"ts": "2026-03-16T02:26:11Z", "ts": "2026-03-16T02:55:58Z",
"uptime_seconds": 5427163, "uptime_seconds": 5428950,
"kernel": "5.15.0-113-generic", "kernel": "5.15.0-113-generic",
"temp_c": 0, "temp_c": 0,
"memory_mb": { "memory_mb": {
"total": 7937, "total": 7937,
"used": 3580, "used": 3271,
"free": 3888 "free": 4238
}, },
"disk": "52G/78G (67%)", "disk": "52G/78G (67%)",
"load": [ "load": [
4.06, 3.09,
3.33, 3.12,
3.16 3.37
], ],
"ollama_models": [ "ollama_models": [
"qwen2.5:7b", "qwen2.5:7b",
@@ -26,5 +26,5 @@
], ],
"throttle": "N/A", "throttle": "N/A",
"voltage": "N/A", "voltage": "N/A",
"services_running": 32 "services_running": 31
} }

Binary file not shown.

View File

@@ -1,14 +1,14 @@
blackroad-gitea Up 25 hours blackroad-gitea Up 5 minutes
road-pdns-admin Up 25 hours (healthy) road-pdns-admin Up 5 minutes (healthy)
road-pdns Up 25 hours road-pdns Up 5 minutes
road-dns-db Up 25 hours road-dns-db Up 5 minutes
roadauth Up 25 hours roadauth Up 5 minutes
roadapi Up 25 hours roadapi Up 5 minutes
blackroad-edge-agent Up 25 hours blackroad-edge-agent Up 5 minutes
blackroad.systems Up 25 hours blackroad.systems Up 5 minutes
blackroadai.com Up 25 hours blackroadai.com Up 5 minutes
blackroad-auth-gateway Up 25 hours blackroad-auth-gateway Up 5 minutes
blackroad-metaverse Up 25 hours blackroad-metaverse Up 5 minutes
blackroad-os Up 25 hours blackroad-os Up 5 minutes
blackroad-os-carpool Up 25 hours blackroad-os-carpool Up 5 minutes
pi-my-agent-1 Up 25 hours (healthy) pi-my-agent-1 Up 5 minutes (healthy)

View File

@@ -1 +1 @@
{"node":"lucidia","ts":"2026-03-16T02:26:09Z","load":44.75,"mem_free_mb":2476,"mem_total_mb":8063,"temp_c":57.3,"disk_pct":33,"throttle":"N/A"} {"node":"lucidia","ts":"2026-03-16T02:55:55Z","load":3.44,"mem_free_mb":3661,"mem_total_mb":8063,"temp_c":55.1,"disk_pct":33,"throttle":"N/A"}

View File

@@ -1,56 +1,54 @@
LISTEN 0 128 0.0.0.0:34001 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:40753 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:20242 0.0.0.0:*
LISTEN 0 4096 100.66.235.47:38850 0.0.0.0:* LISTEN 0 4096 100.66.235.47:38850 0.0.0.0:*
LISTEN 0 511 127.0.0.1:4010 0.0.0.0:* LISTEN 0 511 127.0.0.1:4010 0.0.0.0:*
LISTEN 0 128 0.0.0.0:34001 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:* LISTEN 0 4096 127.0.0.1:8088 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* LISTEN 0 4096 127.0.0.1:20241 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 4096 127.0.0.1:20242 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9192 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9090 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8787 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8889 0.0.0.0:* LISTEN 0 128 0.0.0.0:8889 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8787 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9090 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:9192 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 200 127.0.0.1:5432 0.0.0.0:* LISTEN 0 200 127.0.0.1:5432 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3100 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3109 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8011 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8000 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8180 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8182 0.0.0.0:*
LISTEN 0 511 0.0.0.0:8081 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:8082 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:4001 0.0.0.0:* LISTEN 0 4096 0.0.0.0:4001 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:4002 0.0.0.0:* LISTEN 0 4096 0.0.0.0:4002 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:46699 0.0.0.0:* LISTEN 0 4096 0.0.0.0:8080 0.0.0.0:*
LISTEN 0 32 127.0.0.1:53 0.0.0.0:* LISTEN 0 511 0.0.0.0:8081 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:2222 0.0.0.0:* LISTEN 0 4096 0.0.0.0:8082 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:37679 0.0.0.0:* LISTEN 0 5 0.0.0.0:8180 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8182 0.0.0.0:*
LISTEN 0 5 0.0.0.0:8011 0.0.0.0:*
LISTEN 0 2048 0.0.0.0:8000 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3109 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3100 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:33179 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3005 0.0.0.0:* LISTEN 0 4096 0.0.0.0:3005 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3006 0.0.0.0:* LISTEN 0 4096 0.0.0.0:3006 0.0.0.0:*
LISTEN 0 5 0.0.0.0:3000 0.0.0.0:* LISTEN 0 5 0.0.0.0:3000 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:3002 0.0.0.0:* LISTEN 0 4096 0.0.0.0:3002 0.0.0.0:*
LISTEN 0 32 127.0.0.1:53 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:2222 0.0.0.0:*
LISTEN 0 128 127.0.0.1:631 0.0.0.0:* LISTEN 0 128 127.0.0.1:631 0.0.0.0:*
LISTEN 0 4096 [fd7a:115c:a1e0::5401:eb6c]:46193 [::]:*
LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 4096 [::]:9192 [::]:*
LISTEN 0 4096 *:9100 *:* LISTEN 0 4096 *:9100 *:*
LISTEN 0 4096 [::]:9090 [::]:* LISTEN 0 4096 [::]:9090 [::]:*
LISTEN 0 200 [::1]:5432 [::]:* LISTEN 0 4096 [::]:9192 [::]:*
LISTEN 0 4096 [::]:3100 [::]:* LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 4096 [::]:3109 [::]:* LISTEN 0 511 [::]:80 [::]:*
LISTEN 0 4096 *:11434 *:* LISTEN 0 128 [::1]:631 [::]:*
LISTEN 0 4096 [::]:4001 [::]:*
LISTEN 0 4096 [::]:4002 [::]:*
LISTEN 0 511 *:8090 *:* LISTEN 0 511 *:8090 *:*
LISTEN 0 4096 *:8086 *:* LISTEN 0 4096 *:8086 *:*
LISTEN 0 4096 [::]:8080 [::]:* LISTEN 0 4096 [::]:8080 [::]:*
LISTEN 0 4096 [::]:8082 [::]:* LISTEN 0 4096 [::]:8082 [::]:*
LISTEN 0 4096 [::]:4001 [::]:* LISTEN 0 4096 *:11434 *:*
LISTEN 0 4096 [::]:4002 [::]:*
LISTEN 0 4096 [::]:2222 [::]:*
LISTEN 0 32 [::1]:53 [::]:* LISTEN 0 32 [::1]:53 [::]:*
LISTEN 0 4096 [::]:3109 [::]:*
LISTEN 0 4096 [::]:3100 [::]:*
LISTEN 0 4096 [::]:3005 [::]:* LISTEN 0 4096 [::]:3005 [::]:*
LISTEN 0 4096 [::]:3006 [::]:* LISTEN 0 4096 [::]:3006 [::]:*
LISTEN 0 4096 [::]:3002 [::]:* LISTEN 0 4096 [::]:3002 [::]:*
LISTEN 0 128 [::1]:631 [::]:* LISTEN 0 4096 [::]:2222 [::]:*
LISTEN 0 200 [::1]:5432 [::]:*
LISTEN 0 4096 [fd7a:115c:a1e0::5401:eb6c]:46193 [::]:*

View File

@@ -6,7 +6,6 @@ blackroad-agent.service
blackroad-api.service blackroad-api.service
blackroad-nats-agent.service blackroad-nats-agent.service
blackroad-relay.service blackroad-relay.service
blackroad-ssh-tunnel.service
bluetooth.service bluetooth.service
cloudflared.service cloudflared.service
colord.service colord.service
@@ -29,7 +28,6 @@ pironman5.service
pm2-pi.service pm2-pi.service
polkit.service polkit.service
postgresql@17-main.service postgresql@17-main.service
road-phone.service
roadnet-failover.service roadnet-failover.service
rtkit-daemon.service rtkit-daemon.service
serial-getty@ttyAMA10.service serial-getty@ttyAMA10.service

View File

@@ -0,0 +1 @@
{"node":"lucidia","status":"down","ts":"2026-03-16T02:45:34Z"}

View File

@@ -1,19 +1,19 @@
{ {
"hostname": "octavia", "hostname": "octavia",
"ts": "2026-03-16T02:26:19Z", "ts": "2026-03-16T02:55:56Z",
"uptime_seconds": 90743, "uptime_seconds": 514,
"kernel": "6.12.62+rpt-rpi-2712", "kernel": "6.12.62+rpt-rpi-2712",
"temp_c": 56.2, "temp_c": 54.5,
"memory_mb": { "memory_mb": {
"total": 8063, "total": 8063,
"used": 5705, "used": 4456,
"free": 2357 "free": 3607
}, },
"disk": "73G/235G (33%)", "disk": "73G/235G (33%)",
"load": [ "load": [
39.93, 3.44,
16.77, 4.56,
8.64 3.07
], ],
"ollama_models": [ "ollama_models": [
"qwen2.5:3b", "qwen2.5:3b",
@@ -25,5 +25,5 @@
], ],
"throttle": "N/A", "throttle": "N/A",
"voltage": "N/A", "voltage": "N/A",
"services_running": 48 "services_running": 46
} }

View File

@@ -1 +1 @@
{"node":"octavia","status":"down","ts":"2026-03-16T02:26:06Z"} {"node":"octavia","status":"down","ts":"2026-03-16T02:55:55Z"}

View File

@@ -395,11 +395,25 @@ async function handleStats(env) {
// ─── Index page (add to search index) ───────────────────────────────── // ─── Index page (add to search index) ─────────────────────────────────
async function handleIndex(request, env) { async function handleIndex(request, env) {
const auth = request.headers.get('Authorization'); const auth = request.headers.get('Authorization');
if (!auth || auth !== `Bearer ${env.INDEX_KEY}`) { if (!auth || !env.INDEX_KEY) {
return Response.json({ error: 'Unauthorized' }, { status: 401 });
}
// Constant-time comparison via HMAC to prevent timing attacks
const enc = new TextEncoder();
const key = await crypto.subtle.importKey('raw', enc.encode('auth-check'), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const expectedMac = await crypto.subtle.sign('HMAC', key, enc.encode(`Bearer ${env.INDEX_KEY}`));
const actualMac = await crypto.subtle.sign('HMAC', key, enc.encode(auth));
const expectedArr = new Uint8Array(expectedMac);
const actualArr = new Uint8Array(actualMac);
let match = expectedArr.length === actualArr.length;
for (let i = 0; i < expectedArr.length; i++) match &= expectedArr[i] === actualArr[i];
if (!match) {
return Response.json({ error: 'Unauthorized' }, { status: 401 }); return Response.json({ error: 'Unauthorized' }, { status: 401 });
} }
const pages = await request.json(); let pages;
try { pages = await request.json(); }
catch { return Response.json({ error: 'Invalid JSON' }, { status: 400 }); }
const toIndex = Array.isArray(pages) ? pages : [pages]; const toIndex = Array.isArray(pages) ? pages : [pages];
let indexed = 0; let indexed = 0;
@@ -433,16 +447,10 @@ async function handleIndex(request, env) {
// ─── Rebuild FTS Index ─────────────────────────────────────────────── // ─── Rebuild FTS Index ───────────────────────────────────────────────
async function handleRebuild(env) { async function handleRebuild(env) {
await env.DB.prepare('DELETE FROM pages_fts').run(); // Drop and recreate FTS table
const rows = await env.DB.prepare('SELECT rowid, title, description, content, tags FROM pages').all(); try { await env.DB.prepare("INSERT INTO pages_fts(pages_fts) VALUES('rebuild')").run(); } catch {}
let rebuilt = 0; const count = await env.DB.prepare('SELECT COUNT(*) as c FROM pages').first();
for (const r of (rows.results || [])) { return Response.json({ ok: true, rebuilt: count?.c || 0, note: 'FTS rebuild triggered' });
await env.DB.prepare(
'INSERT INTO pages_fts(rowid, title, description, content, tags) VALUES (?, ?, ?, ?, ?)'
).bind(r.rowid, r.title, r.description, r.content, r.tags).run();
rebuilt++;
}
return Response.json({ ok: true, rebuilt });
} }
// ─── Lucky (I'm Feeling Lucky — redirect to top result) ────────────── // ─── Lucky (I'm Feeling Lucky — redirect to top result) ──────────────
@@ -463,6 +471,15 @@ async function handleLucky(request, env) {
} }
if (result?.url) { if (result?.url) {
// Validate redirect URL — only allow blackroad.io domains to prevent open redirect
try {
const target = new URL(result.url);
if (!target.hostname.endsWith('blackroad.io') && !target.hostname.endsWith('blackroad.company') && !target.hostname.endsWith('lucidia.earth')) {
return Response.json({ error: 'External redirect blocked', url: result.url }, { status: 403 });
}
} catch {
return Response.json({ error: 'Invalid URL in index' }, { status: 500 });
}
return Response.redirect(result.url, 302); return Response.redirect(result.url, 302);
} }
return Response.json({ error: 'No results found' }, { status: 404 }); return Response.json({ error: 'No results found' }, { status: 404 });

View File

@@ -38,9 +38,8 @@ export default {
try { try {
// ── Push data from collector ── // ── Push data from collector ──
if (path === '/push' && request.method === 'POST') { if (path === '/push' && request.method === 'POST') {
const authKey = request.headers.get('Authorization')?.replace('Bearer ', '') || const authKey = request.headers.get('Authorization')?.replace('Bearer ', '');
url.searchParams.get('key'); if (!authKey || authKey !== env.STATS_KEY) return json({ error: 'unauthorized — use Authorization header' }, 401);
if (authKey !== env.STATS_KEY) return json({ error: 'unauthorized' }, 401);
const body = await request.json(); const body = await request.json();
const { category, data } = body; const { category, data } = body;

View File

@@ -969,6 +969,15 @@ function handleHealth() {
}); });
} }
// ─── Rate limiting ───────────────────────────────────────────────────────
const rl = new Map();
function rateLimit(ip, max = 30, windowSec = 60) {
const now = Date.now();
const entry = rl.get(ip);
if (!entry || now - entry.t > windowSec * 1000) { rl.set(ip, { t: now, c: 1 }); return true; }
return ++entry.c <= max;
}
// ─── Router ────────────────────────────────────────────────────────────── // ─── Router ──────────────────────────────────────────────────────────────
export default { export default {
async fetch(request, env) { async fetch(request, env) {
@@ -980,6 +989,12 @@ export default {
return new Response(null, { status: 204, headers: { ...cors, ...SECURITY_HEADERS } }); return new Response(null, { status: 204, headers: { ...cors, ...SECURITY_HEADERS } });
} }
// Rate limit all requests
const clientIp = request.headers.get('cf-connecting-ip') || 'unknown';
if (!rateLimit(clientIp)) {
return addHeaders(err('Too many requests — slow down', 429), cors);
}
const db = env.DB; const db = env.DB;
let response; let response;