sync: 2026-03-17 08:00 — 21 files from Alexandria
Some checks failed
Lint & Format / detect (push) Failing after 36s
Monorepo Lint / lint-shell (push) Failing after 40s
Monorepo Lint / lint-js (push) Failing after 40s
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
Some checks failed
Lint & Format / detect (push) Failing after 36s
Monorepo Lint / lint-shell (push) Failing after 40s
Monorepo Lint / lint-js (push) Failing after 40s
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: 59e0f844fc760998 RoadChain-Identity: alexa@sovereign RoadChain-Full: 59e0f844fc760998d8a3ce5f7d219f21bf7a4b82472c28ebe3e1258438b6770dac3c13ca3f8a43275319408ec7847d36f0031322f7608066c4f8bdd225b2b127eb1c1f3d773ea645b9569eaf9d430766951c0613bf350f2db285cc35fccead7e4a9608b46fd8e057561a25705cf4cc5aaf9abedc4cce547df8008777c4af3b2f2578c2a0eb47489f660eb108414dd7f8d3ada3e2d4062e50cc1d29099f5fa3490e6e44a7216ed37cd761bc507e3d855558935931f27c19981f26c1d2d2c91a9b1b227e3ee7650ab885eaa69aabb856110557d98346a0807bacb36142c0b7fd1510158fdd5d9756f9f2e2d7f1d5d2b0ee8b1277025f8d9a9cafd9cfb536abf568
This commit is contained in:
@@ -1,50 +1,50 @@
|
|||||||
[2026-03-17 07:01:01] [BEAT] [alice] load=1.25 mem=3225/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:33:02] [BEAT] [alice] load=0.97 mem=3225/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:02:01] [BEAT] [alice] load=0.82 mem=3224/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:34:01] [BEAT] [alice] load=1.62 mem=3220/3794MB temp=37.5C disk=85%
|
||||||
[2026-03-17 07:03:02] [BEAT] [alice] load=1.02 mem=3232/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:35:01] [BEAT] [alice] load=0.86 mem=3222/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:03:32] [BEAT] [alice] load=0.73 mem=3225/3794MB temp=35.0C disk=85%
|
[2026-03-17 07:35:28] [BEAT] [alice] load=0.85 mem=3217/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:03:32] [BEAT] [alice] load=0.73 mem=3223/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:35:28] [BEAT] [alice] load=0.85 mem=3215/3794MB temp=35.5C disk=85%
|
||||||
[2026-03-17 07:04:01] [BEAT] [alice] load=0.62 mem=3226/3794MB temp=33.1C disk=85%
|
[2026-03-17 07:36:02] [BEAT] [alice] load=0.98 mem=3228/3794MB temp=36.0C disk=85%
|
||||||
[2026-03-17 07:05:01] [BEAT] [alice] load=1.10 mem=3218/3794MB temp=35.5C disk=85%
|
[2026-03-17 07:37:18] [BEAT] [alice] load=3.25 mem=3220/3794MB temp=35.0C disk=85%
|
||||||
[2026-03-17 07:06:01] [BEAT] [alice] load=2.39 mem=3225/3794MB temp=33.6C disk=85%
|
[2026-03-17 07:38:01] [BEAT] [alice] load=3.83 mem=3227/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:07:01] [BEAT] [alice] load=1.98 mem=3228/3794MB temp=35.0C disk=85%
|
[2026-03-17 07:39:01] [BEAT] [alice] load=1.95 mem=3224/3794MB temp=33.1C disk=85%
|
||||||
[2026-03-17 07:08:01] [BEAT] [alice] load=1.47 mem=3228/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:40:01] [FLEET] [alice] Starting cross-node health check
|
||||||
[2026-03-17 07:08:41] [BEAT] [alice] load=1.40 mem=3221/3794MB temp=37.5C disk=85%
|
[2026-03-17 07:40:02] [BEAT] [alice] load=1.56 mem=3218/3794MB temp=35.0C disk=85%
|
||||||
[2026-03-17 07:08:41] [BEAT] [alice] load=1.40 mem=3219/3794MB temp=36.0C disk=85%
|
[2026-03-17 07:40:02] [FLEET] [alice] octavia: UP temp=45C mem=2114MB disk=87%
|
||||||
[2026-03-17 07:09:01] [BEAT] [alice] load=1.27 mem=3229/3794MB temp=35.0C disk=85%
|
[2026-03-17 07:40:03] [FLEET] [alice] cecilia: UP temp=35C mem=986MB disk=34%
|
||||||
[2026-03-17 07:10:01] [FLEET] [alice] Starting cross-node health check
|
[2026-03-17 07:40:04] [FLEET] [alice] gematria: UP temp=C mem=4839MB disk=69%
|
||||||
[2026-03-17 07:10:01] [BEAT] [alice] load=0.91 mem=3222/3794MB temp=36.0C disk=85%
|
[2026-03-17 07:40:05] [FLEET] [alice] lucidia: UP temp=56C mem=2641MB disk=31%
|
||||||
[2026-03-17 07:10:02] [FLEET] [alice] octavia: UP temp=42C mem=2513MB disk=86%
|
[2026-03-17 07:40:06] [FLEET] [alice] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:03] [FLEET] [alice] cecilia: UP temp=38C mem=1128MB disk=34%
|
[2026-03-17 07:40:08] [FLEET] [alice] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:04] [FLEET] [alice] gematria: UP temp=C mem=4960MB disk=69%
|
[2026-03-17 07:40:33] [BEAT] [alice] load=1.64 mem=3217/3794MB temp=35.0C disk=85%
|
||||||
[2026-03-17 07:10:05] [FLEET] [alice] lucidia: UP temp=59C mem=2649MB disk=31%
|
[2026-03-17 07:40:33] [BEAT] [alice] load=1.64 mem=3226/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:10:07] [FLEET] [alice] aria: DOWN (no ping response)
|
[2026-03-17 07:41:01] [BEAT] [alice] load=1.15 mem=3217/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:10:09] [FLEET] [alice] anastasia: DOWN (no ping response)
|
[2026-03-17 07:42:01] [BEAT] [alice] load=1.14 mem=3223/3794MB temp=33.1C disk=85%
|
||||||
[2026-03-17 07:11:01] [BEAT] [alice] load=0.73 mem=3225/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:42:36] [DIAL] [alice] Switchboard unreachable
|
||||||
[2026-03-17 07:12:01] [BEAT] [alice] load=0.90 mem=3219/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:43:01] [BEAT] [alice] load=0.83 mem=3221/3794MB temp=33.6C disk=85%
|
||||||
[2026-03-17 07:12:35] [DIAL] [alice] Switchboard unreachable
|
[2026-03-17 07:44:01] [BEAT] [alice] load=0.98 mem=3223/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:13:01] [BEAT] [alice] load=0.88 mem=3228/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:45:02] [BEAT] [alice] load=0.95 mem=3216/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:13:47] [BEAT] [alice] load=0.81 mem=3226/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:45:37] [BEAT] [alice] load=1.84 mem=3212/3794MB temp=37.5C disk=85%
|
||||||
[2026-03-17 07:13:47] [BEAT] [alice] load=0.81 mem=3225/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:45:37] [BEAT] [alice] load=1.84 mem=3210/3794MB temp=38.0C disk=85%
|
||||||
[2026-03-17 07:14:01] [BEAT] [alice] load=0.71 mem=3230/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:45:47] [DIAL] [alice] Switchboard unreachable
|
||||||
[2026-03-17 07:15:02] [BEAT] [alice] load=1.30 mem=3222/3794MB temp=35.5C disk=85%
|
[2026-03-17 07:46:02] [BEAT] [alice] load=1.46 mem=3223/3794MB temp=35.0C disk=85%
|
||||||
[2026-03-17 07:15:47] [DIAL] [alice] Switchboard unreachable
|
[2026-03-17 07:47:01] [BEAT] [alice] load=0.73 mem=3224/3794MB temp=33.1C disk=85%
|
||||||
[2026-03-17 07:16:01] [BEAT] [alice] load=0.77 mem=3225/3794MB temp=33.6C disk=85%
|
[2026-03-17 07:48:01] [BEAT] [alice] load=1.19 mem=3225/3794MB temp=35.0C disk=85%
|
||||||
[2026-03-17 07:17:01] [BEAT] [alice] load=1.03 mem=3223/3794MB temp=35.0C disk=85%
|
[2026-03-17 07:49:01] [BEAT] [alice] load=1.44 mem=3223/3794MB temp=33.1C disk=85%
|
||||||
[2026-03-17 07:18:01] [BEAT] [alice] load=1.11 mem=3225/3794MB temp=33.1C disk=85%
|
[2026-03-17 07:50:01] [FLEET] [alice] Starting cross-node health check
|
||||||
[2026-03-17 07:18:53] [BEAT] [alice] load=1.28 mem=3228/3794MB temp=35.0C disk=85%
|
[2026-03-17 07:50:01] [BEAT] [alice] load=1.10 mem=3217/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:18:53] [BEAT] [alice] load=1.28 mem=3227/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:50:03] [FLEET] [alice] octavia: UP temp=44C mem=1955MB disk=87%
|
||||||
[2026-03-17 07:19:02] [BEAT] [alice] load=1.16 mem=3224/3794MB temp=34.1C disk=85%
|
[2026-03-17 07:50:03] [FLEET] [alice] cecilia: UP temp=35C mem=934MB disk=34%
|
||||||
[2026-03-17 07:20:01] [FLEET] [alice] Starting cross-node health check
|
[2026-03-17 07:50:05] [FLEET] [alice] gematria: UP temp=C mem=4921MB disk=69%
|
||||||
[2026-03-17 07:20:01] [BEAT] [alice] load=0.76 mem=3219/3794MB temp=33.6C disk=85%
|
[2026-03-17 07:50:05] [FLEET] [alice] lucidia: UP temp=55C mem=2639MB disk=31%
|
||||||
[2026-03-17 07:20:02] [FLEET] [alice] octavia: UP temp=42C mem=2443MB disk=86%
|
[2026-03-17 07:50:07] [FLEET] [alice] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:02] [FLEET] [alice] cecilia: UP temp=36C mem=956MB disk=34%
|
[2026-03-17 07:50:09] [FLEET] [alice] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:04] [FLEET] [alice] gematria: UP temp=C mem=4952MB disk=69%
|
[2026-03-17 07:50:48] [BEAT] [alice] load=0.83 mem=3222/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:20:05] [FLEET] [alice] lucidia: UP temp=62C mem=2632MB disk=31%
|
[2026-03-17 07:50:48] [BEAT] [alice] load=0.83 mem=3222/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:20:07] [FLEET] [alice] aria: DOWN (no ping response)
|
[2026-03-17 07:51:01] [BEAT] [alice] load=0.71 mem=3221/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:20:09] [FLEET] [alice] anastasia: DOWN (no ping response)
|
[2026-03-17 07:52:01] [BEAT] [alice] load=1.04 mem=3222/3794MB temp=33.6C disk=85%
|
||||||
[2026-03-17 07:21:01] [BEAT] [alice] load=0.87 mem=3226/3794MB temp=33.1C disk=85%
|
[2026-03-17 07:53:02] [BEAT] [alice] load=1.08 mem=3214/3794MB temp=34.1C disk=85%
|
||||||
[2026-03-17 07:22:04] [BEAT] [alice] load=1.36 mem=3231/3794MB temp=37.0C disk=85%
|
[2026-03-17 07:54:01] [BEAT] [alice] load=1.02 mem=3225/3794MB temp=32.1C disk=85%
|
||||||
[2026-03-17 07:23:01] [BEAT] [alice] load=1.50 mem=3225/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:55:01] [BEAT] [alice] load=0.81 mem=3216/3794MB temp=34.6C disk=85%
|
||||||
[2026-03-17 07:24:01] [BEAT] [alice] load=0.95 mem=3224/3794MB temp=36.0C disk=85%
|
[2026-03-17 07:56:01] [BEAT] [alice] load=1.14 mem=3223/3794MB temp=32.6C disk=85%
|
||||||
[2026-03-17 07:24:57] [BEAT] [alice] load=1.05 mem=3226/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:56:02] [BEAT] [alice] load=1.14 mem=3222/3794MB temp=32.1C disk=85%
|
||||||
[2026-03-17 07:24:57] [BEAT] [alice] load=1.05 mem=3225/3794MB temp=34.6C disk=85%
|
[2026-03-17 07:56:02] [BEAT] [alice] load=1.14 mem=3220/3794MB temp=33.1C disk=85%
|
||||||
|
|||||||
@@ -36,3 +36,4 @@
|
|||||||
*/5 * * * * /opt/blackroad/bin/blackroad-pissed.sh
|
*/5 * * * * /opt/blackroad/bin/blackroad-pissed.sh
|
||||||
@reboot /opt/blackroad/bin/blackroad-boot-hello.sh
|
@reboot /opt/blackroad/bin/blackroad-boot-hello.sh
|
||||||
*/30 * * * * /home/pi/blackroad-site-tester.sh --quiet >> /tmp/br-tester.log 2>&1
|
*/30 * * * * /home/pi/blackroad-site-tester.sh --quiet >> /tmp/br-tester.log 2>&1
|
||||||
|
*/5 * * * * /home/pi/uptime-monitor.sh
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"alice","ts":"2026-03-17T12:30:01Z","load":1.13,"mem_free_mb":3220,"mem_total_mb":3794,"temp_c":36.5,"disk_pct":85,"throttle":"0x0"}
|
{"node":"alice","ts":"2026-03-17T12:56:02Z","load":1.14,"mem_free_mb":3220,"mem_total_mb":3794,"temp_c":33.1,"disk_pct":85,"throttle":"0x0"}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ LISTEN 0 511 0.0.0.0:8080 0.0.0.0:*
|
|||||||
LISTEN 0 511 0.0.0.0:8083 0.0.0.0:* users:(("node /usr/lib/n",pid=3707,fd=20))
|
LISTEN 0 511 0.0.0.0:8083 0.0.0.0:* users:(("node /usr/lib/n",pid=3707,fd=20))
|
||||||
LISTEN 0 5 0.0.0.0:8184 0.0.0.0:*
|
LISTEN 0 5 0.0.0.0:8184 0.0.0.0:*
|
||||||
LISTEN 0 4096 127.0.0.1:9050 0.0.0.0:*
|
LISTEN 0 4096 127.0.0.1:9050 0.0.0.0:*
|
||||||
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=32680,fd=5))
|
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=31226,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 128 127.0.0.1:11434 0.0.0.0:*
|
LISTEN 0 128 127.0.0.1:11434 0.0.0.0:*
|
||||||
LISTEN 0 32 0.0.0.0:53 0.0.0.0:*
|
LISTEN 0 32 0.0.0.0:53 0.0.0.0:*
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
{
|
{
|
||||||
"hostname": "alice",
|
"hostname": "alice",
|
||||||
"ts": "2026-03-17T12:24:58Z",
|
"ts": "2026-03-17T12:56:03Z",
|
||||||
"uptime_seconds": 32367,
|
"uptime_seconds": 34233,
|
||||||
"kernel": "6.1.21-v8+",
|
"kernel": "6.1.21-v8+",
|
||||||
"temp_c": 36.5,
|
"temp_c": 34.1,
|
||||||
"memory_mb": {
|
"memory_mb": {
|
||||||
"total": 3794,
|
"total": 3794,
|
||||||
"used": 483,
|
"used": 468,
|
||||||
"free": 3208
|
"free": 3222
|
||||||
},
|
},
|
||||||
"disk": "12G/15G (85%)",
|
"disk": "12G/15G (85%)",
|
||||||
"load": [
|
"load": [
|
||||||
1.05,
|
1.13,
|
||||||
1.14,
|
1.15,
|
||||||
1.14
|
1.22
|
||||||
],
|
],
|
||||||
"ollama_models": [
|
"ollama_models": [
|
||||||
"lucidia3b:latest",
|
"lucidia3b:latest",
|
||||||
@@ -26,5 +26,5 @@
|
|||||||
],
|
],
|
||||||
"throttle": "0x0",
|
"throttle": "0x0",
|
||||||
"voltage": "0.9160V",
|
"voltage": "0.9160V",
|
||||||
"services_running": 48
|
"services_running": 47
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"anastasia","status":"down","ts":"2026-03-17T12:30:01Z"}
|
{"node":"anastasia","status":"down","ts":"2026-03-17T12:56:03Z"}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"aria","status":"down","ts":"2026-03-17T12:30:01Z"}
|
{"node":"aria","status":"down","ts":"2026-03-17T12:56:03Z"}
|
||||||
|
|||||||
@@ -1,50 +1,50 @@
|
|||||||
[2026-03-17 07:03:32] [BEAT] [cecilia] load=0.21 mem=938/8062MB temp=38.6C disk=34%
|
[2026-03-17 07:35:28] [BEAT] [cecilia] load=0.98 mem=1031/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:04:01] [BEAT] [cecilia] load=0.25 mem=941/8062MB temp=37.0C disk=34%
|
[2026-03-17 07:36:01] [BEAT] [cecilia] load=0.66 mem=1043/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:05:01] [BEAT] [cecilia] load=0.32 mem=913/8062MB temp=38.6C disk=34%
|
[2026-03-17 07:37:02] [BEAT] [cecilia] load=0.96 mem=1039/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:05:01] [HEAL] [cecilia] High swap: 1397MB — clearing inactive
|
[2026-03-17 07:38:01] [BEAT] [cecilia] load=0.79 mem=1046/8062MB temp=35.9C disk=34%
|
||||||
[2026-03-17 07:06:01] [BEAT] [cecilia] load=0.33 mem=902/8062MB temp=37.5C disk=34%
|
[2026-03-17 07:39:01] [BEAT] [cecilia] load=0.52 mem=1047/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:07:01] [BEAT] [cecilia] load=0.36 mem=902/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:40:01] [FLEET] [cecilia] Starting cross-node health check
|
||||||
[2026-03-17 07:08:01] [BEAT] [cecilia] load=0.37 mem=902/8062MB temp=37.0C disk=34%
|
[2026-03-17 07:40:01] [BEAT] [cecilia] load=0.34 mem=1015/8062MB temp=35.9C disk=34%
|
||||||
[2026-03-17 07:08:40] [BEAT] [cecilia] load=0.33 mem=894/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:40:01] [HEAL] [cecilia] High swap: 2038MB — clearing inactive
|
||||||
[2026-03-17 07:08:40] [BEAT] [cecilia] load=0.33 mem=891/8062MB temp=38.0C disk=34%
|
[2026-03-17 07:40:02] [FLEET] [cecilia] alice: UP temp=36C mem=3218MB disk=85%
|
||||||
[2026-03-17 07:09:01] [BEAT] [cecilia] load=0.23 mem=894/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:40:02] [FLEET] [cecilia] octavia: UP temp=45C mem=2113MB disk=87%
|
||||||
[2026-03-17 07:10:01] [FLEET] [cecilia] Starting cross-node health check
|
[2026-03-17 07:40:03] [FLEET] [cecilia] gematria: UP temp=C mem=4839MB disk=69%
|
||||||
[2026-03-17 07:10:01] [BEAT] [cecilia] load=0.87 mem=1176/8062MB temp=37.5C disk=34%
|
[2026-03-17 07:40:04] [FLEET] [cecilia] lucidia: UP temp=57C mem=2639MB disk=31%
|
||||||
[2026-03-17 07:10:01] [HEAL] [cecilia] High swap: 2047MB — clearing inactive
|
[2026-03-17 07:40:06] [FLEET] [cecilia] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:02] [FLEET] [cecilia] alice: UP temp=34C mem=3218MB disk=85%
|
[2026-03-17 07:40:08] [FLEET] [cecilia] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:03] [FLEET] [cecilia] octavia: UP temp=42C mem=2509MB disk=86%
|
[2026-03-17 07:40:32] [BEAT] [cecilia] load=0.32 mem=1047/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:10:04] [FLEET] [cecilia] gematria: UP temp=C mem=4960MB disk=69%
|
[2026-03-17 07:40:32] [BEAT] [cecilia] load=0.32 mem=1045/8062MB temp=34.2C disk=34%
|
||||||
[2026-03-17 07:10:05] [FLEET] [cecilia] lucidia: UP temp=59C mem=2649MB disk=31%
|
[2026-03-17 07:41:01] [BEAT] [cecilia] load=0.21 mem=1050/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:10:07] [FLEET] [cecilia] aria: DOWN (no ping response)
|
[2026-03-17 07:42:01] [BEAT] [cecilia] load=0.36 mem=1033/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:10:09] [FLEET] [cecilia] anastasia: DOWN (no ping response)
|
[2026-03-17 07:42:42] [DIAL] [cecilia] Switchboard unreachable
|
||||||
[2026-03-17 07:11:01] [BEAT] [cecilia] load=0.52 mem=1264/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:43:01] [BEAT] [cecilia] load=0.21 mem=1046/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:12:01] [BEAT] [cecilia] load=0.47 mem=1263/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:44:01] [BEAT] [cecilia] load=0.23 mem=1043/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:12:36] [DIAL] [cecilia] Switchboard unreachable
|
[2026-03-17 07:45:01] [BEAT] [cecilia] load=0.56 mem=1005/8062MB temp=37.0C disk=34%
|
||||||
[2026-03-17 07:13:01] [BEAT] [cecilia] load=1.21 mem=1268/8062MB temp=37.0C disk=34%
|
[2026-03-17 07:45:01] [HEAL] [cecilia] High swap: 2038MB — clearing inactive
|
||||||
[2026-03-17 07:13:47] [BEAT] [cecilia] load=1.49 mem=1267/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:45:37] [BEAT] [cecilia] load=0.97 mem=920/8062MB temp=35.9C disk=34%
|
||||||
[2026-03-17 07:13:47] [BEAT] [cecilia] load=1.49 mem=1266/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:45:37] [BEAT] [cecilia] load=0.97 mem=916/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:14:01] [BEAT] [cecilia] load=1.37 mem=1267/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:45:46] [DIAL] [cecilia] Switchboard unreachable
|
||||||
[2026-03-17 07:15:01] [BEAT] [cecilia] load=0.99 mem=1227/8062MB temp=37.5C disk=34%
|
[2026-03-17 07:46:01] [BEAT] [cecilia] load=0.90 mem=938/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:15:01] [HEAL] [cecilia] High swap: 2046MB — clearing inactive
|
[2026-03-17 07:47:01] [BEAT] [cecilia] load=0.76 mem=925/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:15:46] [DIAL] [cecilia] Switchboard unreachable
|
[2026-03-17 07:48:01] [BEAT] [cecilia] load=0.44 mem=915/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:16:01] [BEAT] [cecilia] load=0.53 mem=940/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:49:01] [BEAT] [cecilia] load=0.21 mem=912/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:17:01] [BEAT] [cecilia] load=0.43 mem=944/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:50:01] [FLEET] [cecilia] Starting cross-node health check
|
||||||
[2026-03-17 07:18:01] [BEAT] [cecilia] load=0.28 mem=943/8062MB temp=35.3C disk=34%
|
[2026-03-17 07:50:01] [BEAT] [cecilia] load=0.36 mem=877/8062MB temp=35.9C disk=34%
|
||||||
[2026-03-17 07:18:52] [BEAT] [cecilia] load=0.18 mem=934/8062MB temp=35.3C disk=34%
|
[2026-03-17 07:50:01] [HEAL] [cecilia] High swap: 2038MB — clearing inactive
|
||||||
[2026-03-17 07:18:53] [BEAT] [cecilia] load=0.18 mem=932/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:50:03] [FLEET] [cecilia] alice: UP temp=35C mem=3218MB disk=85%
|
||||||
[2026-03-17 07:19:01] [BEAT] [cecilia] load=0.15 mem=929/8062MB temp=35.3C disk=34%
|
[2026-03-17 07:50:03] [FLEET] [cecilia] octavia: UP temp=46C mem=1942MB disk=87%
|
||||||
[2026-03-17 07:20:01] [FLEET] [cecilia] Starting cross-node health check
|
[2026-03-17 07:50:04] [FLEET] [cecilia] gematria: UP temp=C mem=4918MB disk=69%
|
||||||
[2026-03-17 07:20:02] [BEAT] [cecilia] load=0.33 mem=902/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:50:05] [FLEET] [cecilia] lucidia: UP temp=53C mem=2639MB disk=31%
|
||||||
[2026-03-17 07:20:02] [HEAL] [cecilia] High swap: 2044MB — clearing inactive
|
[2026-03-17 07:50:07] [FLEET] [cecilia] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:02] [FLEET] [cecilia] alice: UP temp=35C mem=3221MB disk=85%
|
[2026-03-17 07:50:09] [FLEET] [cecilia] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:03] [FLEET] [cecilia] octavia: UP temp=43C mem=2496MB disk=86%
|
[2026-03-17 07:50:47] [BEAT] [cecilia] load=0.37 mem=978/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:20:04] [FLEET] [cecilia] gematria: UP temp=C mem=4952MB disk=69%
|
[2026-03-17 07:50:47] [BEAT] [cecilia] load=0.37 mem=980/8062MB temp=34.2C disk=34%
|
||||||
[2026-03-17 07:20:05] [FLEET] [cecilia] lucidia: UP temp=62C mem=2632MB disk=31%
|
[2026-03-17 07:51:01] [BEAT] [cecilia] load=0.51 mem=970/8062MB temp=35.9C disk=34%
|
||||||
[2026-03-17 07:20:07] [FLEET] [cecilia] aria: DOWN (no ping response)
|
[2026-03-17 07:52:01] [BEAT] [cecilia] load=0.41 mem=969/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:20:09] [FLEET] [cecilia] anastasia: DOWN (no ping response)
|
[2026-03-17 07:53:01] [BEAT] [cecilia] load=0.29 mem=961/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:21:01] [BEAT] [cecilia] load=0.40 mem=991/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:54:01] [BEAT] [cecilia] load=0.22 mem=954/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:22:01] [BEAT] [cecilia] load=0.32 mem=990/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:55:01] [BEAT] [cecilia] load=1.67 mem=918/8062MB temp=35.3C disk=34%
|
||||||
[2026-03-17 07:23:01] [BEAT] [cecilia] load=0.42 mem=985/8062MB temp=35.9C disk=34%
|
[2026-03-17 07:55:01] [HEAL] [cecilia] High swap: 2038MB — clearing inactive
|
||||||
[2026-03-17 07:24:01] [BEAT] [cecilia] load=0.49 mem=986/8062MB temp=34.2C disk=34%
|
[2026-03-17 07:56:01] [BEAT] [cecilia] load=1.47 mem=954/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:24:56] [BEAT] [cecilia] load=0.29 mem=982/8062MB temp=36.4C disk=34%
|
[2026-03-17 07:56:02] [BEAT] [cecilia] load=1.47 mem=949/8062MB temp=34.8C disk=34%
|
||||||
[2026-03-17 07:24:56] [BEAT] [cecilia] load=0.29 mem=980/8062MB temp=35.3C disk=34%
|
[2026-03-17 07:56:02] [BEAT] [cecilia] load=1.47 mem=948/8062MB temp=35.3C disk=34%
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"cecilia","ts":"2026-03-17T12:30:00Z","load":0.34,"mem_free_mb":958,"mem_total_mb":8062,"temp_c":35.9,"disk_pct":34,"throttle":"N/A"}
|
{"node":"cecilia","ts":"2026-03-17T12:56:02Z","load":1.47,"mem_free_mb":948,"mem_total_mb":8062,"temp_c":35.3,"disk_pct":34,"throttle":"N/A"}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ LISTEN 0 4096 127.0.0.1:41511 0.0.0.0:*
|
|||||||
LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=1034,fd=3))
|
LISTEN 0 5 0.0.0.0:4010 0.0.0.0:* users:(("python3",pid=1034,fd=3))
|
||||||
LISTEN 0 511 0.0.0.0:8080 0.0.0.0:*
|
LISTEN 0 511 0.0.0.0:8080 0.0.0.0:*
|
||||||
LISTEN 0 5 0.0.0.0:8089 0.0.0.0:* users:(("python3",pid=336021,fd=5))
|
LISTEN 0 5 0.0.0.0:8089 0.0.0.0:* users:(("python3",pid=336021,fd=5))
|
||||||
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=836650,fd=5))
|
LISTEN 0 5 0.0.0.0:7890 0.0.0.0:* users:(("python3",pid=906561,fd=5))
|
||||||
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:20241 0.0.0.0:*
|
||||||
LISTEN 0 5 0.0.0.0:11435 0.0.0.0:* users:(("python3",pid=1403,fd=3))
|
LISTEN 0 5 0.0.0.0:11435 0.0.0.0:* users:(("python3",pid=1403,fd=3))
|
||||||
|
|||||||
@@ -1,24 +1,24 @@
|
|||||||
{
|
{
|
||||||
"hostname": "cecilia",
|
"hostname": "cecilia",
|
||||||
"ts": "2026-03-17T12:30:01Z",
|
"ts": "2026-03-17T12:56:03Z",
|
||||||
"uptime_seconds": 32711,
|
"uptime_seconds": 34272,
|
||||||
"kernel": "6.12.62+rpt-rpi-2712",
|
"kernel": "6.12.62+rpt-rpi-2712",
|
||||||
"temp_c": 34.8,
|
"temp_c": 35.3,
|
||||||
"memory_mb": {
|
"memory_mb": {
|
||||||
"total": 8062,
|
"total": 8062,
|
||||||
"used": 7150,
|
"used": 7119,
|
||||||
"free": 912
|
"free": 943
|
||||||
},
|
},
|
||||||
"disk": "144G/457G (34%)",
|
"disk": "144G/457G (34%)",
|
||||||
"load": [
|
"load": [
|
||||||
0.31,
|
1.47,
|
||||||
0.32,
|
0.89,
|
||||||
0.71
|
0.69
|
||||||
],
|
],
|
||||||
"ollama_models": [
|
"ollama_models": [
|
||||||
"amundson:latest",
|
"amundson:latest",
|
||||||
"qwen2.5:3b",
|
|
||||||
"cecilia3b:latest",
|
"cecilia3b:latest",
|
||||||
|
"qwen2.5:3b",
|
||||||
"cecilia:latest",
|
"cecilia:latest",
|
||||||
"deepseek-r1:1.5b",
|
"deepseek-r1:1.5b",
|
||||||
"nomic-embed-text:latest",
|
"nomic-embed-text:latest",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"gematria","status":"down","ts":"2026-03-17T12:30:01Z"}
|
{"node":"gematria","status":"down","ts":"2026-03-17T12:56:03Z"}
|
||||||
|
|||||||
@@ -1,50 +1,50 @@
|
|||||||
[2026-03-17 07:03:32] [BEAT] [lucidia] load=2.96 mem=2654/8063MB temp=49.0C disk=31%
|
[2026-03-17 07:35:28] [BEAT] [lucidia] load=2.44 mem=2670/8063MB temp=52.9C disk=31%
|
||||||
[2026-03-17 07:04:01] [BEAT] [lucidia] load=4.76 mem=2696/8063MB temp=59.5C disk=31%
|
[2026-03-17 07:35:28] [BEAT] [lucidia] load=2.44 mem=2669/8063MB temp=52.9C disk=31%
|
||||||
[2026-03-17 07:05:01] [BEAT] [lucidia] load=4.80 mem=2697/8063MB temp=52.9C disk=31%
|
[2026-03-17 07:36:01] [BEAT] [lucidia] load=2.46 mem=2706/8063MB temp=60.6C disk=31%
|
||||||
[2026-03-17 07:05:01] [HEAL] [lucidia] High swap: 668MB — clearing inactive
|
[2026-03-17 07:37:01] [BEAT] [lucidia] load=1.70 mem=2685/8063MB temp=52.9C disk=31%
|
||||||
[2026-03-17 07:06:01] [BEAT] [lucidia] load=4.52 mem=2689/8063MB temp=61.1C disk=31%
|
[2026-03-17 07:38:01] [BEAT] [lucidia] load=3.35 mem=2669/8063MB temp=63.4C disk=31%
|
||||||
[2026-03-17 07:07:01] [BEAT] [lucidia] load=2.52 mem=2710/8063MB temp=51.8C disk=31%
|
[2026-03-17 07:39:01] [BEAT] [lucidia] load=2.45 mem=2707/8063MB temp=54.0C disk=31%
|
||||||
[2026-03-17 07:08:01] [BEAT] [lucidia] load=3.71 mem=2663/8063MB temp=51.8C disk=31%
|
[2026-03-17 07:40:01] [FLEET] [lucidia] Starting cross-node health check
|
||||||
[2026-03-17 07:08:40] [BEAT] [lucidia] load=16.93 mem=2648/8063MB temp=57.3C disk=31%
|
[2026-03-17 07:40:01] [BEAT] [lucidia] load=3.07 mem=2662/8063MB temp=56.2C disk=31%
|
||||||
[2026-03-17 07:08:41] [BEAT] [lucidia] load=16.93 mem=2648/8063MB temp=56.8C disk=31%
|
[2026-03-17 07:40:01] [HEAL] [lucidia] High swap: 664MB — clearing inactive
|
||||||
[2026-03-17 07:09:20] [BEAT] [lucidia] load=28.23 mem=2655/8063MB temp=52.9C disk=31%
|
[2026-03-17 07:40:02] [FLEET] [lucidia] alice: UP temp=34C mem=3212MB disk=85%
|
||||||
[2026-03-17 07:10:01] [FLEET] [lucidia] Starting cross-node health check
|
[2026-03-17 07:40:04] [FLEET] [lucidia] octavia: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:01] [BEAT] [lucidia] load=15.74 mem=2647/8063MB temp=58.4C disk=31%
|
[2026-03-17 07:40:05] [FLEET] [lucidia] cecilia: UP temp=36C mem=996MB disk=34%
|
||||||
[2026-03-17 07:10:02] [HEAL] [lucidia] High swap: 668MB — clearing inactive
|
[2026-03-17 07:40:06] [FLEET] [lucidia] gematria: UP temp=C mem=4839MB disk=69%
|
||||||
[2026-03-17 07:10:03] [FLEET] [lucidia] alice: UP temp=34C mem=3218MB disk=85%
|
[2026-03-17 07:40:08] [FLEET] [lucidia] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:05] [FLEET] [lucidia] octavia: DOWN (no ping response)
|
[2026-03-17 07:40:10] [FLEET] [lucidia] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:10:05] [FLEET] [lucidia] cecilia: UP temp=38C mem=1142MB disk=34%
|
[2026-03-17 07:40:32] [BEAT] [lucidia] load=1.96 mem=2644/8063MB temp=54.5C disk=31%
|
||||||
[2026-03-17 07:10:07] [FLEET] [lucidia] gematria: UP temp=C mem=4966MB disk=69%
|
[2026-03-17 07:40:32] [BEAT] [lucidia] load=1.96 mem=2643/8063MB temp=54.5C disk=31%
|
||||||
[2026-03-17 07:10:09] [FLEET] [lucidia] aria: DOWN (no ping response)
|
[2026-03-17 07:40:53] [DIAL] [lucidia] Switchboard unreachable
|
||||||
[2026-03-17 07:10:11] [FLEET] [lucidia] anastasia: DOWN (no ping response)
|
[2026-03-17 07:41:01] [BEAT] [lucidia] load=2.20 mem=2679/8063MB temp=61.1C disk=31%
|
||||||
[2026-03-17 07:10:50] [DIAL] [lucidia] Switchboard unreachable
|
[2026-03-17 07:42:01] [BEAT] [lucidia] load=1.28 mem=2680/8063MB temp=53.5C disk=31%
|
||||||
[2026-03-17 07:11:01] [BEAT] [lucidia] load=7.46 mem=2692/8063MB temp=52.9C disk=31%
|
[2026-03-17 07:43:01] [BEAT] [lucidia] load=3.38 mem=2685/8063MB temp=63.4C disk=31%
|
||||||
[2026-03-17 07:12:01] [BEAT] [lucidia] load=4.70 mem=2682/8063MB temp=53.5C disk=31%
|
[2026-03-17 07:44:01] [BEAT] [lucidia] load=2.12 mem=2681/8063MB temp=53.5C disk=31%
|
||||||
[2026-03-17 07:13:01] [BEAT] [lucidia] load=3.09 mem=2673/8063MB temp=60.0C disk=31%
|
[2026-03-17 07:45:24] [BEAT] [lucidia] load=4.76 mem=2641/8063MB temp=55.6C disk=31%
|
||||||
[2026-03-17 07:13:47] [BEAT] [lucidia] load=4.16 mem=2646/8063MB temp=56.8C disk=31%
|
[2026-03-17 07:45:26] [HEAL] [lucidia] High swap: 664MB — clearing inactive
|
||||||
[2026-03-17 07:13:47] [BEAT] [lucidia] load=4.16 mem=2644/8063MB temp=59.0C disk=31%
|
[2026-03-17 07:46:02] [BEAT] [lucidia] load=33.31 mem=2679/8063MB temp=51.8C disk=31%
|
||||||
[2026-03-17 07:14:01] [BEAT] [lucidia] load=3.45 mem=2668/8063MB temp=55.6C disk=31%
|
[2026-03-17 07:46:10] [DIAL] [lucidia] Switchboard unreachable
|
||||||
[2026-03-17 07:15:01] [BEAT] [lucidia] load=2.69 mem=2625/8063MB temp=61.1C disk=31%
|
[2026-03-17 07:47:01] [BEAT] [lucidia] load=14.72 mem=2651/8063MB temp=52.9C disk=31%
|
||||||
[2026-03-17 07:15:01] [HEAL] [lucidia] High swap: 667MB — clearing inactive
|
[2026-03-17 07:48:01] [BEAT] [lucidia] load=9.19 mem=2654/8063MB temp=63.4C disk=31%
|
||||||
[2026-03-17 07:15:46] [DIAL] [lucidia] Switchboard unreachable
|
[2026-03-17 07:49:01] [BEAT] [lucidia] load=5.29 mem=2668/8063MB temp=55.1C disk=31%
|
||||||
[2026-03-17 07:16:01] [BEAT] [lucidia] load=1.78 mem=2656/8063MB temp=52.9C disk=31%
|
[2026-03-17 07:50:01] [FLEET] [lucidia] Starting cross-node health check
|
||||||
[2026-03-17 07:17:01] [BEAT] [lucidia] load=1.75 mem=2678/8063MB temp=54.5C disk=31%
|
[2026-03-17 07:50:01] [BEAT] [lucidia] load=2.92 mem=2643/8063MB temp=56.8C disk=31%
|
||||||
[2026-03-17 07:19:53] [BEAT] [lucidia] load=56.02 mem=2728/8063MB temp=61.7C disk=31%
|
[2026-03-17 07:50:01] [HEAL] [lucidia] High swap: 664MB — clearing inactive
|
||||||
[2026-03-17 07:19:53] [BEAT] [lucidia] load=56.02 mem=2714/8063MB temp=62.2C disk=31%
|
[2026-03-17 07:50:02] [FLEET] [lucidia] alice: UP temp=34C mem=3218MB disk=85%
|
||||||
[2026-03-17 07:19:53] [BEAT] [lucidia] load=52.33 mem=2685/8063MB temp=60.6C disk=31%
|
[2026-03-17 07:50:04] [FLEET] [lucidia] octavia: DOWN (no ping response)
|
||||||
[2026-03-17 07:19:53] [BEAT] [lucidia] load=52.33 mem=2684/8063MB temp=61.1C disk=31%
|
[2026-03-17 07:50:05] [FLEET] [lucidia] cecilia: UP temp=36C mem=935MB disk=34%
|
||||||
[2026-03-17 07:20:01] [FLEET] [lucidia] Starting cross-node health check
|
[2026-03-17 07:50:06] [FLEET] [lucidia] gematria: UP temp=C mem=4913MB disk=69%
|
||||||
[2026-03-17 07:20:01] [BEAT] [lucidia] load=48.70 mem=2660/8063MB temp=60.6C disk=31%
|
[2026-03-17 07:50:08] [FLEET] [lucidia] aria: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:01] [HEAL] [lucidia] High swap: 665MB — clearing inactive
|
[2026-03-17 07:50:10] [FLEET] [lucidia] anastasia: DOWN (no ping response)
|
||||||
[2026-03-17 07:20:02] [FLEET] [lucidia] alice: UP temp=35C mem=3219MB disk=85%
|
[2026-03-17 07:50:59] [BEAT] [lucidia] load=11.98 mem=2672/8063MB temp=56.2C disk=31%
|
||||||
[2026-03-17 07:20:04] [FLEET] [lucidia] octavia: DOWN (no ping response)
|
[2026-03-17 07:50:59] [BEAT] [lucidia] load=11.98 mem=2674/8063MB temp=54.5C disk=31%
|
||||||
[2026-03-17 07:20:05] [FLEET] [lucidia] cecilia: UP temp=37C mem=961MB disk=34%
|
[2026-03-17 07:51:02] [BEAT] [lucidia] load=11.58 mem=2646/8063MB temp=56.8C disk=31%
|
||||||
[2026-03-17 07:20:06] [FLEET] [lucidia] gematria: UP temp=C mem=4956MB disk=69%
|
[2026-03-17 07:52:03] [BEAT] [lucidia] load=16.34 mem=2630/8063MB temp=52.9C disk=31%
|
||||||
[2026-03-17 07:20:08] [FLEET] [lucidia] aria: DOWN (no ping response)
|
[2026-03-17 07:53:01] [BEAT] [lucidia] load=8.21 mem=2649/8063MB temp=61.1C disk=31%
|
||||||
[2026-03-17 07:20:10] [FLEET] [lucidia] anastasia: DOWN (no ping response)
|
[2026-03-17 07:54:01] [BEAT] [lucidia] load=3.99 mem=2677/8063MB temp=51.8C disk=31%
|
||||||
[2026-03-17 07:21:29] [BEAT] [lucidia] load=26.79 mem=2700/8063MB temp=52.9C disk=31%
|
[2026-03-17 07:55:01] [BEAT] [lucidia] load=2.67 mem=2674/8063MB temp=51.2C disk=31%
|
||||||
[2026-03-17 07:22:01] [BEAT] [lucidia] load=17.67 mem=2650/8063MB temp=55.6C disk=31%
|
[2026-03-17 07:55:01] [HEAL] [lucidia] High swap: 664MB — clearing inactive
|
||||||
[2026-03-17 07:23:01] [BEAT] [lucidia] load=7.12 mem=2698/8063MB temp=60.0C disk=31%
|
[2026-03-17 07:55:54] [DIAL] [lucidia] Switchboard unreachable
|
||||||
[2026-03-17 07:24:01] [BEAT] [lucidia] load=5.33 mem=2697/8063MB temp=58.4C disk=31%
|
[2026-03-17 07:56:32] [BEAT] [lucidia] load=22.77 mem=2670/8063MB temp=45.2C disk=31%
|
||||||
[2026-03-17 07:24:57] [BEAT] [lucidia] load=3.18 mem=2680/8063MB temp=56.8C disk=31%
|
[2026-03-17 07:56:33] [BEAT] [lucidia] load=22.77 mem=2622/8063MB temp=49.6C disk=31%
|
||||||
[2026-03-17 07:24:57] [BEAT] [lucidia] load=3.18 mem=2679/8063MB temp=57.9C disk=31%
|
[2026-03-17 07:56:33] [BEAT] [lucidia] load=22.77 mem=2619/8063MB temp=49.6C disk=31%
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
road-pdns Up 7 hours
|
road-pdns Up 8 hours
|
||||||
road-pdns-admin Up 7 hours (healthy)
|
road-pdns-admin Up 8 hours (healthy)
|
||||||
road-dns-db Up 8 hours
|
road-dns-db Up 8 hours
|
||||||
blackroad-gitea Up 9 hours
|
blackroad-gitea Up 10 hours
|
||||||
roadauth Up 9 hours
|
roadauth Up 10 hours
|
||||||
roadapi Up 9 hours
|
roadapi Up 10 hours
|
||||||
blackroad-edge-agent Up 9 hours
|
blackroad-edge-agent Up 10 hours
|
||||||
blackroad.systems Up 9 hours
|
blackroad.systems Up 10 hours
|
||||||
blackroadai.com Up 9 hours
|
blackroadai.com Up 10 hours
|
||||||
blackroad-auth-gateway Up 9 hours
|
blackroad-auth-gateway Up 10 hours
|
||||||
blackroad-metaverse Up 9 hours
|
blackroad-metaverse Up 10 hours
|
||||||
blackroad-os Up 9 hours
|
blackroad-os Up 10 hours
|
||||||
blackroad-os-carpool Up 9 hours
|
blackroad-os-carpool Up 10 hours
|
||||||
pi-my-agent-1 Up 9 hours (healthy)
|
pi-my-agent-1 Up 10 hours (healthy)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"lucidia","ts":"2026-03-17T12:24:57Z","load":3.18,"mem_free_mb":2679,"mem_total_mb":8063,"temp_c":57.9,"disk_pct":31,"throttle":"N/A"}
|
{"node":"lucidia","ts":"2026-03-17T12:56:33Z","load":22.77,"mem_free_mb":2619,"mem_total_mb":8063,"temp_c":49.6,"disk_pct":31,"throttle":"N/A"}
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
{
|
{
|
||||||
"hostname": "lucidia",
|
"hostname": "lucidia",
|
||||||
"ts": "2026-03-17T12:24:57Z",
|
"ts": "2026-03-17T12:56:34Z",
|
||||||
"uptime_seconds": 32470,
|
"uptime_seconds": 34367,
|
||||||
"kernel": "6.12.62+rpt-rpi-2712",
|
"kernel": "6.12.62+rpt-rpi-2712",
|
||||||
"temp_c": 57.3,
|
"temp_c": 49.6,
|
||||||
"memory_mb": {
|
"memory_mb": {
|
||||||
"total": 8063,
|
"total": 8063,
|
||||||
"used": 5385,
|
"used": 5448,
|
||||||
"free": 2677
|
"free": 2615
|
||||||
},
|
},
|
||||||
"disk": "68G/235G (31%)",
|
"disk": "68G/235G (31%)",
|
||||||
"load": [
|
"load": [
|
||||||
3.18,
|
22.77,
|
||||||
11.62,
|
10.84,
|
||||||
10.59
|
8.72
|
||||||
],
|
],
|
||||||
"ollama_models": [
|
"ollama_models": [
|
||||||
"lucidia3b:latest",
|
"lucidia3b:latest",
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"node":"octavia","status":"down","ts":"2026-03-17T12:30:01Z"}
|
{"node":"octavia","status":"down","ts":"2026-03-17T12:56:03Z"}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
"""
|
"""
|
||||||
RoadC Language - Tree-Walking Interpreter
|
RoadC Language - Tree-Walking Interpreter
|
||||||
Executes AST nodes produced by the parser
|
Executes AST nodes produced by the parser
|
||||||
|
Includes ternary runtime (BlackBox Protocol)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from ast_nodes import *
|
from ast_nodes import *
|
||||||
|
from ternary import Trit, TernaryWord, TernaryRouter, ARRIVED, WAITING, CANCELLED
|
||||||
|
|
||||||
|
|
||||||
class ReturnSignal(Exception):
|
class ReturnSignal(Exception):
|
||||||
@@ -47,6 +49,30 @@ class Environment:
|
|||||||
class Interpreter:
|
class Interpreter:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.global_env = Environment()
|
self.global_env = Environment()
|
||||||
|
self.router = TernaryRouter()
|
||||||
|
self._setup_builtins()
|
||||||
|
|
||||||
|
def _setup_builtins(self):
|
||||||
|
"""Register built-in functions including ternary operations"""
|
||||||
|
env = self.global_env
|
||||||
|
# Standard
|
||||||
|
env.set('print', lambda *args: print(*args))
|
||||||
|
env.set('len', len)
|
||||||
|
env.set('range', lambda *a: list(range(*a)))
|
||||||
|
env.set('str', str)
|
||||||
|
env.set('int', int)
|
||||||
|
env.set('float', float)
|
||||||
|
env.set('type', lambda x: type(x).__name__)
|
||||||
|
# Ternary
|
||||||
|
env.set('trit', lambda v=0: Trit(v))
|
||||||
|
env.set('ARRIVED', ARRIVED)
|
||||||
|
env.set('WAITING', WAITING)
|
||||||
|
env.set('CANCELLED', CANCELLED)
|
||||||
|
env.set('tword', lambda v=0, w=8: TernaryWord(v, w))
|
||||||
|
# Routing
|
||||||
|
env.set('route', lambda rid, paths: self.router.route(rid, paths))
|
||||||
|
env.set('resolve', lambda rid, pid, result=None: self.router.resolve(rid, pid, result))
|
||||||
|
env.set('route_status', lambda: self.router.status())
|
||||||
|
|
||||||
def run(self, program):
|
def run(self, program):
|
||||||
for stmt in program.statements:
|
for stmt in program.statements:
|
||||||
|
|||||||
314
roadc/ternary.py
Normal file
314
roadc/ternary.py
Normal file
@@ -0,0 +1,314 @@
|
|||||||
|
"""
|
||||||
|
RoadC Ternary Runtime — Recursive Ternary Logic
|
||||||
|
The BlackBox Protocol's routing primitive, now a first-class type.
|
||||||
|
|
||||||
|
Ternary values: -1 (cancel), 0 (waiting), 1 (arrived)
|
||||||
|
This isn't just three states — it's the foundation of self-cancelling computation.
|
||||||
|
|
||||||
|
When a packet arrives via path A (1), all pending paths (-1) cancel automatically.
|
||||||
|
The -1 isn't failure. It's intelligence. It's the network saying "already handled."
|
||||||
|
|
||||||
|
Recursive ternary: a ternary value can contain ternary values.
|
||||||
|
A routing decision contains sub-decisions contains sub-sub-decisions.
|
||||||
|
It's turtles all the way down — and at every level, -1 prunes the tree.
|
||||||
|
|
||||||
|
Math: n/(1+1/n)^n = n/e + 1/(2e) + O(1/n)
|
||||||
|
The 1/(2e) is the irreducible gap — the cost of being discrete instead of continuous.
|
||||||
|
You can't beat it. You route around it.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import time
|
||||||
|
import hashlib
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from typing import Optional, List, Dict, Callable, Any
|
||||||
|
|
||||||
|
|
||||||
|
# ── Trit: the atomic unit ──
|
||||||
|
class Trit:
|
||||||
|
"""A balanced ternary digit: -1, 0, or 1"""
|
||||||
|
__slots__ = ('_value',)
|
||||||
|
|
||||||
|
def __init__(self, value):
|
||||||
|
if isinstance(value, Trit):
|
||||||
|
self._value = value._value
|
||||||
|
elif isinstance(value, (int, float)):
|
||||||
|
if value > 0: self._value = 1
|
||||||
|
elif value < 0: self._value = -1
|
||||||
|
else: self._value = 0
|
||||||
|
elif isinstance(value, bool):
|
||||||
|
self._value = 1 if value else -1
|
||||||
|
elif value is None:
|
||||||
|
self._value = 0
|
||||||
|
else:
|
||||||
|
self._value = 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def arrived(self): return self._value == 1
|
||||||
|
@property
|
||||||
|
def waiting(self): return self._value == 0
|
||||||
|
@property
|
||||||
|
def cancelled(self): return self._value == -1
|
||||||
|
|
||||||
|
def __repr__(self): return f"Trit({self._value})"
|
||||||
|
def __int__(self): return self._value
|
||||||
|
def __bool__(self): return self._value == 1
|
||||||
|
def __eq__(self, other):
|
||||||
|
if isinstance(other, Trit): return self._value == other._value
|
||||||
|
return self._value == other
|
||||||
|
def __hash__(self): return hash(self._value)
|
||||||
|
|
||||||
|
# Ternary logic operations
|
||||||
|
def __and__(self, other):
|
||||||
|
"""MIN — both must arrive"""
|
||||||
|
return Trit(min(self._value, int(Trit(other))))
|
||||||
|
|
||||||
|
def __or__(self, other):
|
||||||
|
"""MAX — either arriving is enough"""
|
||||||
|
return Trit(max(self._value, int(Trit(other))))
|
||||||
|
|
||||||
|
def __invert__(self):
|
||||||
|
"""NEGATE — flip the sign"""
|
||||||
|
return Trit(-self._value)
|
||||||
|
|
||||||
|
def __neg__(self):
|
||||||
|
"""Cancel — arrived becomes cancelled, cancelled becomes arrived"""
|
||||||
|
return Trit(-self._value)
|
||||||
|
|
||||||
|
def __add__(self, other):
|
||||||
|
"""Sum — clamped to [-1, 1]"""
|
||||||
|
return Trit(max(-1, min(1, self._value + int(Trit(other)))))
|
||||||
|
|
||||||
|
def __mul__(self, other):
|
||||||
|
"""Multiply — product of trits"""
|
||||||
|
return Trit(self._value * int(Trit(other)))
|
||||||
|
|
||||||
|
|
||||||
|
# Shortcuts
|
||||||
|
ARRIVED = Trit(1)
|
||||||
|
WAITING = Trit(0)
|
||||||
|
CANCELLED = Trit(-1)
|
||||||
|
|
||||||
|
|
||||||
|
# ── TernaryWord: a vector of trits ──
|
||||||
|
class TernaryWord:
|
||||||
|
"""A word made of trits — like a byte but base 3"""
|
||||||
|
|
||||||
|
def __init__(self, trits=None, width=8):
|
||||||
|
if trits is None:
|
||||||
|
self.trits = [WAITING] * width
|
||||||
|
elif isinstance(trits, list):
|
||||||
|
self.trits = [Trit(t) for t in trits]
|
||||||
|
elif isinstance(trits, int):
|
||||||
|
# Convert integer to balanced ternary
|
||||||
|
self.trits = []
|
||||||
|
n = abs(trits)
|
||||||
|
sign = 1 if trits >= 0 else -1
|
||||||
|
while n > 0:
|
||||||
|
r = n % 3
|
||||||
|
if r == 2: r = -1; n += 1
|
||||||
|
self.trits.append(Trit(r * sign))
|
||||||
|
n //= 3
|
||||||
|
while len(self.trits) < width:
|
||||||
|
self.trits.append(WAITING)
|
||||||
|
self.width = len(self.trits)
|
||||||
|
|
||||||
|
def to_int(self):
|
||||||
|
"""Convert back to integer"""
|
||||||
|
return sum(int(t) * (3 ** i) for i, t in enumerate(self.trits))
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
symbols = {1: '+', 0: '0', -1: '-'}
|
||||||
|
return 'T[' + ''.join(symbols[int(t)] for t in reversed(self.trits)) + ']'
|
||||||
|
|
||||||
|
def cancel_pending(self):
|
||||||
|
"""Set all waiting trits to cancelled — the key insight"""
|
||||||
|
self.trits = [CANCELLED if t.waiting else t for t in self.trits]
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
# ── Recursive Ternary Route ──
|
||||||
|
@dataclass
|
||||||
|
class Route:
|
||||||
|
"""A routing path through the network. Contains sub-routes recursively."""
|
||||||
|
path_id: str
|
||||||
|
state: Trit = field(default_factory=lambda: WAITING)
|
||||||
|
children: List['Route'] = field(default_factory=list)
|
||||||
|
result: Any = None
|
||||||
|
started_at: float = field(default_factory=time.time)
|
||||||
|
resolved_at: Optional[float] = None
|
||||||
|
depth: int = 0
|
||||||
|
|
||||||
|
def arrive(self, result=None):
|
||||||
|
"""This path delivered. Cancel all siblings."""
|
||||||
|
self.state = ARRIVED
|
||||||
|
self.result = result
|
||||||
|
self.resolved_at = time.time()
|
||||||
|
return self
|
||||||
|
|
||||||
|
def cancel(self):
|
||||||
|
"""This path is no longer needed."""
|
||||||
|
self.state = CANCELLED
|
||||||
|
self.resolved_at = time.time()
|
||||||
|
for child in self.children:
|
||||||
|
if child.state.waiting:
|
||||||
|
child.cancel()
|
||||||
|
return self
|
||||||
|
|
||||||
|
def spawn(self, path_id: str) -> 'Route':
|
||||||
|
"""Create a sub-route"""
|
||||||
|
child = Route(path_id=path_id, depth=self.depth + 1)
|
||||||
|
self.children.append(child)
|
||||||
|
return child
|
||||||
|
|
||||||
|
def resolve(self, result=None):
|
||||||
|
"""First arrival wins. Cancel everything else."""
|
||||||
|
self.arrive(result)
|
||||||
|
# Cancel all siblings at the parent level
|
||||||
|
return self
|
||||||
|
|
||||||
|
@property
|
||||||
|
def latency_ms(self):
|
||||||
|
if self.resolved_at:
|
||||||
|
return round((self.resolved_at - self.started_at) * 1000, 2)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def tree(self, indent=0):
|
||||||
|
"""Pretty print the routing tree"""
|
||||||
|
symbols = {1: '+', 0: '.', -1: 'x'}
|
||||||
|
state_sym = symbols[int(self.state)]
|
||||||
|
lat = f" ({self.latency_ms}ms)" if self.latency_ms else ""
|
||||||
|
result_str = f" → {self.result}" if self.result else ""
|
||||||
|
lines = [f"{' ' * indent}[{state_sym}] {self.path_id}{lat}{result_str}"]
|
||||||
|
for child in self.children:
|
||||||
|
lines.append(child.tree(indent + 1))
|
||||||
|
return '\n'.join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
# ── Recursive Ternary Router ──
|
||||||
|
class TernaryRouter:
|
||||||
|
"""Routes requests through multiple paths. First arrival cancels the rest.
|
||||||
|
This is the BlackBox Protocol routing engine."""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.routes: Dict[str, Route] = {}
|
||||||
|
self.stats = {'total': 0, 'arrived': 0, 'cancelled': 0, 'avg_latency': 0}
|
||||||
|
|
||||||
|
def route(self, request_id: str, paths: List[str]) -> Route:
|
||||||
|
"""Create a multi-path route. Each path runs in parallel.
|
||||||
|
First to arrive cancels all others."""
|
||||||
|
root = Route(path_id=request_id)
|
||||||
|
for p in paths:
|
||||||
|
root.spawn(p)
|
||||||
|
self.routes[request_id] = root
|
||||||
|
self.stats['total'] += 1
|
||||||
|
return root
|
||||||
|
|
||||||
|
def resolve(self, request_id: str, path_id: str, result=None) -> Route:
|
||||||
|
"""A path delivered. Cancel everything else."""
|
||||||
|
root = self.routes.get(request_id)
|
||||||
|
if not root:
|
||||||
|
raise ValueError(f"Unknown route: {request_id}")
|
||||||
|
|
||||||
|
for child in root.children:
|
||||||
|
if child.path_id == path_id:
|
||||||
|
child.arrive(result)
|
||||||
|
elif child.state.waiting:
|
||||||
|
child.cancel()
|
||||||
|
self.stats['cancelled'] += 1
|
||||||
|
|
||||||
|
root.arrive(result)
|
||||||
|
self.stats['arrived'] += 1
|
||||||
|
if root.latency_ms:
|
||||||
|
self.stats['avg_latency'] = (self.stats['avg_latency'] + root.latency_ms) / 2
|
||||||
|
|
||||||
|
return root
|
||||||
|
|
||||||
|
def status(self):
|
||||||
|
return {
|
||||||
|
'active_routes': sum(1 for r in self.routes.values() if r.state.waiting),
|
||||||
|
'completed': sum(1 for r in self.routes.values() if r.state.arrived),
|
||||||
|
**self.stats,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ── Assembly-like instructions for ternary operations ──
|
||||||
|
class TernaryASM:
|
||||||
|
"""Low-level ternary instruction set.
|
||||||
|
These map directly to what the Hailo/ARM can execute."""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def TRIT_SET(register, value):
|
||||||
|
"""Set a trit register"""
|
||||||
|
return Trit(value)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def TRIT_AND(a, b):
|
||||||
|
"""MIN of two trits"""
|
||||||
|
return a & b
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def TRIT_OR(a, b):
|
||||||
|
"""MAX of two trits"""
|
||||||
|
return a | b
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def TRIT_NEG(a):
|
||||||
|
"""Negate a trit"""
|
||||||
|
return -a
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def TRIT_MUL(a, b):
|
||||||
|
"""Multiply trits"""
|
||||||
|
return a * b
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def WORD_CANCEL(word):
|
||||||
|
"""Cancel all pending trits in a word — the key operation"""
|
||||||
|
return word.cancel_pending()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def ROUTE_SPAWN(router, request_id, paths):
|
||||||
|
"""Spawn a multi-path route"""
|
||||||
|
return router.route(request_id, paths)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def ROUTE_RESOLVE(router, request_id, path_id, result):
|
||||||
|
"""First arrival wins"""
|
||||||
|
return router.resolve(request_id, path_id, result)
|
||||||
|
|
||||||
|
|
||||||
|
# ── Demo ──
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("=== BlackRoad Ternary Runtime ===\n")
|
||||||
|
|
||||||
|
# Basic trit operations
|
||||||
|
print("Trit logic:")
|
||||||
|
print(f" ARRIVED & WAITING = {ARRIVED & WAITING}")
|
||||||
|
print(f" ARRIVED | CANCELLED = {ARRIVED | CANCELLED}")
|
||||||
|
print(f" -ARRIVED = {-ARRIVED}")
|
||||||
|
print(f" ARRIVED * CANCELLED = {ARRIVED * CANCELLED}")
|
||||||
|
print()
|
||||||
|
|
||||||
|
# Ternary word
|
||||||
|
w = TernaryWord(42)
|
||||||
|
print(f"42 in balanced ternary: {w} = {w.to_int()}")
|
||||||
|
w2 = TernaryWord(-13)
|
||||||
|
print(f"-13 in balanced ternary: {w2} = {w2.to_int()}")
|
||||||
|
print()
|
||||||
|
|
||||||
|
# Recursive routing
|
||||||
|
print("Recursive Ternary Routing:")
|
||||||
|
router = TernaryRouter()
|
||||||
|
|
||||||
|
# Simulate: request goes through 3 paths (Tor, WireGuard, direct)
|
||||||
|
root = router.route("req-001", ["tor", "wireguard", "direct"])
|
||||||
|
print(f" Spawned: {root.tree()}")
|
||||||
|
|
||||||
|
# Direct path arrives first
|
||||||
|
import time; time.sleep(0.01)
|
||||||
|
router.resolve("req-001", "direct", result="Hello from Octavia")
|
||||||
|
print(f"\n After resolution:\n{root.tree()}")
|
||||||
|
|
||||||
|
print(f"\n Stats: {router.stats}")
|
||||||
|
print(f"\n The -1 isn't failure. It's intelligence.")
|
||||||
|
print(f" 1/(2e) = {1/(2*2.718281828):.6f} — the irreducible gap.")
|
||||||
@@ -988,7 +988,7 @@ function handleLandingPage() {
|
|||||||
body { background: var(--bg); color: var(--text); font-family: var(--sg); overflow-x: hidden; -webkit-font-smoothing: antialiased; }
|
body { background: var(--bg); color: var(--text); font-family: var(--sg); overflow-x: hidden; -webkit-font-smoothing: antialiased; }
|
||||||
::-webkit-scrollbar { width:6px; } ::-webkit-scrollbar-track { background:#000; }
|
::-webkit-scrollbar { width:6px; } ::-webkit-scrollbar-track { background:#000; }
|
||||||
::-webkit-scrollbar-thumb { background: linear-gradient(180deg,#FF6B2B,#FF2255,#8844FF,#00D4FF); border-radius:3px; }
|
::-webkit-scrollbar-thumb { background: linear-gradient(180deg,#FF6B2B,#FF2255,#8844FF,#00D4FF); border-radius:3px; }
|
||||||
.gradient-text { background: var(--g); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
|
.gradient-text { color: #f5f5f5; }
|
||||||
.gradient-border { border:1px solid transparent; background-origin:border-box; background-clip:padding-box,border-box; background-image:linear-gradient(#0a0a0a,#0a0a0a), var(--g); }
|
.gradient-border { border:1px solid transparent; background-origin:border-box; background-clip:padding-box,border-box; background-image:linear-gradient(#0a0a0a,#0a0a0a), var(--g); }
|
||||||
.gradient-line { height:1px; background: linear-gradient(90deg,transparent,#FF2255,#8844FF,#00D4FF,transparent); }
|
.gradient-line { height:1px; background: linear-gradient(90deg,transparent,#FF2255,#8844FF,#00D4FF,transparent); }
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ main = "src/worker.js"
|
|||||||
compatibility_date = "2024-12-01"
|
compatibility_date = "2024-12-01"
|
||||||
workers_dev = true
|
workers_dev = true
|
||||||
|
|
||||||
routes = [
|
[[routes]]
|
||||||
{ pattern = "pay.blackroad.io/*", zone_name = "blackroad.io" }
|
pattern = "pay.blackroad.io/*"
|
||||||
]
|
zone_name = "blackroad.io"
|
||||||
|
|
||||||
[[d1_databases]]
|
[[d1_databases]]
|
||||||
binding = "DB"
|
binding = "DB"
|
||||||
@@ -18,4 +18,4 @@ id = "68e5424a74234de197d5694127d2c3e5"
|
|||||||
|
|
||||||
[vars]
|
[vars]
|
||||||
OLLAMA_URL = "https://ollama.blackroad.io"
|
OLLAMA_URL = "https://ollama.blackroad.io"
|
||||||
AUTH_API = "https://auth.blackroad.io"
|
AUTH_API = "https://auth-blackroad.amundsonalexa.workers.dev"
|
||||||
|
|||||||
Reference in New Issue
Block a user