{"timestamp":"2026-02-10T13:07:26.969006Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-10T13:07:26.969081Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969303Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-10T13:07:26.969331Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969365Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969377Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-10T13:07:26.969406Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969420Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-10T13:07:26.969469Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969479Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969481Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969477Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 0): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969481Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 1): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969485Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 2): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969497Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 6): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969510Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 10): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969512Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 12): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969498Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 4): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969505Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 8): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969516Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:26.969519Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 3): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969530Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 7): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969533Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 11): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969534Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 13): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969542Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 5): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969548Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 9): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969555Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 14): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969570Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 3): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969567Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 0): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969574Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 5): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969577Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 6): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969581Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 8): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969585Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 2): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969592Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 10): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969594Z","level":"ERROR","fields":{"message":"HTTP/1.1 server error (listener 15): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969609Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 9): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969596Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 13): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969598Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 11): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969597Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 4): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969602Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 1): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969605Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 14): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969605Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 7): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969623Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 12): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:26.969610Z","level":"ERROR","fields":{"message":"HTTPS/2 server error (listener 15): Permission denied (os error 13)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-10T13:07:27.033417Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:27.033469Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:27.035065Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 127286"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.068632Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.069389Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.069435Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:28.069446Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:28.071105Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 127326"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:29.097887Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:29.098623Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:57.310226Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:57.311783Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 127778"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.343904Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.344569Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:07:58.344595Z","level":"INFO","fields":{"message":"Updated route for domain proxy.solisoft.net -> http://localhost:21175"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-10T13:07:58.344760Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-10T13:08:05.471411Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:05.472749Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 127881"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:06.505286Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:06.505706Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:35.777305Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:35.778664Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 128336"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:36.810014Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:08:36.810610Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:04.601562Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:04.603736Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot green with PID 128820"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:05.637522Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:09:05.637935Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-10T13:17:19.600891Z","level":"INFO","fields":{"message":"Received SIGTERM, shutting down..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.901863Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902369Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:25:01.902432Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902730Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:25:01.902913Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902926Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902945Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:01.902969Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903005Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:25:01.903093Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903092Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:01.903112Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:01.903179Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903243Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903306Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903341Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903385Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:01.903420Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004376Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004385Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004379Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004407Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004401Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004412Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004412Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004439Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004440Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004466Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004471Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004488Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004554Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004491Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004507Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004518Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004547Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004553Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004559Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004558Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004566Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004568Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004574Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004577Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:02.004580Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004584Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004587Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.004597Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.005913Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2563001"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.006001Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2563003"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.006144Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2563002"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.017294Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2563037"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.017850Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2563038"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.018129Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2563039"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.018666Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2563040"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:02.390896Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:03.008125Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008212Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008229Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008240Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008253Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008264Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008277Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008282Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008309Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008313Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008329Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.008331Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563001"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008340Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563003"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008345Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008358Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008369Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008378Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008385Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008425Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.008458Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019025Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019046Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019068Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019101Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563039"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019098Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019110Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019116Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563038"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019121Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019140Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019150Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019195Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019211Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019219Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019250Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019585Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019597Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.019601Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563037"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019605Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019610Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019613Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.019630Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031656Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.031698Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:03.031709Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563040"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031717Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031727Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031735Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.031784Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:03.521438Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:08.575762Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.390028Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.390066Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2563003)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.445785Z","level":"INFO","fields":{"message":"Process 2563003 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.445854Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2563039)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.501309Z","level":"INFO","fields":{"message":"Process 2563039 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.501346Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2563040)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.504295Z","level":"INFO","fields":{"message":"Process 2563040 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.504326Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2563001)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.558437Z","level":"INFO","fields":{"message":"Process 2563001 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.558474Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2563037)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.613572Z","level":"INFO","fields":{"message":"Process 2563037 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.613593Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2563038)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.667841Z","level":"INFO","fields":{"message":"Process 2563038 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.667866Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2563002)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.671049Z","level":"INFO","fields":{"message":"Process 2563002 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.892571Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.892942Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:25:12.892990Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893203Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:25:12.893333Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893342Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893359Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:25:12.893369Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893395Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:25:12.893462Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.893469Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.893471Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893533Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893571Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893609Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893637Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893674Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.893704Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.944074Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.944570Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.954265Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:21917/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:12.992910Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992918Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992921Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992932Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992936Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992939Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992945Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992951Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992957Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992982Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992963Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992957Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992976Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992972Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992986Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.992990Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.992993Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.993003Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.993023Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.993026Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994681Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2563312"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994814Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2563313"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994816Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2563314"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.994836Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.994840Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.995972Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2563316"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996001Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996006Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996724Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2563317"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996755Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996763Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.996774Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:12.996785Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.997456Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2563323"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:12.997751Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2563329"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.181940Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:21917/docs/getting-started)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.514562Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.812453Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:25:13.996652Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996709Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996725Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563312"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996743Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996756Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996768Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996855Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996877Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996895Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.996902Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563313"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996907Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996914Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996919Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.996938Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997049Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.997058Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.997063Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563316"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997068Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997073Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997078Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.997092Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998593Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998634Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998647Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563317"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998660Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998697Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998706Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998743Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998785Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998797Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998818Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563323"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998830Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998839Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998847Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998876Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998913Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998926Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:13.998937Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563329"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998944Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998953Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998960Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:13.998990Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.007993Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:14.008033Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:25:14.008046Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563314"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008058Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008071Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008078Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:25:14.008112Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.275891Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.275963Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276278Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276876Z","level":"INFO","fields":{"message":"Added route for domain solisoft.net -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276892Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.test -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276899Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.net -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.276992Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:26:11.277010Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277016Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277022Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:11.277027Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:11.278541Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2563894"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:13.105391Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.105436Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.606949Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:13.607015Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.109009Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.109068Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.284973Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 3s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:14.285035Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:14.285049Z","level":"INFO","fields":{"message":"Deploy started, PID: 2563894"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285063Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285077Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285089Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.285154Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.610920Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:14.610997Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.112881Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.112931Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.615413Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:15.615480Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.117182Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.117252Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.618864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:16.618927Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:17.121244Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:17.121320Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.075561Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.075645Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2563894)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.130916Z","level":"INFO","fields":{"message":"Process 2563894 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.130951Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2563312)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.133239Z","level":"INFO","fields":{"message":"Process 2563312 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.133265Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2563313)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.187136Z","level":"INFO","fields":{"message":"Process 2563313 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.187151Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2563317)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.241195Z","level":"INFO","fields":{"message":"Process 2563317 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.241233Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2563323)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.295239Z","level":"INFO","fields":{"message":"Process 2563323 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.295275Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2563314)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.350310Z","level":"INFO","fields":{"message":"Process 2563314 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.350352Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2563329)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.405030Z","level":"INFO","fields":{"message":"Process 2563329 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.405067Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2563316)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.460257Z","level":"INFO","fields":{"message":"Process 2563316 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.578143Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578498Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:26:51.578549Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578720Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:26:51.578861Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578867Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578878Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:26:51.578895Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.578918Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.578978Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:51.578983Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:51.578995Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579057Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579078Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579105Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579143Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579166Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579204Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.579228Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.674655Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.684132Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:26:51.685428Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685432Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685434Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685440Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685439Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685448Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685446Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685450Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685449Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685459Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685465Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685463Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685471Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685474Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685478Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685483Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685488Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685485Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685491Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685495Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685499Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685500Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685502Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685507Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685507Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685512Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.685513Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.685519Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.687008Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2564346"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.687105Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2564347"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.700887Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2564370"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.700885Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2564371"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701429Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2564372"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701484Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:51.701493Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701907Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2564374"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.701905Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2564373"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:51.702301Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2564375"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.549029Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:52.567708Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:26:52.688731Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.688771Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.688783Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564347"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688790Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688833Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688844Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.688893Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701177Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.701196Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.701201Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564346"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701204Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701210Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701213Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.701235Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703017Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703032Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703037Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564371"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703040Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703055Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703058Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703076Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703139Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703157Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703165Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703206Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703211Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564372"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703209Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564370"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703214Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703221Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703225Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703227Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703233Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703236Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703261Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703278Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703298Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703320Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703328Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564373"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703336Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703359Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703368Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703419Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703721Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703738Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703745Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564374"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703752Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703760Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703766Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703827Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703828Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703838Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:26:52.703841Z","level":"INFO","fields":{"message":"Deploy started, PID: 2564375"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703843Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703847Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703849Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:26:52.703898Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:27:18.992831Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:29:54.098878Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.098909Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099037Z","level":"INFO","fields":{"message":"Discovered new app: www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099503Z","level":"INFO","fields":{"message":"Added route for domain www.defycards.test -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099509Z","level":"INFO","fields":{"message":"Added route for domain defycards.com -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099513Z","level":"INFO","fields":{"message":"Added route for domain www.defycards.com -> http://localhost:9002"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099565Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:29:54.099584Z","level":"INFO","fields":{"message":"Auto-starting app: www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099586Z","level":"INFO","fields":{"message":"Starting deploy for www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099588Z","level":"INFO","fields":{"message":"Deploying www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.099591Z","level":"INFO","fields":{"message":"Starting deployment of www.defycards.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:54.100582Z","level":"INFO","fields":{"message":"Started www.defycards.com slot blue with PID 2565458"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:54.611077Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:54.611108Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102770Z","level":"INFO","fields":{"message":"Health check passed for www.defycards.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:55.102841Z","level":"INFO","fields":{"message":"Health check passed for www.defycards.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:29:55.102856Z","level":"INFO","fields":{"message":"Deploy started, PID: 2565458"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102864Z","level":"INFO","fields":{"message":"Current slot: www.defycards.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102872Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102879Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.102938Z","level":"INFO","fields":{"message":"Deploy completed for www.defycards.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.112127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.112155Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.614603Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:55.614646Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.116314Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.116362Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.618762Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:56.618790Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.120319Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.120358Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.622655Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:57.622685Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.125090Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.125189Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.627925Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:58.627964Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.130725Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.130786Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.632179Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:29:59.632207Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:00.134614Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:00.134648Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.782502Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.782553Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783192Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.defycards.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783205Z","level":"INFO","fields":{"message":"Removing orphaned route for domain defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783214Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.defycards.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:24.783434Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:30:25.284524Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.284563Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.785949Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:25.785995Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.182098Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:30:26.288598Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.288676Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.790377Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:26.790445Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.292171Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.292222Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.794803Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:27.794870Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.296536Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.296579Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.798063Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:28.798103Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:29.300387Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:30:29.300794Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:31.125778Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:31.125862Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:58.528382Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:31:58.528436Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:09.835665Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:09.835717Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:36.936963Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:32:36.937018Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:35:54.351864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:35:54.351949Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:05.972323Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:05.972375Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:28.057064Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:28.057125Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:54.203577Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:36:54.203650Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:38:17.646043Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:38:17.646131Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:45.991517Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:45.991578Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2564374)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.047701Z","level":"INFO","fields":{"message":"Process 2564374 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.047734Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2564375)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.102831Z","level":"INFO","fields":{"message":"Process 2564375 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.102909Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2564370)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.105202Z","level":"INFO","fields":{"message":"Process 2564370 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.105216Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2564371)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.160200Z","level":"INFO","fields":{"message":"Process 2564371 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.160228Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2564372)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.214874Z","level":"INFO","fields":{"message":"Process 2564372 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.214893Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2564373)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.217135Z","level":"INFO","fields":{"message":"Process 2564373 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.217149Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2564346)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.272272Z","level":"INFO","fields":{"message":"Process 2564346 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.272300Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2564347)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.326239Z","level":"INFO","fields":{"message":"Process 2564347 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.493926Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494317Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:39:46.494360Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494552Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:39:46.494701Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494705Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494716Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:39:46.494739Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494757Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.494830Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:46.494837Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:46.494837Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494885Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494909Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494936Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494972Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.494997Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.495036Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.495060Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.541922Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.547231Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:39:46.603907Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603912Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603906Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603934Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603933Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603939Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603941Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603936Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603943Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603946Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603946Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603950Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603943Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603951Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603952Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603975Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603955Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.603958Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603961Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603966Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603979Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603981Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.603985Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604000Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604001Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604003Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604001Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604008Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604010Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604013Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:46.604029Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.604045Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.605379Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2568879"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.605544Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2568880"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.616411Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2568893"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.616776Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2568894"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617482Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2568895"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617862Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2568896"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.617882Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2568898"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:46.618246Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2568899"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.539332Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:47.556573Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:39:47.606998Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607080Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607116Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568879"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607127Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607145Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607152Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607191Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607210Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607224Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.607238Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568880"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607248Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607260Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607267Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.607336Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618025Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.618061Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.618072Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568893"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618079Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618087Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618093Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.618133Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620018Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620033Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620038Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568899"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620042Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620046Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620050Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620083Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620128Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620133Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620135Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568896"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620138Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620141Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620143Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620141Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620151Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620154Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568898"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620162Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620166Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620169Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620171Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620186Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620228Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620250Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.620258Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568895"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620265Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620272Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620277Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.620328Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631096Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.631117Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:39:47.631124Z","level":"INFO","fields":{"message":"Deploy started, PID: 2568894"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631139Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631146Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631151Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:39:47.631186Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:27.778767Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:27.778823Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2568895)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.834111Z","level":"INFO","fields":{"message":"Process 2568895 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.834149Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2568899)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.889027Z","level":"INFO","fields":{"message":"Process 2568899 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.889068Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2568893)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.944011Z","level":"INFO","fields":{"message":"Process 2568893 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.944046Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2568896)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.945967Z","level":"INFO","fields":{"message":"Process 2568896 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:27.945985Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2568880)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.001019Z","level":"INFO","fields":{"message":"Process 2568880 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.001053Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2568879)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.003341Z","level":"INFO","fields":{"message":"Process 2568879 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.003365Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2568898)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.005586Z","level":"INFO","fields":{"message":"Process 2568898 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.005600Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2568894)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:28.060075Z","level":"INFO","fields":{"message":"Process 2568894 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.678928Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679285Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:41:55.679329Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679512Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:41:55.679641Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679645Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679652Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:41:55.679678Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679693Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:41:55.679754Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:41:55.679760Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:41:55.679780Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679846Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679868Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679895Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679931Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679954Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.679990Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.680014Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788790Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788794Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788875Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788801Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788879Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788830Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788880Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788867Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788833Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788893Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788895Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788891Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788901Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788904Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788905Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788911Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788916Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788923Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.788933Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.788942Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790577Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2570678"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790605Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.790607Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.790916Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2570679"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.791698Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2570680"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.791710Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.791713Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792352Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2570682"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792376Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.792378Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.792408Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.792416Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793485Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2570684"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793613Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2570685"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.793628Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.793631Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.794266Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2570687"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.794294Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:55.794305Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:55.795053Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2570708"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793506Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793551Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793563Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570682"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793571Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793584Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793592Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793648Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793730Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793744Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.793750Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570678"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793756Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793762Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793767Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.793825Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794169Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794172Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794181Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794181Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.794184Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570684"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794186Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570680"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794187Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794191Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794196Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794210Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794214Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794216Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794236Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.794253Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795618Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795631Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795634Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570687"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795637Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795640Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795643Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795648Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795656Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795659Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570685"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795669Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795675Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795680Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795683Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795704Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795963Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795972Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.795975Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570708"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795978Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795981Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.795983Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.796006Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804638Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.804664Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:41:56.804672Z","level":"INFO","fields":{"message":"Deploy started, PID: 2570679"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804678Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804686Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804692Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:41:56.804734Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:00.509117Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:00.525017Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:46.877993Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:46.878043Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2570682)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.943133Z","level":"INFO","fields":{"message":"Process 2570682 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.943157Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2570685)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.998404Z","level":"INFO","fields":{"message":"Process 2570685 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:46.998438Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2570687)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.054414Z","level":"INFO","fields":{"message":"Process 2570687 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.054445Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2570708)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.108906Z","level":"INFO","fields":{"message":"Process 2570708 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.108934Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2570679)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.164804Z","level":"INFO","fields":{"message":"Process 2570679 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.164862Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2570680)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.219090Z","level":"INFO","fields":{"message":"Process 2570680 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.219108Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2570684)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.274356Z","level":"INFO","fields":{"message":"Process 2570684 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.274411Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2570678)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.330527Z","level":"INFO","fields":{"message":"Process 2570678 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.380771Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:42:47.380840Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381027Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:42:47.381157Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381162Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381175Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:42:47.381186Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381211Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:47.381264Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:47.381269Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:42:47.381283Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381337Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381358Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381388Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381424Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381447Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381484Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381507Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381535Z","level":"INFO","fields":{"message":"Removing orphaned route for domain proxy.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381540Z","level":"INFO","fields":{"message":"Removing orphaned route for domain kv.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381543Z","level":"INFO","fields":{"message":"Removing orphaned route for domain host.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381545Z","level":"INFO","fields":{"message":"Removing orphaned route for domain soli.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381549Z","level":"INFO","fields":{"message":"Removing orphaned route for domain db.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381552Z","level":"INFO","fields":{"message":"Removing orphaned route for domain agenda.letelegraphe.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381554Z","level":"INFO","fields":{"message":"Removing orphaned route for domain www.solisoft.test"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.381660Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:42:47.487505Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487505Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487514Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487546Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487535Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487542Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487550Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487546Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487554Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487557Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487556Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487558Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487566Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.487562Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487568Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487561Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487567Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487567Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.487577Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487579Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487580Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.487593Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489130Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2571565"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489141Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2571566"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489182Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.489192Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.489517Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2571567"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490297Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2571569"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490311Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490314Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490939Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2571570"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490962Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490964Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.490980Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.490986Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.491804Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2571587"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.492460Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2571602"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.492479Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:47.492485Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.493195Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2571627"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:47.543724Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:47.966257Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:42:48.492058Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492125Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492134Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571567"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492144Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492162Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492171Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492227Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492324Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492354Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492359Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571566"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492362Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492366Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492398Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492411Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492486Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492500Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492503Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571570"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492507Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492510Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492513Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492528Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492543Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492547Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492550Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571569"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492552Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492555Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492557Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492566Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492834Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492844Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.492847Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571587"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492849Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492852Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492860Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.492870Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494268Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494277Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494280Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571602"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494283Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494286Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494289Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494299Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494371Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494375Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.494378Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571627"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494380Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494383Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494386Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.494394Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504766Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.504787Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:42:48.504794Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571565"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504800Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504815Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504825Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.504847Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:42:48.778081Z","level":"ERROR","fields":{"message":"Backend rejected WebSocket upgrade: HTTP/1.1 404 Not Found"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:44:17.124904Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.124943Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2571566)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.187873Z","level":"INFO","fields":{"message":"Process 2571566 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.187899Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2571569)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.243052Z","level":"INFO","fields":{"message":"Process 2571569 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.243114Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2571602)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.245335Z","level":"INFO","fields":{"message":"Process 2571602 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.245351Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2571627)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.299304Z","level":"INFO","fields":{"message":"Process 2571627 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.299344Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2571570)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.301698Z","level":"INFO","fields":{"message":"Process 2571570 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.301711Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2571567)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.356254Z","level":"INFO","fields":{"message":"Process 2571567 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.356299Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2571587)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.411050Z","level":"INFO","fields":{"message":"Process 2571587 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.411093Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2571565)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.466955Z","level":"INFO","fields":{"message":"Process 2571565 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.627286Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.627660Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:44:17.627706Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.627898Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:44:17.628029Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628033Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628044Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:44:17.628062Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628080Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:44:17.628142Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:17.628150Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628153Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:17.628190Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628207Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628234Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628271Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628295Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628331Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628354Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628390Z","level":"INFO","fields":{"message":"Added route for domain proxy.solisoft.test -> http://localhost:17475"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628395Z","level":"INFO","fields":{"message":"Added route for domain kv.solisoft.test -> http://localhost:21917"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628399Z","level":"INFO","fields":{"message":"Added route for domain soli.solisoft.test -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628402Z","level":"INFO","fields":{"message":"Added route for domain www.solisoft.test -> http://localhost:9000"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628405Z","level":"INFO","fields":{"message":"Added route for domain db.solisoft.test -> http://localhost:23684"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628408Z","level":"INFO","fields":{"message":"Added route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628411Z","level":"INFO","fields":{"message":"Added route for domain agenda.letelegraphe.test -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.628517Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:44:17.735665Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735670Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735661Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735676Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735694Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735692Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735698Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735713Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735716Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735725Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735727Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735728Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735733Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735737Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735734Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735738Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735755Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735759Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735762Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.735765Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.735769Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.735773Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.737397Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2571968"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.737483Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2571969"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.738218Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2571970"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.738234Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.738237Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739325Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2571972"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739342Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.739344Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.739982Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2571976"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740013Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.740016Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740029Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.740039Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.740988Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2571991"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741100Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2571996"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741115Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:17.741119Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:17.741851Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2571999"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739560Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739561Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739592Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739597Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571969"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739601Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739600Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.739610Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739611Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571970"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739614Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739618Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739679Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739700Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739706Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.739739Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741079Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741095Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741098Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571972"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741101Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741105Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741119Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741141Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741419Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741426Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.741428Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571976"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741431Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741434Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741436Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.741451Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743085Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743112Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743120Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571991"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743126Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743134Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743126Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743139Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743150Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.743159Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571996"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743193Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743205Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743212Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743217Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.743259Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744018Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.744034Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.744051Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571999"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744057Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744063Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744068Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.744103Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751749Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.751774Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:44:18.751780Z","level":"INFO","fields":{"message":"Deploy started, PID: 2571968"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751785Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751790Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751795Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:18.751838Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:44:19.360907Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:19.376993Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:44:19.393358Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:05.848007Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:05.848058Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2571970)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.903202Z","level":"INFO","fields":{"message":"Process 2571970 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.903239Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2571991)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.906067Z","level":"INFO","fields":{"message":"Process 2571991 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.906079Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2571968)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.960724Z","level":"INFO","fields":{"message":"Process 2571968 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:05.960755Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2571996)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.015358Z","level":"INFO","fields":{"message":"Process 2571996 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.015423Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2571999)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.070407Z","level":"INFO","fields":{"message":"Process 2571999 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.070433Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2571976)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.125978Z","level":"INFO","fields":{"message":"Process 2571976 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.126005Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2571972)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.181014Z","level":"INFO","fields":{"message":"Process 2571972 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.181047Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2571969)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.235197Z","level":"INFO","fields":{"message":"Process 2571969 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.350498Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351019Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T11:49:06.351069Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351317Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T11:49:06.351491Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351495Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351505Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T11:49:06.351524Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351544Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T11:49:06.351596Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.351601Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.351636Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351697Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351716Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351743Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351779Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351803Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351844Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.351872Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458609Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458618Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458618Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458640Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458646Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458653Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458652Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458661Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458670Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458678Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458684Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458687Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458691Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458685Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458693Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458692Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.458702Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.458705Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460028Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2573532"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460063Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460067Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460756Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2573533"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.460779Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.460781Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461866Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2573535"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461888Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.461890Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.461914Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.461922Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.462914Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2573536"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.463099Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2573539"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.463113Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.463116Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464104Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2573549"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464124Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.464127Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464770Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2573561"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.464787Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:06.464791Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.465421Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2573563"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:06.544999Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.545462Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:06.553647Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.462184Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.462247Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.462258Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573533"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462267Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462281Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462292Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.462368Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463014Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.463034Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.463052Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573535"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463057Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463062Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463065Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.463099Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464730Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464759Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464767Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573536"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464774Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464785Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464791Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464878Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464924Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464930Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.464934Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573539"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464938Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464943Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464945Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.464968Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465153Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465166Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465172Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573549"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465177Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465183Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465188Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465240Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465662Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465674Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.465680Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573561"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465686Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465692Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465697Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.465735Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467355Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.467381Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.467389Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573563"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467395Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467402Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467408Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.467468Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474181Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.474210Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T11:49:07.474218Z","level":"INFO","fields":{"message":"Deploy started, PID: 2573532"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474224Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474231Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474237Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.474275Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:49:07.507988Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.522003Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:49:07.535510Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T11:51:43.363786Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:51:43.363920Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:52:06.524478Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:52:06.524527Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:54:12.228707Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:54:12.228757Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:01.939525Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:01.939573Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:13.976366Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:13.976437Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:39.101359Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:57:39.101426Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:59:34.001922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T11:59:34.001973Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.283945Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.283975Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2573539)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.339442Z","level":"INFO","fields":{"message":"Process 2573539 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.339479Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2573535)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.394944Z","level":"INFO","fields":{"message":"Process 2573535 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.394985Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2573533)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.448941Z","level":"INFO","fields":{"message":"Process 2573533 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.448958Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2573536)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.502894Z","level":"INFO","fields":{"message":"Process 2573536 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.502914Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2573549)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.557926Z","level":"INFO","fields":{"message":"Process 2573549 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.557945Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2573532)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.612123Z","level":"INFO","fields":{"message":"Process 2573532 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.612137Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2573561)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.666861Z","level":"INFO","fields":{"message":"Process 2573561 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.666894Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2573563)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.722419Z","level":"INFO","fields":{"message":"Process 2573563 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.786587Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787110Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:06:11.787158Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787402Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T12:06:11.787540Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787545Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787557Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T12:06:11.787574Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787601Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T12:06:11.787682Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787681Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:11.787688Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:11.787732Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787749Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787775Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787816Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787844Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787881Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.787905Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894471Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894468Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894495Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894499Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894536Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894533Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894493Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894503Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894506Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894528Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894541Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894542Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894544Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894548Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894551Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894554Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894554Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.894557Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.896026Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2578918"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.896048Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.896051Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897130Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2578919"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897150Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.897153Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.897175Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.897183Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898373Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2578920"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898393Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2578921"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.898428Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.898441Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.899495Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2578941"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.899553Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.899560Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900308Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2578946"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900329Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.900332Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.900345Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:11.900352Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.901007Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2578947"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:11.901261Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2578949"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.549609Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.549961Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.556615Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:12.897265Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.897311Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.897318Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578918"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897327Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897337Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897340Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.897387Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899154Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899180Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899186Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578919"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899193Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899215Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899219Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899263Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899901Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899921Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.899925Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578921"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899930Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899934Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899937Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.899973Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901516Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901533Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901537Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578946"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901540Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901544Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901547Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901572Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901590Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901595Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901598Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578941"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901601Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901604Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901606Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901622Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901765Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901783Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.901787Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578947"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901791Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901795Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901797Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.901829Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903234Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.903245Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.903248Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578949"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903251Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903257Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.903274Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911168Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.911187Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:06:12.911194Z","level":"INFO","fields":{"message":"Deploy started, PID: 2578920"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911199Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911205Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911210Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:12.911245Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:06:13.506358Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:13.525354Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:06:13.541517Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:09:06.905627Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:09:06.905698Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:10:23.774785Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:10:23.774855Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:09.616903Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:09.616953Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:13.215980Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:13.216028Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:29.190702Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:11:29.190771Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:12:26.572644Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:12:26.572721Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:04.553443Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:04.553479Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:14.754569Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:13:14.754602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:14:51.457611Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:14:51.457662Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:12.354566Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:12.354618Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:27.752181Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:16:27.752216Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:08.148477Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:08.148548Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:23.171328Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:17:23.171381Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:31.998484Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:31.998559Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:43.978931Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:18:43.978973Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:10.163752Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:10.163836Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:28.076633Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:19:28.076668Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:25.216382Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:25.216433Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:51.089450Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:21:51.089503Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:04.217437Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:04.217473Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:07.947586Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:22:07.947632Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:14.573422Z","level":"INFO","fields":{"message":"Circuit breaker reset for http://localhost:24003/"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T12:24:36.556464Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:36.556540Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:52.091381Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:52.091453Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:56.820373Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:24:56.820428Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:06.215930Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:06.215996Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:10.036783Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:10.036818Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:31.453932Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:31.453984Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:39.829336Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:25:39.829404Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:17.170859Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:17.170958Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:30.810490Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:27:30.810543Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719495Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719551Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:32.719563Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:32.721645Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot green with PID 2584029"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724056Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724106Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.724120Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584029"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724131Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: Some(2578921)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724160Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724166Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724172Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 2578921)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.724176Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2578921)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.780580Z","level":"INFO","fields":{"message":"Process 2578921 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:33.780617Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780685Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780700Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:33.780945Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:32:33.780962Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023380Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023455Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:39.023469Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:39.026186Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2584091"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028707Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028802Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.028834Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584091"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028846Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: green, old_pid: Some(2584029)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028861Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028868Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028874Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2584029)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.028881Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot green (PID: 2584029)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.084353Z","level":"INFO","fields":{"message":"Process 2584029 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:40.084380Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084438Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084447Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:40.084620Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:32:40.084643Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.319020Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2584091)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.374291Z","level":"INFO","fields":{"message":"Process 2584091 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.374347Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.374362Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:51.374380Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:51.375620Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2584236"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378166Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378214Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:52.378229Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584236"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378239Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378265Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:52.378353Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.898886Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2578919)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.955584Z","level":"INFO","fields":{"message":"Process 2578919 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.955611Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.955618Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:32:59.955623Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:32:59.956743Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2584313"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959450Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959518Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:33:00.959537Z","level":"INFO","fields":{"message":"Deploy started, PID: 2584313"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959549Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959565Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959574Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:33:00.959683Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:34.464691Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2584236)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:34.519721Z","level":"INFO","fields":{"message":"Process 2584236 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:40.976532Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:36:41.014878Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/favicon.ico)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:36:43.283293Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:43.283314Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:43.283318Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:43.284698Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot green with PID 2585898"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286846Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286935Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:44.286984Z","level":"INFO","fields":{"message":"Deploy started, PID: 2585898"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.286993Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287009Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287015Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287024Z","level":"WARN","fields":{"message":"No PID found for old slot blue (status may already be stopped)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287082Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.287098Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:22887"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:44.316727Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:36:44.316782Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553556Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553600Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:46.553610Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:46.556059Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2585932"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557608Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557653Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.557664Z","level":"INFO","fields":{"message":"Deploy started, PID: 2585932"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557673Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: green, old_pid: Some(2585898)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557686Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557693Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557699Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2585898)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.557705Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot green (PID: 2585898)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.612826Z","level":"INFO","fields":{"message":"Process 2585898 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T12:36:47.612851Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.612896Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.net -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.612905Z","level":"INFO","fields":{"message":"Updated route for domain host.solisoft.test -> http://localhost:19228"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:47.613073Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T12:36:47.613088Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:36:50.573120Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T12:44:35.441560Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:35.441640Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:51.203393Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:44:51.203448Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:45:02.011757Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T12:45:02.011836Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.196008Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.196060Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2578920)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.252409Z","level":"INFO","fields":{"message":"Process 2578920 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.252451Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2585932)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.307001Z","level":"INFO","fields":{"message":"Process 2585932 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.307028Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2578918)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.361271Z","level":"INFO","fields":{"message":"Process 2578918 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.361307Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2578941)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.415576Z","level":"INFO","fields":{"message":"Process 2578941 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.415620Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2578947)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.418356Z","level":"INFO","fields":{"message":"Process 2578947 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.418368Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2578949)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.473736Z","level":"INFO","fields":{"message":"Process 2578949 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.473767Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2584313)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.529377Z","level":"INFO","fields":{"message":"Process 2584313 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.529418Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2578946)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.584714Z","level":"INFO","fields":{"message":"Process 2578946 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.698384Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.698781Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:35:15.698828Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699012Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:35:15.699151Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699155Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699165Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:35:15.699183Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699203Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:35:15.699260Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.699265Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.699273Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699330Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699351Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699384Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699421Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699444Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699481Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.699505Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.830860Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.831360Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.841048Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:15.884659Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884658Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884669Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884678Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884691Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884695Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884699Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884696Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884710Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884709Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884727Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884726Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884730Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884731Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884735Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884738Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884742Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.884749Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.884743Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.884745Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.886169Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2594851"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.886884Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2594852"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.886901Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.886904Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.887977Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2594853"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.888003Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.888008Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889216Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2594857"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889247Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.889250Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.889276Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.889288Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890067Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2594877"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890346Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2594878"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.890361Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.890364Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.891054Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2594881"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.891077Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:15.891082Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:15.892116Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2594883"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.252221Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.252449Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.258903Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:35:16.888754Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888754Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888805Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888856Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.888882Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594852"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888904Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888901Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594851"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888917Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888929Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.888937Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889000Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889023Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889051Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.889112Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890259Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890275Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890279Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594853"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890282Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890286Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890288Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890309Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890377Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890382Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.890385Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594857"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890387Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890390Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.890409Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892225Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.892246Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.892249Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594877"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892252Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892255Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892258Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.892274Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893132Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893144Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893155Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594881"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893159Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893164Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893166Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893182Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893619Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893625Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.893628Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594883"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893631Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893634Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893636Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.893652Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903499Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.903517Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:35:16.903520Z","level":"INFO","fields":{"message":"Deploy started, PID: 2594878"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903523Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903527Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903530Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:16.903548Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:35:17.064304Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:36:09.443850Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:09.443905Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:09.443918Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:09.446399Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot green with PID 2595111"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449506Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449575Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.449586Z","level":"INFO","fields":{"message":"Deploy started, PID: 2595111"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449594Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: Some(2594883)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449617Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449625Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449634Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 2594883)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.449641Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2594883)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.504953Z","level":"INFO","fields":{"message":"Process 2594883 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:10.504975Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505009Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.org -> http://localhost:15109"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505015Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.test -> http://localhost:15109"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:10.505136Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:36:10.505141Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488277Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488335Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:22.488347Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:22.490739Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2595162"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492895Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492927Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.492935Z","level":"INFO","fields":{"message":"Deploy started, PID: 2595162"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492941Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: green, old_pid: Some(2595111)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492949Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492953Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492961Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 2595111)"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.492985Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot green (PID: 2595111)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.561884Z","level":"INFO","fields":{"message":"Process 2595111 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:36:23.561919Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.561983Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.org -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.561993Z","level":"INFO","fields":{"message":"Updated route for domain agenda.letelegraphe.test -> http://localhost:22178"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:36:23.562215Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:36:23.562256Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:07.786575Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:07.786611Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2594881)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.841298Z","level":"INFO","fields":{"message":"Process 2594881 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.841336Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2594877)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.896095Z","level":"INFO","fields":{"message":"Process 2594877 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.896133Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2594857)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.951232Z","level":"INFO","fields":{"message":"Process 2594857 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:07.951272Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2594853)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.005976Z","level":"INFO","fields":{"message":"Process 2594853 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.006011Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2594851)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.059683Z","level":"INFO","fields":{"message":"Process 2594851 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.059724Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2594878)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.113628Z","level":"INFO","fields":{"message":"Process 2594878 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.113661Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2594852)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.116099Z","level":"INFO","fields":{"message":"Process 2594852 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.116117Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2595162)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.169696Z","level":"INFO","fields":{"message":"Process 2595162 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.288353Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288670Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:42:08.288700Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288864Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:42:08.288974Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288977Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.288985Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:42:08.289003Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289015Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.289072Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289075Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.289079Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.289109Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289125Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289147Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289172Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289189Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289216Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.289232Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.385090Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.390943Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.407128Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407130Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407141Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407159Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407162Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407163Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407160Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407167Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407168Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407168Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407183Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407185Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407186Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407186Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.407188Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407188Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407190Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.407191Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.408752Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2599110"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.408800Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.408818Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410149Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2599111"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410227Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.410232Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.410903Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.410933Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.414913Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2599112"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.416964Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2599113"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.417021Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.417027Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.425902Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2599116"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.425972Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.425977Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.430921Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2599118"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.430994Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.431000Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.433088Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:08.433128Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.438366Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2599120"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.438581Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2599119"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:08.514473Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.518113Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.530619Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:08.798672Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:08.802207Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:09.424939Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:09.424969Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:42:09.424976Z","level":"INFO","fields":{"message":"Deploy started, PID: 2599112"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424982Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424988Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.424993Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.425031Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:09.489552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.489755Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.492548Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:09.610788Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:09.615249Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:10.484501Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:10.485094Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:10.490874Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:11.222486Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:11.226184Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:12.490393Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:12.490659Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:12.493451Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:13.058505Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:42:16.486672Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:16.486912Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:16.490678Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:19228/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T13:42:16.490707Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:22.495303Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:22.495544Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:28.494763Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:28.496863Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:34.510889Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:34.511166Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:38.484464Z","level":"ERROR","fields":{"message":"Failed to auto-start _admin: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484464Z","level":"ERROR","fields":{"message":"Failed to auto-start kv.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484511Z","level":"ERROR","fields":{"message":"Failed to auto-start host.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484546Z","level":"ERROR","fields":{"message":"Failed to auto-start www.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484546Z","level":"ERROR","fields":{"message":"Failed to auto-start agenda.letelegraphe.org: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484562Z","level":"ERROR","fields":{"message":"Failed to auto-start soli.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:38.484565Z","level":"ERROR","fields":{"message":"Failed to auto-start proxy.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:42:40.500362Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:40.500582Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.516935Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:19228/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.517138Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:42:46.520748Z","level":"WARN","fields":{"message":"Circuit breaker re-OPENED for http://localhost:19228/ (probe failed)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T13:42:46.520768Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:19228/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:58.531037Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:58.531101Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2599112)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:58.587071Z","level":"INFO","fields":{"message":"Process 2599112 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.033455Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.036231Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T13:58:59.036342Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037016Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T13:58:59.037242Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037248Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037260Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T13:58:59.037279Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037324Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T13:58:59.037351Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:59.037356Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T13:58:59.037360Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037416Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037436Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037479Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037523Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037545Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037580Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.037600Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163977Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163973Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163975Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.163994Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164006Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164010Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164015Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164019Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164029Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164044Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164053Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164058Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164060Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164058Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164063Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164081Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164065Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164070Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164075Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164078Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164080Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164082Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164085Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164090Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164096Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.164111Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164120Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.164118Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.165763Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2613119"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.166170Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2613121"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.166181Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2613120"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178359Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2613155"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178762Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2613156"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178841Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.178857Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.178900Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2613157"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.179918Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2613159"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.179976Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:58:59.179986Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:58:59.180776Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2613160"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.168983Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.169031Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.169040Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613119"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169048Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169070Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169075Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.169114Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170757Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.170771Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.170775Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613120"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170778Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170783Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170786Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.170821Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171158Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.171186Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.171194Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613121"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171202Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171210Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171215Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.171265Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180154Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180185Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180192Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613157"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180199Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180207Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180213Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180254Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180290Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180331Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.180337Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613156"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180343Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180349Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180355Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.180393Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181863Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181880Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181885Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613159"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181889Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181893Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181897Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181921Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181972Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181976Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.181979Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613160"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181981Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181984Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.181987Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.182002Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.193970Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.194000Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T13:59:00.194008Z","level":"INFO","fields":{"message":"Deploy started, PID: 2613155"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194015Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194022Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194040Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T13:59:00.194089Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T14:00:34.348902Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T14:00:34.348937Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2613155)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.404776Z","level":"INFO","fields":{"message":"Process 2613155 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.404842Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2613121)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.459843Z","level":"INFO","fields":{"message":"Process 2613121 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.459878Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2613156)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.515129Z","level":"INFO","fields":{"message":"Process 2613156 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.515173Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2613159)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.570129Z","level":"INFO","fields":{"message":"Process 2613159 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.570167Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2613120)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.624115Z","level":"INFO","fields":{"message":"Process 2613120 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.624145Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2613119)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.679129Z","level":"INFO","fields":{"message":"Process 2613119 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.679170Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2613160)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.734687Z","level":"INFO","fields":{"message":"Process 2613160 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.734733Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2613157)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T14:00:34.790006Z","level":"INFO","fields":{"message":"Process 2613157 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.586921Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.589268Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T15:48:11.589322Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.589493Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T15:48:11.590163Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590171Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590186Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T15:48:11.590233Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590264Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T15:48:11.590300Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:11.590305Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:11.590415Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590508Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590542Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590597Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590672Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590723Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590802Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.590873Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696413Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696411Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696427Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696433Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696446Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696449Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696449Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696454Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696456Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696461Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696462Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696462Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696467Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696466Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696472Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.696475Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696475Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.696499Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.697883Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2676136"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.697908Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.697911Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.698924Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2676137"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.698940Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.698942Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700003Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2676139"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700023Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.700026Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.700049Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.700057Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701222Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2676140"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701566Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2676141"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.701598Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.701605Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.703934Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2676158"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.703995Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.704000Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705132Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2676166"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705167Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:11.705173Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:11.705990Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2676167"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701223Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701274Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.701284Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676137"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701295Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701307Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701316Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.701389Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.702972Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.702989Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.702993Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676140"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.702998Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703003Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703006Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703032Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703159Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.703171Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.703175Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676141"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703179Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703183Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703186Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.703209Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705638Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.705660Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.705666Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676139"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705672Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705695Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705708Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.705755Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706008Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706036Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706043Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676158"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706050Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706057Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706062Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706101Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706172Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706182Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.706187Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676166"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706193Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706199Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706204Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.706237Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710272Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.710302Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.710309Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676167"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710315Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710322Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710328Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.710370Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713316Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.713333Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T15:48:12.713336Z","level":"INFO","fields":{"message":"Deploy started, PID: 2676136"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713339Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713341Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713344Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.713358Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T15:48:12.867466Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T15:48:14.196846Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:56:25.024639Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:56:44.694850Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:56:44.694906Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:26.385215Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:26.385277Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:36.236997Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:36.237066Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:38.151169Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:57:38.977987Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T16:57:44.512592Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:44.512638Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:54.664903Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:54.664948Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:55.224285Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:57:55.224342Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:58:51.436973Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T16:58:51.437031Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.045922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.045976Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.616510Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:01:30.616547Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:02:39.871472Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:02:39.871521Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:06:55.962024Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:06:55.962075Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.403499Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.403548Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.871720Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:33.970399Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:33.970450Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:38.334112Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:43.125369Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:43.125418Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:07:43.295552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:07:44.423859Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:11:10.178552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:11:33.641687Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:11:33.641746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:11:33.871597Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:14:38.828715Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:38.828770Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:39.198058Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:14:58.236648Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:14:58.236689Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:07.297508Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:07.297592Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:10.975524Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.501224Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.694268Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:11.894534Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:27.075889Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:27.075927Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:28.590079Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:15:47.342088Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:47.342144Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:55.325725Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:55.325774Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:15:57.997905Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:18.814355Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:18.814407Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:20.856150Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:34.289065Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.289119Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.852992Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:34.853039Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:52.088440Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:52.088485Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:16:53.710598Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:16:55.623704Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:17:37.225384Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:37.225442Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:45.888130Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:45.888172Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.353399Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.353450Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.925407Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:17:49.925469Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:33.955755Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:18:42.738037Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:42.738091Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:43.298506Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:18:43.298572Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:58.930908Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:58.930959Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:59.458915Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:19:59.458954Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:00.986572Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:20:16.027694Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.027746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.594242Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:16.594301Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:22.565760Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:22.565821Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:23.797331Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:20:34.346416Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:20:34.346454Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:17.004820Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:17.004884Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.379897Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.379947Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.947385Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:27.947445Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:21:33.346354Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:22:07.236207Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.236258Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.806482Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:22:07.806565Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.342976Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.343024Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.902332Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:20.902407Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:32.654205Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:32.654296Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:38.798624Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:38.798674Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:42.723321Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:24:42.723373Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.194696Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.194733Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:08.613343Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:17.438916Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:17.438968Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:17.706605Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:29.617555Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:29.617602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:29.783623Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:25:39.096695Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:39.096747Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:25:39.305560Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:26:45.534595Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:26:45.534637Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:26:51.007406Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:07.610451Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:07.610507Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:09.347734Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:18.110369Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:18.110465Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:19.519344Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:33:42.557193Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:42.557242Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:43.126107Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:43.126168Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:33:44.433471Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:44.784442Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:35:44.784501Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:35:45.987549Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.259262Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.591657Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.796741Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:52.990179Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:22178/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-02-26T17:35:52.990230Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:35:54.726440Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T17:36:41.505880Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:41.505929Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2676158)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.508071Z","level":"INFO","fields":{"message":"Process 2676158 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.508097Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2676137)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.509184Z","level":"INFO","fields":{"message":"Process 2676137 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.509194Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2676167)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.511384Z","level":"INFO","fields":{"message":"Process 2676167 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.511404Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2676139)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.513380Z","level":"INFO","fields":{"message":"Process 2676139 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.513389Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2676136)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.567205Z","level":"INFO","fields":{"message":"Process 2676136 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.567238Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2676141)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.569437Z","level":"INFO","fields":{"message":"Process 2676141 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.569464Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2676166)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.571011Z","level":"INFO","fields":{"message":"Process 2676166 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.571024Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2676140)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:41.574146Z","level":"INFO","fields":{"message":"Process 2676140 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.008588Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.008974Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T17:36:42.009039Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.009225Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T17:36:42.011388Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011416Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011447Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T17:36:42.011488Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011526Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T17:36:42.011679Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:42.011689Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011702Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:42.011830Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.011917Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012000Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012069Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012099Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012142Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.012170Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118357Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118367Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118368Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118389Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118384Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118402Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118400Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118418Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118415Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118414Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118430Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118437Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118442Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118445Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118444Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118452Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118449Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118460Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118467Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118469Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118474Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118516Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118522Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118531Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118538Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.118557Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118564Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.118982Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.119022Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.119039Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120111Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2782211"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120223Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2782212"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.120451Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2782213"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.132453Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2782242"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.132780Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2782243"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133296Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2782244"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133400Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2782245"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.133420Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.133429Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.134667Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2782246"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:42.958391Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:42.958448Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123266Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123280Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123326Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123359Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.123362Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782213"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123373Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782212"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123379Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123399Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123410Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123419Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123428Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123442Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123471Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.123495Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134187Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134209Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134213Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782243"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134217Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134220Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134223Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134242Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134669Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134701Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134715Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782211"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134727Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134737Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134740Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134752Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134768Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134774Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782245"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134826Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134858Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134870Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134880Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134897Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134922Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.134921Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134932Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782244"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134940Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134948Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134955Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.134988Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136393Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.136413Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.136417Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782246"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136420Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136423Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136426Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.136441Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.142991Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.143035Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T17:36:43.143043Z","level":"INFO","fields":{"message":"Deploy started, PID: 2782242"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143064Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143073Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143079Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:43.143115Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:36:47.081498Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:36:49.591727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:37:03.835752Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:03.835804Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:04.401598Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:04.401667Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:05.404474Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:37:16.504236Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:16.504291Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:23.504431Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:37:23.504464Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:27.054018Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:27.054057Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:34.075210Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:38:51.480411Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:51.480465Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:52.052567Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:38:52.052618Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:11.654456Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:11.654547Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:13.263800Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:39:37.951326Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:37.951382Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:54.421139Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:54.421210Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:56.502146Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:39:56.502215Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:20.659964Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:20.660018Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.382183Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.382231Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.948793Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:41:49.948872Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:08.704504Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:42:50.538113Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:50.538171Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:56.363171Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:56.363218Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:42:58.068691Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:42:58.711223Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:15.123407Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:15.123462Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:18.319725Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:28.031053Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:28.031103Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:50.528064Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:43:59.134258Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:43:59.134330Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.392067Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.392121Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.955776Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:03.955863Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:12.263777Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:12.263837Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:26.216690Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:26.216728Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.319902Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.319945Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.888922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:38.888976Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:43.433123Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:43.433174Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:46.830182Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:46.830218Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:51.461310Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:51.461359Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:52.027145Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:52.027192Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.056904Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.056956Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.626891Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:44:55.626953Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:13.489944Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:13.489983Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.083419Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.083469Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.653557Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:51.653601Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:55.779175Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:55.779236Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:56.346939Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:45:56.347054Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:40.674098Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:40.674150Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:50.307626Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:50:50.307718Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:08.899697Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:08.899748Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:09.470127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:51:09.470184Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:05.288071Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:05.288123Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:12.855839Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:12.855879Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:13.376454Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:26.622841Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:26.622894Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:28.281792Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:41.057135Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:41.057185Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.562749Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.562829Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:52:47.751357Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:52:49.082351Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:18.130914Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:18.130966Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:18.685217Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:18.978984Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T17:54:22.817580Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:22.817630Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T17:54:23.140015Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:57.870715Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:57.870762Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2782244)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.925311Z","level":"INFO","fields":{"message":"Process 2782244 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.925363Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2782243)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.981079Z","level":"INFO","fields":{"message":"Process 2782243 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:57.981129Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2782242)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.035053Z","level":"INFO","fields":{"message":"Process 2782242 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.035097Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2782213)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.088580Z","level":"INFO","fields":{"message":"Process 2782213 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.088624Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2782211)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.143091Z","level":"INFO","fields":{"message":"Process 2782211 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.143147Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2782212)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.198161Z","level":"INFO","fields":{"message":"Process 2782212 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.198211Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2782246)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.253339Z","level":"INFO","fields":{"message":"Process 2782246 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.253387Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2782245)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.307471Z","level":"INFO","fields":{"message":"Process 2782245 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.372123Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372389Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T18:00:58.372422Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372576Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T18:00:58.372982Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.372991Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.373001Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:00:58.373017Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373035Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T18:00:58.373078Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.373085Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.373089Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373126Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373147Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373180Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373248Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373269Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373298Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.373318Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478381Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478381Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478384Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478401Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478421Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478418Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478434Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478453Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478449Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478463Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478468Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478473Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478480Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478488Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478496Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478502Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478513Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478527Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478526Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478533Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478551Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478557Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478560Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478563Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478569Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478573Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:58.478600Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478581Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478594Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478583Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478602Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.478607Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.480178Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2813275"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.490365Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2813277"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.490968Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2813278"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.491738Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2813279"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492148Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2813281"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492626Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2813280"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.492839Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2813282"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.493230Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2813283"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:58.555566Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.556050Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.576571Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:58.993093Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:59.492281Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492346Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492343Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492363Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813278"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492386Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492386Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492400Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813277"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492418Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492433Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492445Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492507Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492552Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492587Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492679Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492890Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492911Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.492920Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813279"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492929Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492959Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.492971Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.493012Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494507Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494537Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494546Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813282"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494553Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494560Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494567Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494607Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494639Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494649Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.494655Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813283"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494662Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494669Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494675Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.494706Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496062Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496069Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496072Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813281"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496075Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496078Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496081Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496091Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496924Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496964Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:00:59.496975Z","level":"INFO","fields":{"message":"Deploy started, PID: 2813275"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496984Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.496995Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.497003Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.497047Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:00:59.498249Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:00:59.985458Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:01:01.599727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:01:28.598295Z","level":"ERROR","fields":{"message":"Failed to auto-start agenda.letelegraphe.org: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.220692Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.220760Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2813281)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.275206Z","level":"INFO","fields":{"message":"Process 2813281 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.275258Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2813277)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.332325Z","level":"INFO","fields":{"message":"Process 2813277 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.332427Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2813278)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.386567Z","level":"INFO","fields":{"message":"Process 2813278 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.386607Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2813275)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.441111Z","level":"INFO","fields":{"message":"Process 2813275 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.441156Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2813283)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.495620Z","level":"INFO","fields":{"message":"Process 2813283 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.495671Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2813282)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.549317Z","level":"INFO","fields":{"message":"Process 2813282 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.549366Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2813279)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.602903Z","level":"INFO","fields":{"message":"Process 2813279 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.723358Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.723727Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T18:08:51.723781Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.723980Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T18:08:51.724143Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724153Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724170Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:08:51.724187Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724212Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T18:08:51.724281Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724303Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:51.724312Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:51.724337Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724364Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724417Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724481Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724520Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724572Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.724608Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831598Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831605Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831605Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831622Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831629Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831644Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831649Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831658Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831681Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831678Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831692Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831705Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831710Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831719Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831728Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831753Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831764Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831772Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831779Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831791Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.831798Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831790Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831836Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.831830Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.832999Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2822846"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833553Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2822848"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833574Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2822847"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.833618Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.833627Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.834029Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2822849"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.834962Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2822850"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.835005Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.835013Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836100Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2822853"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836157Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.836166Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.836184Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:51.836206Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.838908Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2822871"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.839032Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2822878"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:51.879908Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:52.483727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9000/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:08:52.836148Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836237Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836252Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822846"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836267Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836280Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836290Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836309Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836341Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836352Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836353Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822848"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836368Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836383Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836393Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836408Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836423Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.836436Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822847"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836458Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836500Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836512Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836520Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.836556Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.837974Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.837990Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.837995Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822853"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838000Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838004Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838008Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838028Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838732Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.838748Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.838756Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822850"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838764Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838774Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838782Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.838839Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840444Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.840483Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.840494Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822878"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840504Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840514Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840522Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.840568Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851317Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.851346Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:08:52.851354Z","level":"INFO","fields":{"message":"Deploy started, PID: 2822871"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851360Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851368Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851374Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:52.851408Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T18:08:53.734965Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T18:09:06.067840Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T18:09:06.067897Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2822878)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.122586Z","level":"INFO","fields":{"message":"Process 2822878 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.122633Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2822850)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.176159Z","level":"INFO","fields":{"message":"Process 2822850 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.176188Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2822853)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.231731Z","level":"INFO","fields":{"message":"Process 2822853 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.231789Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2822847)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.286955Z","level":"INFO","fields":{"message":"Process 2822847 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.287009Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2822871)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.343133Z","level":"INFO","fields":{"message":"Process 2822871 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.343170Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2822848)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.397972Z","level":"INFO","fields":{"message":"Process 2822848 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.398012Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2822846)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T18:09:06.452665Z","level":"INFO","fields":{"message":"Process 2822846 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.226743Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.229453Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:32.229567Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.229966Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:32.230257Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230274Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230294Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:32.230316Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230386Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:32.230408Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230496Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230518Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230525Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:32.230539Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:32.230547Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230586Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230614Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230668Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.230705Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335989Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335988Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.335984Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336004Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336012Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336023Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336020Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336032Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336059Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336043Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336046Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336051Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336035Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336062Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336062Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336068Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336073Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336124Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336085Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336094Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336098Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336109Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336115Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336119Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336129Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336138Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336148Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336151Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336156Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:32.336158Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336168Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.336177Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.337240Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2943702"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348467Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2943705"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348498Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2943704"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.348920Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2943706"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349326Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2943707"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349884Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2943708"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.349957Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2943709"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:32.350675Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2943710"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350683Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350682Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350736Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350741Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.350743Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943706"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350748Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943704"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350750Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350761Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350769Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350777Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350784Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350790Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350831Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.350880Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351087Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351104Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351109Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943707"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351114Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351119Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351123Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351151Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351270Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351287Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351293Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943708"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351298Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351310Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351313Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351314Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351321Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.351325Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943709"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351340Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351351Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351372Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351376Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.351394Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352404Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352423Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352428Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943705"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352432Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352436Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352440Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352459Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352762Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352774Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352778Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943710"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352782Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352792Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352796Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352822Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352895Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352902Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.352905Z","level":"INFO","fields":{"message":"Deploy started, PID: 2943702"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352909Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352913Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352916Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.352931Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:33.590332Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:33.735887Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:33.735940Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2943705)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.789614Z","level":"INFO","fields":{"message":"Process 2943705 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.789658Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2943706)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.843056Z","level":"INFO","fields":{"message":"Process 2943706 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.843103Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2943704)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.898324Z","level":"INFO","fields":{"message":"Process 2943704 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.898378Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2943710)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.952770Z","level":"INFO","fields":{"message":"Process 2943710 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:33.952832Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2943709)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.008337Z","level":"INFO","fields":{"message":"Process 2943709 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.008402Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2943708)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.063983Z","level":"INFO","fields":{"message":"Process 2943708 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.064007Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2943707)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.118136Z","level":"INFO","fields":{"message":"Process 2943707 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.118162Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2943702)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.173249Z","level":"INFO","fields":{"message":"Process 2943702 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.238602Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239113Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:34.239172Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239374Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:34.239517Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239524Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239536Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:34.239559Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239578Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:34.239658Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.239666Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239671Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.239734Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239761Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239800Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239853Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239891Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239941Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.239977Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347553Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347549Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347559Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347570Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347579Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347589Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347600Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347606Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347630Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347633Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347642Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347654Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347666Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347676Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347683Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347690Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347697Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347701Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347710Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347722Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347725Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.347732Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347741Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.347751Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349346Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2944008"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349618Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2944009"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349626Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.349643Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.349692Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2944010"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350311Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2944013"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350339Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.350348Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.350771Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2944011"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351184Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2944014"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351212Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.351218Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.351224Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:34.351232Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.352215Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2944016"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.352730Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2944017"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:34.391782Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.392149Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.404407Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:34.818888Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:35.352322Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352381Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352395Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944011"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352407Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352420Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352429Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352501Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352585Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352595Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352600Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944013"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352604Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352621Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352625Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352642Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352789Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352797Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.352802Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944008"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352806Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352824Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352828Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.352844Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353050Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.353067Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.353073Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944014"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353079Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353085Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353090Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.353117Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354616Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354640Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354646Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944010"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354650Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354656Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354660Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354688Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354735Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354765Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354770Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944017"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354775Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354780Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354784Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354812Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354822Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354835Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.354840Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944016"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354844Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354848Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354852Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.354871Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363662Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.363686Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:35.363693Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944009"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363701Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363711Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363719Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:35.363751Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.356737Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.356772Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 2944013)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.413102Z","level":"INFO","fields":{"message":"Process 2944013 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.413151Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 2944014)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.468248Z","level":"INFO","fields":{"message":"Process 2944014 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.468336Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 2944008)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.524853Z","level":"INFO","fields":{"message":"Process 2944008 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.524894Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 2944009)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.579163Z","level":"INFO","fields":{"message":"Process 2944009 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.579190Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 2944010)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.633669Z","level":"INFO","fields":{"message":"Process 2944010 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.633715Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 2944011)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.689241Z","level":"INFO","fields":{"message":"Process 2944011 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.689294Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 2944016)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.744378Z","level":"INFO","fields":{"message":"Process 2944016 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.744411Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 2944017)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.799079Z","level":"INFO","fields":{"message":"Process 2944017 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.859413Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.859805Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-02-26T20:11:36.859867Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860042Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-02-26T20:11:36.860192Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860199Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860212Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-02-26T20:11:36.860235Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860260Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-02-26T20:11:36.860316Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:36.860325Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:36.860342Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860406Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860432Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860468Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860525Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860561Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860610Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.860646Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966965Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966965Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966960Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966981Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966991Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.966997Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967005Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967016Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967013Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967027Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967031Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967040Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967047Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967042Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967052Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967047Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967060Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967068Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967067Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967181Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967073Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967077Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967090Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967095Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967174Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967224Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967186Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967189Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967193Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967231Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:36.967235Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.967252Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.968251Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 2944321"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.968468Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 2944322"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.977876Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 2944335"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.978885Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 2944336"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.979620Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 2944338"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.979622Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 2944337"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.980066Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 2944340"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:36.980419Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 2944341"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.022440Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.022733Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.038280Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:22178/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.451970Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:37.971594Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.971641Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.971653Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944322"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971673Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971683Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971689Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.971733Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976376Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.976424Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.976440Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944321"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976452Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976463Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976472Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.976523Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979428Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.979476Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.979491Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944335"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979510Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979529Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979544Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.979606Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981452Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981471Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981478Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944338"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981484Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981490Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981495Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981526Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981569Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981603Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981618Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944337"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981632Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981648Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981660Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981678Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981689Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.981695Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944340"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981740Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981759Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981774Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981786Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981850Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.981998Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.982012Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.982017Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944341"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982021Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982026Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982030Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.982050Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990780Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.990803Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-02-26T20:11:37.990823Z","level":"INFO","fields":{"message":"Deploy started, PID: 2944336"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990829Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990847Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990853Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:37.990886Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-02-26T20:11:38.978370Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.359614Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.771863Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:39.946670Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-02-26T20:11:40.113797Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:22178/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:13.043547Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-03-12T20:09:13.044218Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-12T20:09:13.044264Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-03-12T20:09:13.044464Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-03-12T20:09:13.044660Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-03-12T20:09:13.044667Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-03-12T20:09:13.044678Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-03-12T20:09:13.044698Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044747Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-12T20:09:13.044781Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:13.044788Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:13.044795Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044845Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044874Z","level":"INFO","fields":{"message":"Discovered new app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044892Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044920Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044962Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.044991Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.045034Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.045063Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.045088Z","level":"INFO","fields":{"message":"Discovered new app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166503Z","level":"INFO","fields":{"message":"Auto-starting app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166501Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166512Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166527Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166530Z","level":"INFO","fields":{"message":"Auto-starting app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166545Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166551Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166554Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166552Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166567Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166558Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166572Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166561Z","level":"INFO","fields":{"message":"Starting deploy for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166565Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166570Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166571Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166572Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166576Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166576Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.166584Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166581Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.166583Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166579Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.166595Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.168281Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3526840"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.168760Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 3526841"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.168773Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.168776Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.169934Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 3526842"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.169984Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.169993Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.171255Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 3526844"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.171280Z","level":"INFO","fields":{"message":"Deploying ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.171283Z","level":"INFO","fields":{"message":"Starting deployment of ilos.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.171319Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.171330Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.172511Z","level":"INFO","fields":{"message":"Started ilos.solisoft.net slot blue with PID 3526845"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.172640Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 3526847"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.172657Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.172661Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.173368Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 3526849"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.173392Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.173401Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.174821Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 3526850"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.174877Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.174883Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.174917Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:13.174927Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.176167Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 3526853"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:13.176582Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 3526855"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.056945Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:14.171200Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.171228Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.171235Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526840"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.171242Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.171249Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.171253Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.171311Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.172232Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.172248Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.172252Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526842"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.172255Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.172259Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.172262Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.172293Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.173564Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.173598Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.173606Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526844"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.173613Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.173622Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.173630Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.173706Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175058Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.175073Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.175092Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526847"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175096Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175100Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175103Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175135Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175313Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.175324Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.175328Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526849"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175331Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175335Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175338Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.175369Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177423Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.177445Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.177452Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526845"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177458Z","level":"INFO","fields":{"message":"Current slot: ilos.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177465Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177473Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177529Z","level":"INFO","fields":{"message":"Deploy completed for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177875Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.177889Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.177893Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526855"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177896Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177899Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177902Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.177933Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.182679Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.182711Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-12T20:09:14.182719Z","level":"INFO","fields":{"message":"Deploy started, PID: 3526841"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.182725Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.182733Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.182738Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:14.182787Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:15.180223Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:42.839695Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T20:09:43.217789Z","level":"ERROR","fields":{"message":"Failed to auto-start soli.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:09:43.217789Z","level":"ERROR","fields":{"message":"Failed to auto-start _admin: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-12T20:36:01.366722Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-12T23:38:07.920996Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T05:44:20.090065Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T06:23:17.432202Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T06:23:47.256378Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T06:34:05.842515Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:34:05.842578Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:35:32.009793Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T06:49:28.667662Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:49:28.667739Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:49:56.138579Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:49:56.138617Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:50:06.538119Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:50:06.538194Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:52:31.302562Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:52:31.302619Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:54:30.260254Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T06:55:32.686762Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T06:55:32.686837Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:07.099926Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:07.099957Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:11.566046Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:11.566105Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:17.892990Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:17.893042Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:21.789319Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:21.789354Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:25.491002Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:25.491043Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:31.416966Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:31.417009Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:35.401701Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:35.401746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:39.530425Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:39.530457Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:41.914521Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T07:05:41.937476Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T07:05:46.554497Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:46.554543Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:50.163633Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T07:05:50.163673Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:25:37.766349Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:25:37.767685Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:26:17.160473Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:26:17.160547Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.372415Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.372477Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 3526847)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.429340Z","level":"INFO","fields":{"message":"Process 3526847 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.429374Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 3526842)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.484604Z","level":"INFO","fields":{"message":"Process 3526842 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.484617Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 3526855)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.538683Z","level":"INFO","fields":{"message":"Process 3526855 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.538711Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3526840)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.592795Z","level":"INFO","fields":{"message":"Process 3526840 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.592816Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 3526849)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.647781Z","level":"INFO","fields":{"message":"Process 3526849 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.647804Z","level":"INFO","fields":{"message":"Stopping ilos.solisoft.net slot blue (PID: 3526845)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.702968Z","level":"INFO","fields":{"message":"Process 3526845 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.702994Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 3526844)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.757849Z","level":"INFO","fields":{"message":"Process 3526844 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.757875Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 3526841)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.760303Z","level":"INFO","fields":{"message":"Process 3526841 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:40.874633Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.875681Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-13T08:39:40.875730Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.878470Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-03-13T08:39:40.879408Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.879442Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.879459Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T08:39:40.879490Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.879508Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:39:40.879674Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:40.879685Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:40.879708Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.879802Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.879923Z","level":"INFO","fields":{"message":"Discovered new app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.879959Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880024Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880135Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880203Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880283Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880352Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:40.880386Z","level":"INFO","fields":{"message":"Discovered new app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667257Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667268Z","level":"INFO","fields":{"message":"Auto-starting app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667286Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667283Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667295Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667292Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667292Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667304Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.667302Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667310Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667309Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667316Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667318Z","level":"INFO","fields":{"message":"Auto-starting app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667329Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667333Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667333Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.667349Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667330Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667355Z","level":"INFO","fields":{"message":"Starting deploy for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667362Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667360Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.667369Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667378Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667376Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667370Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.667396Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.669067Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 3621318"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.670291Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3621319"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.670297Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 3621320"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.670348Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.670358Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.671951Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 3621322"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.671994Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.671998Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.673070Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 3621323"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.673101Z","level":"INFO","fields":{"message":"Deploying ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.673104Z","level":"INFO","fields":{"message":"Starting deployment of ilos.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.673135Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.673151Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.674029Z","level":"INFO","fields":{"message":"Started ilos.solisoft.net slot blue with PID 3621324"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.674786Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 3621325"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.674801Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.674805Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.675533Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 3621326"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.675571Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.675573Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.676874Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 3621327"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.676914Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:41.676918Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.677872Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 3621329"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:41.725294Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:41.725595Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:41.815313Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:42.650215Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:39:42.673462Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673498Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673497Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673510Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673510Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621319"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673515Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621320"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673519Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673545Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673554Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673563Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673588Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673615Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673685Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673736Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673845Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673867Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673873Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621323"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673879Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673886Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673891Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673902Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673911Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.673915Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621322"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673939Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673948Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673955Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.673960Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.674001Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.677460Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.677490Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.677498Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621326"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.677505Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.677525Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.677531Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.677588Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679092Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.679107Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.679111Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621324"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679114Z","level":"INFO","fields":{"message":"Current slot: ilos.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679117Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679120Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679145Z","level":"INFO","fields":{"message":"Deploy completed for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679200Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.679211Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.679214Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621329"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679217Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679221Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679223Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.679243Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.694028Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.694050Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T08:39:42.694055Z","level":"INFO","fields":{"message":"Deploy started, PID: 3621318"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.694060Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.694066Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.694071Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:39:42.694105Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:40:11.723006Z","level":"ERROR","fields":{"message":"Failed to auto-start soli.solisoft.net: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:40:11.731550Z","level":"ERROR","fields":{"message":"Failed to auto-start _admin: Health check failed for blue slot"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:40:30.235101Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:40:30.294459Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/favicon.ico)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:41:02.574912Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:41:02.574961Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:41:45.652968Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:43:09.827627Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:43:43.692067Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:43:43.836030Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/favicon.ico)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:44:05.774426Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:24003/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-03-13T08:44:05.774492Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:44:32.242174Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T08:45:14.873786Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:14.873870Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:17.805975Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:17.806021Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:19.545382Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:19.587191Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:20.644931Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:20.653696Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:20.966196Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:20.966235Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:21.658400Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:21.690662Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:23.649249Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:23.662485Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:27.672013Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:27.690851Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:33.649072Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:33.680110Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:34.085688Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:34.085753Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:39.656094Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:39.669941Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:41.331652Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:41.331722Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:45:45.697741Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:45.721733Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:51.675355Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:51.695182Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:57.660546Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:45:57.709375Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T08:46:52.996450Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:46:52.996499Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:47:06.687381Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T08:47:06.687456Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:15:39.640870Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:39.640980Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:39.641129Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:39.652173Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:39.683081Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:40.637895Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:40.640522Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:40.640729Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:40.644153Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:40.645774Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:41.633928Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:41.636532Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:41.636684Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:41.646670Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:41.646754Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:43.637864Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:43.646526Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:43.648193Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:43.648304Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:43.655844Z","level":"WARN","fields":{"message":"Circuit breaker OPEN for http://localhost:9010/ (5 consecutive failures)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-03-13T09:15:43.655859Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:47.638820Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:47.639026Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:47.639033Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:47.645377Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:53.638542Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:53.640384Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:53.640528Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:53.670571Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:59.640861Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:15:59.644440Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:59.644647Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:15:59.649755Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:05.658024Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:05.661165Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:05.661344Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:05.665253Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:11.682471Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:11.682562Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:11.682774Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:11.690807Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:17.683272Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:17.683514Z","level":"ERROR","fields":{"message":"Failed to connect to backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:17.703941Z","level":"ERROR","fields":{"message":"Failed to connect to _admin backend for WebSocket: Connection refused (os error 111)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:16:17.723232Z","level":"WARN","fields":{"message":"Circuit breaker re-OPENED for http://localhost:9010/ (probe failed)"},"target":"soli_proxy::circuit_breaker"}
{"timestamp":"2026-03-13T09:16:17.723250Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:9010/__livereload)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:16:17.728505Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:37:25.281324Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.281374Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 3621320)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.283658Z","level":"INFO","fields":{"message":"Process 3621320 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.283670Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 3621322)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.286127Z","level":"INFO","fields":{"message":"Process 3621322 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.286149Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 3621318)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.289216Z","level":"INFO","fields":{"message":"Process 3621318 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.289236Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 3621329)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.291733Z","level":"INFO","fields":{"message":"Process 3621329 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.291751Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3621319)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.293982Z","level":"INFO","fields":{"message":"Process 3621319 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.294001Z","level":"INFO","fields":{"message":"Stopping ilos.solisoft.net slot blue (PID: 3621324)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.296963Z","level":"INFO","fields":{"message":"Process 3621324 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.296984Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 3621323)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.299659Z","level":"INFO","fields":{"message":"Process 3621323 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.299668Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 3621326)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.302319Z","level":"INFO","fields":{"message":"Process 3621326 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.383607Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.383938Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-13T09:37:25.384015Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.384260Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-03-13T09:37:25.384438Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.384445Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.384456Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-03-13T09:37:25.384483Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384537Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-13T09:37:25.384582Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:37:25.384589Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:37:25.384610Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384662Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384699Z","level":"INFO","fields":{"message":"Discovered new app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384720Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384752Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384799Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384835Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384877Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384909Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.384937Z","level":"INFO","fields":{"message":"Discovered new app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507042Z","level":"INFO","fields":{"message":"Auto-starting app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507040Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507069Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507066Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507072Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507072Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507080Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507085Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507081Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507087Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507092Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.507092Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.507091Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507096Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507096Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507139Z","level":"INFO","fields":{"message":"Auto-starting app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507151Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.507102Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507121Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507135Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507134Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507155Z","level":"INFO","fields":{"message":"Starting deploy for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507157Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507160Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507165Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507175Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507183Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.507192Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.508437Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3639627"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.509165Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 3639629"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.509189Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 3639628"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.509216Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.509218Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.509941Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 3639630"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.510333Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 3639631"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.510351Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.510353Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.511327Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 3639633"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.511387Z","level":"INFO","fields":{"message":"Deploying ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.511393Z","level":"INFO","fields":{"message":"Starting deployment of ilos.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.511404Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.511411Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.512440Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 3639635"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.512468Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.512472Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.512947Z","level":"INFO","fields":{"message":"Started ilos.solisoft.net slot blue with PID 3639637"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.513417Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 3639639"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.513443Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:25.513447Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:25.514477Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 3639641"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.511677Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.511735Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.511749Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639629"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511759Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511772Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511779Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511884Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511932Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.511958Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.511966Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639628"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511973Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511979Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.511982Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512018Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512111Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.512165Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.512168Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639627"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512171Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512174Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512176Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512202Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512496Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.512503Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.512506Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639631"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512509Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512512Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512514Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.512534Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513294Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.513304Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.513307Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639633"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513309Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513312Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513315Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513334Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513590Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.513595Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.513598Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639635"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513601Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513604Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513611Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.513630Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515083Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515097Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515100Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639639"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515103Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515106Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515108Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515130Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515409Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515418Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515421Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639637"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515424Z","level":"INFO","fields":{"message":"Current slot: ilos.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515427Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515429Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515448Z","level":"INFO","fields":{"message":"Deploy completed for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515829Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515857Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.515865Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639641"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515871Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515878Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515885Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.515933Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.526542Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.526562Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-13T09:37:26.526578Z","level":"INFO","fields":{"message":"Deploy started, PID: 3639630"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.526582Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.526588Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.526592Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:26.526630Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T09:37:44.478826Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:37:44.525372Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T09:37:44.545914Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T16:31:06.537354Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T16:31:06.537391Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T16:31:44.308622Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T16:31:44.308655Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:53:36.847702Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:53:36.898002Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:53:36.924346Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:53:38.933344Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:54:29.386959Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:55:09.091605Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:55:34.422357Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:55:34.422395Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:56:23.716378Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:56:23.716431Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:56:34.014010Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:57:03.328943Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:57:12.636600Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:57:12.636701Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:57:14.252967Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:57:55.733876Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:57:55.733952Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:58:06.101023Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:58:06.101096Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-13T17:58:14.097839Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:58:17.118166Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:58:18.367577Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-13T17:58:20.535986Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:27:21.908317Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:27:24.904260Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:27:29.391656Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:28:11.648700Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:11.648747Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:16.414911Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:16.414952Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:41.173943Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:41.174018Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:28:49.167327Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:29:58.413364Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:30:14.009727Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:30:17.527281Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:33:19.840627Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:19.840660Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:29.733928Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:29.733972Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:38.057199Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:38.057243Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:45.971857Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:45.971901Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:59.387207Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:33:59.387249Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:34:08.761285Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:34:08.761324Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:34:17.356124Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:34:17.356174Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:35:39.440944Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:35:39.440983Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:35:48.348514Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:35:48.348549Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:00.492594Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:00.492634Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:08.294424Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:08.294466Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:49.010038Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:36:49.010114Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:37:08.069935Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:37:08.069973Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:37:53.743829Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:37:53.743874Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:38:15.662996Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:38:15.663027Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:38:35.800905Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:38:35.800947Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:39:28.491919Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:39:28.491965Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:39:43.727914Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:39:43.727958Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:40:14.895337Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:40:14.895382Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:40:23.724453Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:40:23.724495Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:41:12.579461Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:41:12.579500Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:43:44.876766Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T09:44:10.884757Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:10.884848Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:12.575122Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:12.575173Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:15.215982Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:15.216043Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:18.776521Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:18.776587Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:22.833493Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:22.833554Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:39.977280Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T09:44:39.977353Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:58.302663Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:58.302731Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:58.302745Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:58.306185Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3830154"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:59.308934Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:59.308989Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:59.308994Z","level":"INFO","fields":{"message":"Deploy started, PID: 3830154"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.309001Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: Some(3639627)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.309007Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.309011Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.309017Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 3639627)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.309021Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3639627)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:59.365042Z","level":"INFO","fields":{"message":"Process 3639627 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:21:59.365058Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.365097Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.365103Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.365108Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:21:59.365219Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T10:21:59.365224Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:00.102472Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:00.102525Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:00.102543Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:00.105371Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3830191"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:01.108850Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:01.108885Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:01.108892Z","level":"INFO","fields":{"message":"Deploy started, PID: 3830191"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.108897Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: green, old_pid: Some(3830154)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.108903Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.108906Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.108909Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 3830154)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.108927Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot green (PID: 3830154)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:01.166060Z","level":"INFO","fields":{"message":"Process 3830154 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:22:01.166094Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.166150Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.166161Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.166174Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:22:01.166354Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T10:22:01.166390Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:38:32.023819Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:39:02.987171Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:39:02.987201Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:39:53.369405Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:39:53.369437Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:39:56.842915Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:39:56.842954Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:02.643914Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:02.643955Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:09.215393Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:09.215439Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:17.468771Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:17.468829Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:25.214269Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:25.214301Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:28.366908Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:28.366945Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:31.300083Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:31.300125Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:33.989379Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:40:33.989415Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:07.711921Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:07.711966Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:14.570863Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:14.570907Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:19.326935Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:41:19.326984Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:43:08.774304Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:43:10.118423Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:43:40.170659Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:43:40.170704Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:43:42.370939Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:44:48.589899Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:44:48.589931Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:45:44.254302Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:46:27.050687Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:46:43.105921Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:46:43.106008Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:47:46.029901Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T10:48:33.068835Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:48:33.068871Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:48:49.417718Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:48:49.417771Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:30.148522Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:30.148602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:34.777601Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:34.777642Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:41.422907Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:41.422967Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:45.979534Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:45.979568Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:57.809618Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:49:57.809677Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:02.219459Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:02.219489Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:05.813908Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:05.813952Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:08.685604Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:08.685636Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:09.802967Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:09.802995Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:12.839419Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:12.839460Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:16.381389Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:16.381433Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:25.677540Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:25.677583Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:26.489688Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:26.489737Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:30.400369Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:50:30.400418Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:54:29.964944Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:54:29.965004Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T10:54:29.965018Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T10:54:29.967771Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3845850"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T13:34:02.783401Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:02.783450Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:16.010731Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:16.010800Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:17.277419Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:17.277461Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:23.442592Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:23.442635Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:40.885743Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:40.885783Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:52.074496Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:34:52.074540Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:35:07.068546Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:35:07.068592Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:35:25.773012Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T13:35:25.773068Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:01:13.674199Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:01:13.674269Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:01:13.674283Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:01:13.677225Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3918596"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:02:22.470755Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:02:22.470833Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:02:23.840198Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:02:23.840238Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:02:25.223620Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:02:25.223667Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:19.213493Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:19.213558Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:19.213593Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:19.216494Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3919989"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:20.219402Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:20.219444Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:20.219450Z","level":"INFO","fields":{"message":"Deploy started, PID: 3919989"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.219455Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: Some(3830191)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.219462Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.219466Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.219469Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 3830191)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.219473Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3830191)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:20.274660Z","level":"INFO","fields":{"message":"Process 3830191 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:20.274695Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.274770Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.274781Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.274790Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:20.275049Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T14:04:20.275078Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:22.090087Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:22.090137Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:22.090147Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:22.092829Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3920024"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:23.094883Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:23.094935Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:23.094944Z","level":"INFO","fields":{"message":"Deploy started, PID: 3920024"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.094952Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: green, old_pid: Some(3919989)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.094981Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.094987Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.094993Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 3919989)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.094999Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot green (PID: 3919989)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:23.097896Z","level":"INFO","fields":{"message":"Process 3919989 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T14:04:23.097922Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.097984Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.097993Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.098001Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:04:23.098187Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T14:04:23.098215Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T14:06:20.704705Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:11:51.308321Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:11:51.308385Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:11:51.884874Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:12:52.408471Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:12:52.408538Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:13:22.213401Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:14:33.997281Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:33.997329Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:33.997341Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:33.999819Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3946945"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:35.003049Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:35.003106Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:35.003118Z","level":"INFO","fields":{"message":"Deploy started, PID: 3946945"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.003151Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: Some(3920024)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.003162Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.003169Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.003175Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 3920024)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.003183Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3920024)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:35.058519Z","level":"INFO","fields":{"message":"Process 3920024 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:14:35.058550Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.058600Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.058607Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.058613Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:14:35.058778Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T15:14:35.058790Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:16:09.070068Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:18:28.957307Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:21:45.882845Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:21:45.882888Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:21:54.715941Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:21:54.715987Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:21:59.545923Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:21:59.545959Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:22:06.480123Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:22:06.480154Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:23.028887Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:23.028952Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:23.028965Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:23.031579Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 3952204"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:24.034507Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:24.034551Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:24.034559Z","level":"INFO","fields":{"message":"Deploy started, PID: 3952204"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.034566Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: green, old_pid: Some(3946945)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.034575Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.034579Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.034583Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 3946945)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.034586Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot green (PID: 3946945)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:24.091055Z","level":"INFO","fields":{"message":"Process 3946945 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T15:27:24.091090Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.091173Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.091184Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.091193Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:24.091445Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T15:27:24.091502Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:57.853529Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:27:57.853573Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:28:21.490132Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:28:21.490164Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:29:05.495138Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:30:03.889702Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:30:03.889746Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:12.410455Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:12.410498Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:14.919924Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:33:16.767234Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:33:27.598399Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:27.598433Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:28.194847Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:28.194896Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:33.568239Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:33:51.373529Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:51.373558Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:33:54.790608Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:34:43.435938Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:34:57.748174Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:35:31.724804Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:35:31.724843Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:35:34.599685Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:35:59.597516Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:35:59.597558Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:36:00.985440Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:36:31.498951Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:36:50.017048Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:36:50.017094Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:36:51.461347Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:38:04.682823Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:04.682854Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:09.753076Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:09.753118Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:15.113294Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:15.113328Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:21.879797Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:38:54.358797Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:38:54.358866Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:44:40.451850Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:45:15.455552Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:45:15.455602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:45:16.921785Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:45:26.097172Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:48:54.083417Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:50:12.058536Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:50:12.058577Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:50:28.027116Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:52:51.021900Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T15:56:42.848535Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:56:42.848568Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:57:57.110397Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:57:57.110438Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:58:03.744533Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T15:58:03.744590Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:03.750776Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T16:00:42.305382Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:42.305426Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:44.532386Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9010/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T16:00:54.228513Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:54.228570Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:54.228583Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:54.231796Z","level":"INFO","fields":{"message":"Started www.delupay.com slot green with PID 3966940"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:55.234897Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:55.234941Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:55.234950Z","level":"INFO","fields":{"message":"Deploy started, PID: 3966940"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.234957Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: Some(3952204)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.234966Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.234971Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.234974Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 3952204)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.234978Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 3952204)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:55.289332Z","level":"INFO","fields":{"message":"Process 3952204 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-14T16:00:55.289371Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.289451Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.289463Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.289471Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9011"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:55.289710Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-14T16:00:55.289775Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:00:56.452597Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T16:08:16.319159Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:08:16.319209Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:08:33.468426Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:08:33.468474Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:08:56.471115Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:08:56.471159Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:09:21.314789Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:09:21.314867Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:10:02.790703Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:10:02.790781Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:10:23.370533Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:10:23.370596Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-14T16:18:40.563521Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T16:35:38.767530Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T17:09:05.545570Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T17:41:02.278488Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T17:58:06.158694Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T18:14:09.862918Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T18:14:24.837145Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:48:57.189438Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:09.131356Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:56.497898Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:57.662036Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:57.954306Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:58.137179Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:58.335534Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:58.516180Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:58.686291Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:58.903279Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T20:49:59.077928Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T22:50:19.034069Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-14T22:50:30.020785Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T00:00:00.259029Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T01:55:05.687123Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T04:04:53.665377Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T04:52:27.477603Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T06:04:44.271201Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:22:48.258182Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:34:06.373510Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:35:37.247980Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:42:51.244256Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:42:55.242025Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T07:43:00.244255Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T08:00:00.565645Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T08:20:08.562532Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T08:21:09.172337Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:21:09.172402Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:33:54.618025Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:33:54.618082Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:33:59.548280Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:33:59.548345Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:34:02.035685Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:34:02.035758Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:35:53.733832Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:35:53.733858Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:37:26.779683Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:37:26.779740Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:31.925770Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:31.925874Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:41.347956Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:41.347981Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:48.338313Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:40:48.338348Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:41:19.794373Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:41:19.794451Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T08:44:49.429961Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T10:22:01.615283Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T11:46:57.781158Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:9011/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T12:00:25.281836Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-15T12:05:39.823497Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:39.823575Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:45.532518Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:45.532595Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:52.977755Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:52.977830Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:56.820961Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:05:56.821029Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:14.362877Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:14.362965Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:34.730912Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:34.730989Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:43.765718Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:43.765795Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:55.591560Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:06:55.591637Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:01.749523Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:01.749597Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:07.718104Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:07.718182Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:18.149213Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:18.149293Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:23.889237Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:23.889309Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:30.333295Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:30.333342Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:36.091675Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:36.091731Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:40.494928Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:40.494997Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:44.973630Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:07:44.973705Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:39.464348Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:39.464426Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:50.223857Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:50.223983Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:57.433744Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:13:57.433900Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:05.303031Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:05.303143Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:11.366218Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:11.366273Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:15.846293Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:15.846335Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:30.603988Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:30.604071Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:37.797217Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:37.797291Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:52.122956Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:52.123031Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:57.533864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:14:57.533916Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:10.697447Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:10.697499Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:26.834366Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:26.834441Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:37.480345Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:15:37.480404Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:24.860112Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:24.860186Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:34.781075Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:34.781155Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:52.688187Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:52.688255Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:57.149360Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:16:57.149411Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:00.449802Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:00.449881Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:05.054792Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:05.054914Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:10.465443Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:10.465527Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:44.717515Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:17:44.717594Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:18:05.362556Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:18:05.362611Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:18:11.358683Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:18:11.358787Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:20.836172Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:20.836227Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:27.188125Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:27.188182Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:31.339569Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:31.339637Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:45.509709Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:45.509784Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:50.072557Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:50.072631Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:54.971841Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:22:54.971891Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:03.788607Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:03.788688Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:08.651844Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:08.651894Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:13.473097Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:13.473171Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:19.699087Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:23:19.699167Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:15.493868Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:15.493925Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:27.369032Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:27.369072Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:38.761435Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-15T12:25:38.761483Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:20:49.220289Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:20:49.220366Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:20:54.479660Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:20:54.479707Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:21:18.248423Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:21:18.248481Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:25:31.605564Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:25:31.605665Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:37.621548Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:37.621602Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:41.769543Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:41.769623Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:45.625173Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T08:27:45.625236Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T09:11:45.295535Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-17T19:55:38.186027Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T19:55:38.186112Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T19:56:19.244959Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T19:56:19.245001Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T19:56:23.054044Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-17T19:56:23.054119Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:27:47.831580Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:27:47.892588Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:27:47.916199Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:28:51.264949Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:28:51.288995Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:28:51.310327Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:28:55.355628Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:29:00.475579Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:29:00.499372Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:29:00.520398Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:30:17.713987Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:30:17.714038Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:30:30.520051Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:30:30.520106Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:30:56.568699Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:30:56.568737Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:31:22.754600Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:31:22.754654Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:31:37.721526Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:31:37.721571Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:33:36.425560Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:33:36.444439Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:33:36.476705Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:33:38.169239Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:34:20.118922Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:34:20.118980Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:34:37.408411Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:34:37.408464Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:34:38.899662Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:34:42.612023Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:34:57.459186Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:35:54.563459Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:35:54.563494Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:35:55.129761Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:35:59.882029Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:35:59.963694Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:35:59.963747Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:02.966287Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:02.966328Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:03.199319Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:08.450309Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:08.450364Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:19.127353Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:19.816811Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:20.559497Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:26.497620Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:26.497651Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:28.627273Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:29.375375Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:29.620291Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:29.826168Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:31.769401Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:31.769443Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:32.660688Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:32.660737Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:34.019691Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:34.048573Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:34.079429Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:35.559404Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:38.355096Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:38.376928Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:38.402500Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:39.521897Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:46.727250Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:36:51.120762Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:51.120802Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:36:51.621458Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:37:11.204713Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:37:11.204759Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:37:11.753324Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:06.705534Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:07.320189Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:07.758664Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:09.268089Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:22.389945Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:39:22.389981Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:39:22.926464Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:26.974910Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:39:26.974940Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:39:27.471671Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:32.806552Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:33.420744Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:33.739249Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:33.928279Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:34.107239Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:36.971210Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:42.130035Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:39:42.898776Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:40:31.797041Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:40:31.797084Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:40:39.551500Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:40:54.740242Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:40:54.740282Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:40:55.129602Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:42.283291Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:52.573964Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:52.743012Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:52.944001Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:53.665374Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:41:54.465351Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:42:10.502768Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:42:44.586120Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:42:54.235830Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:42:54.235885Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:42:59.608797Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:43:37.363289Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:43:37.363333Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:43:38.274492Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:43:44.494760Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:43:44.494833Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:44:05.401550Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:44:05.401601Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:44:06.406156Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:44:47.890646Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:45:12.487998Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:45:18.536665Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:45:20.018778Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:45:22.026342Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:23.130731Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:23.130790Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:28.735368Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:28.735448Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:39.023899Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:39.023935Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:48:39.788453Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:42.281201Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:43.318731Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:56.797217Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:58.302594Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:48:59.260665Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:49:25.685533Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:49:25.685585Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:49:40.535042Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:49:40.535086Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:49:54.425779Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:49:57.028086Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:49:57.028124Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:03.150570Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:50:12.777245Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:50:21.831803Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:21.831934Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:23.559128Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:50:33.790909Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:33.790953Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:44.466717Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:50:44.466762Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:51:11.676236Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:51:11.676271Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:51:42.723380Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:51:44.641620Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:51:44.641659Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:52:03.572752Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:06.447589Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:09.010656Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:10.415146Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:11.116561Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:51.954318Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:52:52.040405Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:52:52.040449Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:53:23.955763Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:53:47.254163Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:53:47.254207Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:53:52.809206Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:53:52.809248Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:54:02.723096Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:54:04.199461Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:54:05.579989Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:54:25.240714Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:54:25.240758Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:54:27.112969Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T07:54:37.968800Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:54:37.968856Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:59:09.351856Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T07:59:09.351901Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:26.710538Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:26.710572Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:27.596907Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:27.596954Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:46.656864Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:46.656945Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:56.030711Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:04:56.030779Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:05:14.381430Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:05:15.951451Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:05:15.951483Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:05:19.263892Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:06:25.953001Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:25.953050Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:32.727327Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:32.727383Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:42.394123Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:42.394169Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:47.687350Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:06:53.287365Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:06:53.287446Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:07:35.570627Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:07:35.570729Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:08:10.202498Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:08:10.202574Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:08:22.734912Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:08:25.906697Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:08:27.603061Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:08:28.619431Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:09:55.595872Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:09:55.595915Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:10:07.180202Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:11:22.139763Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:11:22.139816Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:12:47.172639Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:17:00.619134Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:00.619189Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:16.990765Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:16.990893Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:24.293634Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:17:56.172490Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:56.172533Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:17:59.784437Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:18:39.018127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:18:39.018176Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:18:50.080589Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:18:50.080624Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:19:13.066357Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:23.443291Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:23.497481Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:23.511801Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:24.771736Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:29.229607Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:29.243866Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:29.259035Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:19:30.913680Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:22:16.911185Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 3639635)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:22:16.970940Z","level":"INFO","fields":{"message":"Process 3639635 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:22:16.970984Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:22:16.971001Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:22:16.971015Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:22:16.973673Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 805725"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:23:12.463771Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:12.463840Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:30.037033Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:30.037105Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:30.037119Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:23:30.040065Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 806505"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:23:31.042201Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:23:31.042262Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:23:31.042272Z","level":"INFO","fields":{"message":"Deploy started, PID: 806505"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:31.042282Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:31.042299Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:31.042307Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:31.042420Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:23:43.724896Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:23:44.790671Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:23:44.815624Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:23:44.832221Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:23:47.123047Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:24:15.329634Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:24:15.329677Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:24:28.508518Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:24:56.204299Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:24:56.204332Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:24:56.743999Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:25:01.691333Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:01.691377Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:02.923604Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:25:09.264465Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:09.264508Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:10.720329Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:25:19.336863Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:19.336974Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:34.497163Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:34.497203Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:25:34.956996Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:25:37.508439Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:26:23.453786Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:27:06.448094Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:27:06.448138Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:27:06.686691Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:27:17.828124Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:27:18.766567Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:28:26.851222Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:28:26.851263Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:28:27.403611Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:29:47.690498Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:29:47.690532Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:29:48.283272Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:29:55.050390Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:30:41.465119Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:30:41.465160Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:40:03.384588Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:42:18.836490Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:51:05.770386Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 806505)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:05.826206Z","level":"INFO","fields":{"message":"Process 806505 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:05.826222Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:05.826237Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:05.826241Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:05.828319Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 816620"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:06.831495Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:06.831558Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T08:51:06.831565Z","level":"INFO","fields":{"message":"Deploy started, PID: 816620"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:06.831571Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:06.831579Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:06.831583Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:51:06.831659Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:53:30.780302Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:55:42.114884Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:55:42.114927Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:55:52.157409Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:55:52.157453Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:56:53.551968Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:56:55.274356Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:56:57.754287Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:00.365712Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:02.090137Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:03.532193Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:04.820742Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:06.186917Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:21.599467Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:21.748847Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:57:21.748908Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:57:28.870999Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:32.589742Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:49.255909Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:57:49.255949Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:57:49.746939Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:57:51.092311Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:58:50.249521Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:58:50.249557Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:58:50.839422Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:59:31.483968Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:31.484010Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:32.070710Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:32.070742Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:38.204801Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:38.204860Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T08:59:38.764403Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:59:55.187384Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:59:55.372474Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T08:59:55.387484Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:24.952523Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:25.825111Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:26.453059Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:26.688390Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:26.878064Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:00:27.067865Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:11.945251Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:01:11.945293Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:01:12.371343Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:12.495470Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:41.497692Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:42.128992Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:42.363422Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:01:42.541352Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:02:15.478962Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:02:15.478999Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:02:16.029525Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:02:17.611368Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:06.320603Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:03:06.320646Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:03:16.795877Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:18.101778Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:18.990462Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:19.950790Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:20.204494Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:20.400651Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:20.621909Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:20.785958Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:21.003595Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:21.151751Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:21.378213Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:25.152376Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:25.864862Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:28.799669Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:03:58.483665Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T09:05:05.573153Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:05:05.573208Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:05:17.867089Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:05:17.867142Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:06:44.335111Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T09:06:44.335166Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:13:54.754105Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:13:57.446762Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:13:57.504574Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:13:57.525660Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:13:58.647705Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:13:59.692606Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:14:01.127515Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:14:01.149782Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:14:01.172189Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:15:28.597313Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:15:28.597358Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:15:28.914977Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:15:28.954726Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:16:22.876995Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:16:32.388052Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:16:36.165299Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:16:45.061985Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:17:14.494950Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:17:14.494995Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:17:20.838108Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:17:58.993630Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:17:58.993674Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:18:34.824030Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:18:34.824072Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:18:41.298823Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:18:41.298855Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:18:41.888186Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:21:13.145068Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:21:13.145104Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:21:13.735183Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:25:04.565258Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:25:08.471243Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 816620)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:08.527752Z","level":"INFO","fields":{"message":"Process 816620 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:08.527794Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:08.527844Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:08.527862Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:08.529801Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 859701"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:09.532461Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:09.532490Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:25:09.532497Z","level":"INFO","fields":{"message":"Deploy started, PID: 859701"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:09.532513Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:09.532520Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:09.532525Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:09.532584Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:25:12.352705Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:54:17.787114Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:54:52.162596Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:54:52.162638Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:54:52.859947Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:08.747669Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:08.747696Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:09.409835Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:17.674566Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:17.721950Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:17.740636Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:28.065515Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:28.065549Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:34.957900Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:34.998826Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:35.014573Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:39.169618Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:39.169652Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:49.233224Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:55:54.914000Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:54.914074Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:54.914088Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:54.919150Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot green with PID 911208"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:55.921754Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:55.921825Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:55.921841Z","level":"INFO","fields":{"message":"Deploy started, PID: 911208"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.921852Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: Some(859701)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.921869Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.921877Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.921883Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 859701)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.921890Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 859701)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:55.978964Z","level":"INFO","fields":{"message":"Process 859701 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:55.979008Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.979141Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.net -> http://localhost:22290"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.979156Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.test -> http://localhost:22290"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:55.979420Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T10:55:55.979454Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:56.737412Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:56.737459Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:56.737469Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:56.741515Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 911263"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:57.744296Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:57.744359Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:57.744373Z","level":"INFO","fields":{"message":"Deploy started, PID: 911263"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.744383Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: green, old_pid: Some(911208)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.744401Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.744408Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.744435Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 911208)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.744439Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot green (PID: 911208)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:57.799699Z","level":"INFO","fields":{"message":"Process 911208 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:55:57.799727Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.799860Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.net -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.799875Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.test -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:55:57.800110Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T10:55:57.800137Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:56:00.623575Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:56:02.539662Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:56:02.559118Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:56:02.587170Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:56:04.119704Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:56:08.370333Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:57:02.432748Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:02.432791Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:21.227992Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:21.228065Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:21.228079Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:21.231082Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot green with PID 912820"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:22.233625Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot green after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:22.233679Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot green"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:22.233688Z","level":"INFO","fields":{"message":"Deploy started, PID: 912820"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.233697Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: Some(911263)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.233707Z","level":"INFO","fields":{"message":"Switched traffic from blue to green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.233727Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.233731Z","level":"INFO","fields":{"message":"Stopping old slot blue (PID: 911263)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.233735Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 911263)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:22.289769Z","level":"INFO","fields":{"message":"Process 911263 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:22.289818Z","level":"INFO","fields":{"message":"Old slot blue stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.289945Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.test -> http://localhost:22290"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.289962Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.net -> http://localhost:22290"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:22.290224Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T10:57:22.290252Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot green"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:23.061714Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:23.061772Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:23.061783Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:23.064194Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 912873"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:24.066828Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:24.066890Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:24.066903Z","level":"INFO","fields":{"message":"Deploy started, PID: 912873"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.066913Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: green, old_pid: Some(912820)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.066927Z","level":"INFO","fields":{"message":"Switched traffic from green to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.066935Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=green, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.066941Z","level":"INFO","fields":{"message":"Stopping old slot green (PID: 912820)"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.066948Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot green (PID: 912820)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:24.069963Z","level":"INFO","fields":{"message":"Process 912820 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T10:57:24.069974Z","level":"INFO","fields":{"message":"Old slot green stopped"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.070004Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.test -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.070010Z","level":"INFO","fields":{"message":"Updated route for domain soli.solisoft.net -> http://localhost:24003"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:24.070106Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T10:57:24.070118Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:43.235749Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:57:44.816322Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:57:45.838560Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:57:51.981918Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:51.981961Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:57:53.183706Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T10:58:00.760459Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:58:00.760503Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:58:07.275908Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:58:07.275952Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T10:58:44.256263Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T12:56:43.553119Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/docs/core-concepts/i18n)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T12:56:43.611101Z","level":"ERROR","fields":{"message":"Backend request failed: client error (Connect) (target: http://localhost:24003/favicon.ico)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T12:56:47.504744Z","level":"ERROR","fields":{"message":"Failed to proxy to _admin app: client error (Connect)"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-18T13:00:41.256367Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.256399Z","level":"INFO","fields":{"message":"Stopping ilos.solisoft.net slot blue (PID: 3639637)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.259125Z","level":"INFO","fields":{"message":"Process 3639637 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.259150Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 912873)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.261090Z","level":"INFO","fields":{"message":"Process 912873 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.261100Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot green (PID: 3966940)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.263834Z","level":"INFO","fields":{"message":"Process 3966940 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.263844Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 3639633)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.266314Z","level":"INFO","fields":{"message":"Process 3639633 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.266347Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 3639628)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.269673Z","level":"INFO","fields":{"message":"Process 3639628 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.269701Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 3639631)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.272276Z","level":"INFO","fields":{"message":"Process 3639631 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.272295Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 3639629)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.274033Z","level":"INFO","fields":{"message":"Process 3639629 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.274041Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 3639639)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.276910Z","level":"INFO","fields":{"message":"Process 3639639 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.276923Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 3639641)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.278714Z","level":"INFO","fields":{"message":"Process 3639641 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.278732Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 3639630)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.280326Z","level":"INFO","fields":{"message":"Process 3639630 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.359058Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.359884Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T13:00:41.359928Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.360653Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-03-18T13:00:41.361025Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.361033Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.361048Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:00:41.361093Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361130Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-18T13:00:41.361167Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:00:41.361173Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:00:41.361303Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361390Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361447Z","level":"INFO","fields":{"message":"Discovered new app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361492Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361548Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361641Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361700Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361774Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361855Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361917Z","level":"INFO","fields":{"message":"Discovered new app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.361999Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.test -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.362005Z","level":"INFO","fields":{"message":"Updated route for domain delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.362009Z","level":"INFO","fields":{"message":"Updated route for domain www.delupay.com -> http://localhost:9010"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.362115Z","level":"INFO","fields":{"message":"Configuration persisted to ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T13:00:41.530490Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530484Z","level":"INFO","fields":{"message":"Auto-starting app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530499Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530514Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530517Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530514Z","level":"INFO","fields":{"message":"Auto-starting app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530531Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530540Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530544Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530545Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530544Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530549Z","level":"INFO","fields":{"message":"Starting deploy for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530554Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530558Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530559Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530562Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.530563Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530567Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530570Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530577Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530590Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.530594Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.531654Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 1038801"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.531691Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.531694Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.532803Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 1038802"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.532826Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.532828Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.533965Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 1038803"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.534046Z","level":"INFO","fields":{"message":"Deploying ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.534056Z","level":"INFO","fields":{"message":"Starting deployment of ilos.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.534067Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.534074Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.535362Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 1038804"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.535386Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.535389Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.535437Z","level":"INFO","fields":{"message":"Started ilos.solisoft.net slot blue with PID 1038805"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.536608Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 1038807"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.536640Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.536645Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.538477Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 1038808"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.538526Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.538533Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.538572Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.538596Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.539349Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 1038812"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.539725Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 1038813"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.539746Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:41.539749Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:41.540615Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 1038819"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.454102Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:00:42.534889Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.534923Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.534929Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038802"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.534935Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.534935Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.534941Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.534947Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.534949Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.534955Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038801"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.535005Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.535017Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.535041Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.535045Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.535066Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.536129Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.536175Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.536185Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038803"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.536192Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.536201Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.536207Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.536271Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.537806Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.537828Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.537831Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038804"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.537834Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.537838Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.537841Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.537863Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.538240Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.538259Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.538267Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038807"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.538274Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.538282Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.538288Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.538349Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540379Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.540393Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.540396Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038805"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540399Z","level":"INFO","fields":{"message":"Current slot: ilos.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540403Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540412Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540433Z","level":"INFO","fields":{"message":"Deploy completed for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540844Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.540860Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.540865Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038812"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540869Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540873Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540877Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.540915Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541381Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.541401Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.541409Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038813"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541415Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541423Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541428Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541472Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541885Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.541893Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.541896Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038819"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541899Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541902Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541905Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.541923Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.546338Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.546354Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:00:42.546373Z","level":"INFO","fields":{"message":"Deploy started, PID: 1038808"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.546379Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.546385Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.546390Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:42.546435Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:00:46.850498Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:01:00.880289Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:01:01.836876Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:01:59.508623Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:02:01.040373Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:02:03.445016Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:02:13.021998Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:28:24.883091Z","level":"INFO","fields":{"message":"Received shutdown signal, stopping all apps..."},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:28:24.883128Z","level":"INFO","fields":{"message":"Stopping proxy.solisoft.net slot blue (PID: 1038804)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:24.937989Z","level":"INFO","fields":{"message":"Process 1038804 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:24.938022Z","level":"INFO","fields":{"message":"Stopping www.delupay.com slot blue (PID: 1038802)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:24.992688Z","level":"INFO","fields":{"message":"Process 1038802 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:24.992719Z","level":"INFO","fields":{"message":"Stopping agenda.letelegraphe.org slot blue (PID: 1038813)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.048931Z","level":"INFO","fields":{"message":"Process 1038813 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.048970Z","level":"INFO","fields":{"message":"Stopping ilos.solisoft.net slot blue (PID: 1038805)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.051427Z","level":"INFO","fields":{"message":"Process 1038805 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.051443Z","level":"INFO","fields":{"message":"Stopping db.solisoft.net slot blue (PID: 1038808)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.106622Z","level":"INFO","fields":{"message":"Process 1038808 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.106659Z","level":"INFO","fields":{"message":"Stopping _admin slot blue (PID: 1038812)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.109775Z","level":"INFO","fields":{"message":"Process 1038812 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.109822Z","level":"INFO","fields":{"message":"Stopping kv.solisoft.net slot blue (PID: 1038819)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.164607Z","level":"INFO","fields":{"message":"Process 1038819 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.164644Z","level":"INFO","fields":{"message":"Stopping www.solisoft.net slot blue (PID: 1038801)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.219369Z","level":"INFO","fields":{"message":"Process 1038801 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.219405Z","level":"INFO","fields":{"message":"Stopping host.solisoft.net slot blue (PID: 1038803)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.273742Z","level":"INFO","fields":{"message":"Process 1038803 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.273775Z","level":"INFO","fields":{"message":"Stopping soli.solisoft.net slot blue (PID: 1038807)"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:28:25.328270Z","level":"INFO","fields":{"message":"Process 1038807 terminated gracefully"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.641987Z","level":"INFO","fields":{"message":"Dev mode enabled: apps will be started with --dev flag"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:55:02.642605Z","level":"INFO","fields":{"message":"Watching config file: ./proxy.conf"},"target":"soli_proxy::config"}
{"timestamp":"2026-03-18T13:55:02.642682Z","level":"INFO","fields":{"message":"Lua scripting disabled"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:55:02.643012Z","level":"INFO","fields":{"message":"Loaded existing self-signed fallback certificate"},"target":"soli_proxy::tls"}
{"timestamp":"2026-03-18T13:55:02.643147Z","level":"INFO","fields":{"message":"App manager initialized for ./sites"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:55:02.643153Z","level":"INFO","fields":{"message":"HTTPS enabled on port 443"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:55:02.643163Z","level":"INFO","fields":{"message":"Proxy server starting on port 8008"},"target":"soli_proxy"}
{"timestamp":"2026-03-18T13:55:02.643196Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643209Z","level":"INFO","fields":{"message":"Admin API listening on 0.0.0.0:9090"},"target":"soli_proxy::admin"}
{"timestamp":"2026-03-18T13:55:02.643272Z","level":"INFO","fields":{"message":"HTTP/1.1 server listening on 0.0.0.0:80 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:55:02.643278Z","level":"INFO","fields":{"message":"HTTPS/2 server listening on 0.0.0.0:443 (16 accept loops)"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:55:02.643416Z","level":"INFO","fields":{"message":"Discovered new app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643505Z","level":"INFO","fields":{"message":"Discovered new app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643559Z","level":"INFO","fields":{"message":"Discovered new app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643592Z","level":"INFO","fields":{"message":"Discovered new app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643651Z","level":"INFO","fields":{"message":"Discovered new app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643741Z","level":"INFO","fields":{"message":"Discovered new app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643802Z","level":"INFO","fields":{"message":"Discovered new app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643921Z","level":"INFO","fields":{"message":"Discovered new app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.643985Z","level":"INFO","fields":{"message":"Discovered new app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.644037Z","level":"INFO","fields":{"message":"Discovered new app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767495Z","level":"INFO","fields":{"message":"Auto-starting app: www.delupay.com"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767491Z","level":"INFO","fields":{"message":"Auto-starting app: db.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767504Z","level":"INFO","fields":{"message":"Auto-starting app: agenda.letelegraphe.org"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767521Z","level":"INFO","fields":{"message":"Auto-starting app: ilos.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767526Z","level":"INFO","fields":{"message":"Starting deploy for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767533Z","level":"INFO","fields":{"message":"Starting deploy for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767528Z","level":"INFO","fields":{"message":"Starting deploy for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767535Z","level":"INFO","fields":{"message":"Starting deploy for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767540Z","level":"INFO","fields":{"message":"Auto-starting app: www.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767533Z","level":"INFO","fields":{"message":"Auto-starting app: host.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767544Z","level":"INFO","fields":{"message":"Auto-starting app: proxy.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767541Z","level":"INFO","fields":{"message":"Deploying www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767544Z","level":"INFO","fields":{"message":"Starting deploy for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767544Z","level":"INFO","fields":{"message":"Auto-starting app: soli.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767550Z","level":"INFO","fields":{"message":"Starting deploy for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767549Z","level":"INFO","fields":{"message":"Starting deploy for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767554Z","level":"INFO","fields":{"message":"Starting deployment of www.delupay.com to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.767556Z","level":"INFO","fields":{"message":"Starting deploy for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767556Z","level":"INFO","fields":{"message":"Auto-starting app: kv.solisoft.net"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767558Z","level":"INFO","fields":{"message":"Auto-starting app: _admin"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767563Z","level":"INFO","fields":{"message":"Starting deploy for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.767567Z","level":"INFO","fields":{"message":"Starting deploy for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.769050Z","level":"INFO","fields":{"message":"Started www.delupay.com slot blue with PID 1105715"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.769079Z","level":"INFO","fields":{"message":"Deploying agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.769088Z","level":"INFO","fields":{"message":"Starting deployment of agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.770232Z","level":"INFO","fields":{"message":"Started agenda.letelegraphe.org slot blue with PID 1105716"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.770252Z","level":"INFO","fields":{"message":"Deploying db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.770254Z","level":"INFO","fields":{"message":"Starting deployment of db.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.770279Z","level":"INFO","fields":{"message":"Deploying ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.770288Z","level":"INFO","fields":{"message":"Starting deployment of ilos.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.771114Z","level":"INFO","fields":{"message":"Started db.solisoft.net slot blue with PID 1105717"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.771936Z","level":"INFO","fields":{"message":"Started ilos.solisoft.net slot blue with PID 1105718"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.771954Z","level":"INFO","fields":{"message":"Deploying www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.771958Z","level":"INFO","fields":{"message":"Starting deployment of www.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.773114Z","level":"INFO","fields":{"message":"Started www.solisoft.net slot blue with PID 1105720"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.773178Z","level":"INFO","fields":{"message":"Deploying proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.773186Z","level":"INFO","fields":{"message":"Starting deployment of proxy.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.774156Z","level":"INFO","fields":{"message":"Started proxy.solisoft.net slot blue with PID 1105723"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.774180Z","level":"INFO","fields":{"message":"Deploying host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.774183Z","level":"INFO","fields":{"message":"Starting deployment of host.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.774219Z","level":"INFO","fields":{"message":"Deploying soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.774228Z","level":"INFO","fields":{"message":"Starting deployment of soli.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.775366Z","level":"INFO","fields":{"message":"Started host.solisoft.net slot blue with PID 1105724"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.775481Z","level":"INFO","fields":{"message":"Started soli.solisoft.net slot blue with PID 1105725"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.775504Z","level":"INFO","fields":{"message":"Deploying kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.775509Z","level":"INFO","fields":{"message":"Starting deployment of kv.solisoft.net to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.776803Z","level":"INFO","fields":{"message":"Started kv.solisoft.net slot blue with PID 1105727"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.776871Z","level":"INFO","fields":{"message":"Deploying _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:02.776877Z","level":"INFO","fields":{"message":"Starting deployment of _admin to slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:02.778163Z","level":"INFO","fields":{"message":"Started _admin slot blue with PID 1105731"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.670929Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.670977Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772659Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.772687Z","level":"INFO","fields":{"message":"Health check passed for agenda.letelegraphe.org slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.772692Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105716"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772696Z","level":"INFO","fields":{"message":"Current slot: agenda.letelegraphe.org, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772700Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772704Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772719Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.772732Z","level":"INFO","fields":{"message":"Health check passed for www.delupay.com slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.772736Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105715"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772740Z","level":"INFO","fields":{"message":"Deploy completed for agenda.letelegraphe.org to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772765Z","level":"INFO","fields":{"message":"Current slot: www.delupay.com, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772778Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772783Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.772839Z","level":"INFO","fields":{"message":"Deploy completed for www.delupay.com to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.774877Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.774900Z","level":"INFO","fields":{"message":"Health check passed for www.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.774904Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105720"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.774908Z","level":"INFO","fields":{"message":"Current slot: www.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.774911Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.774914Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.774940Z","level":"INFO","fields":{"message":"Deploy completed for www.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.775369Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.775388Z","level":"INFO","fields":{"message":"Health check passed for proxy.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.775392Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105723"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.775395Z","level":"INFO","fields":{"message":"Current slot: proxy.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.775399Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.775401Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.775427Z","level":"INFO","fields":{"message":"Deploy completed for proxy.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.776733Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.776754Z","level":"INFO","fields":{"message":"Health check passed for ilos.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.776759Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105718"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.776764Z","level":"INFO","fields":{"message":"Current slot: ilos.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.776768Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.776772Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.776805Z","level":"INFO","fields":{"message":"Deploy completed for ilos.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777058Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777067Z","level":"INFO","fields":{"message":"Health check passed for soli.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777071Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105725"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777074Z","level":"INFO","fields":{"message":"Current slot: soli.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777077Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777080Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777104Z","level":"INFO","fields":{"message":"Deploy completed for soli.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777263Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777273Z","level":"INFO","fields":{"message":"Health check passed for host.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777277Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105724"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777281Z","level":"INFO","fields":{"message":"Current slot: host.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777285Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777295Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777321Z","level":"INFO","fields":{"message":"Deploy completed for host.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777491Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777509Z","level":"INFO","fields":{"message":"Health check passed for kv.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.777516Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105727"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777522Z","level":"INFO","fields":{"message":"Current slot: kv.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777529Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777535Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777580Z","level":"INFO","fields":{"message":"Deploy completed for kv.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.777995Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.778008Z","level":"INFO","fields":{"message":"Health check passed for db.solisoft.net slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.778011Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105717"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.778014Z","level":"INFO","fields":{"message":"Current slot: db.solisoft.net, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.778017Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.778020Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.778041Z","level":"INFO","fields":{"message":"Deploy completed for db.solisoft.net to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.779469Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue after 1s"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.779476Z","level":"INFO","fields":{"message":"Health check passed for _admin slot blue"},"target":"soli_proxy::app::deployment"}
{"timestamp":"2026-03-18T13:55:03.779479Z","level":"INFO","fields":{"message":"Deploy started, PID: 1105731"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.779481Z","level":"INFO","fields":{"message":"Current slot: _admin, old_slot_name: blue, old_pid: None"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.779484Z","level":"INFO","fields":{"message":"Switched traffic from blue to blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.779487Z","level":"INFO","fields":{"message":"Checking if should stop old slot: old_slot_name=blue, slot=blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:03.779506Z","level":"INFO","fields":{"message":"Deploy completed for _admin to slot blue"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:55:17.406999Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:17475/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:56:31.409870Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:17475/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:56:33.771237Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:17475/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T13:56:42.718856Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:56:42.718902Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-18T13:57:00.840543Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:17475/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-18T14:20:44.027882Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T16:09:37.752797Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T16:09:37.752897Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T19:59:46.590064Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T19:59:49.285639Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T19:59:50.832329Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:00:11.465916Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:00:11.465960Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:01:45.185428Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:01:45.185473Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:01:52.940835Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:01:52.940878Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:06.626886Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:06.626923Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:45.624982Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:45.625014Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:46.247945Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:02:46.247993Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:03:16.917076Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:03:16.917112Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:04:39.501994Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:04:39.502038Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:04:46.808523Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:04:46.808567Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:12:44.740156Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:12:47.448009Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:12:50.466689Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:14:12.299032Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:14:14.090648Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:16:43.019138Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:16:43.019183Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:16:43.639515Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:16:43.639544Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:16:44.383224Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T20:17:09.546980Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T20:17:09.547022Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-19T21:32:28.434533Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-19T23:09:03.894328Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T01:35:35.760679Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T05:39:29.967574Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:10:18.238254Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:39.503309Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:41.900077Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.042332Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.061774Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.100105Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.125949Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.152623Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T07:34:42.178452Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/metrics"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T10:20:34.969047Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:20:34.969096Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:21:39.420484Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:21:39.420528Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:22:21.122736Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:22:21.122779Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:22:42.070206Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:22:42.070248Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:23:11.331901Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T10:23:11.331934Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T19:40:03.239425Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:03.315909Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:03.342967Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:03.377108Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:03.401099Z","level":"ERROR","fields":{"message":"TLS accept error: received fatal alert: CertificateUnknown"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:03.426287Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:24003/live/socket/counter"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:40:04.150191Z","level":"INFO","fields":{"message":"WebSocket upgrade request to localhost:21917/__livereload_ws"},"target":"soli_proxy::server"}
{"timestamp":"2026-03-20T19:56:33.181127Z","level":"INFO","fields":{"message":"Apps directory changed, rediscovering..."},"target":"soli_proxy::app"}
{"timestamp":"2026-03-20T19:56:33.181200Z","level":"INFO","fields":{"message":"Discovering apps in ./sites"},"target":"soli_proxy::app"}