← Back to task

Commit ce5794e4

commit ce5794e477905922e3c3ff438610ab307c0f0e67
Author: Coder Agent <coder@agents.omni>
Date:   Mon Feb 16 18:51:09 2026

    Unify beryllium ingress via Caddy and funnel
    
    Route /news and /files through Caddy.
    Proxy all other paths to Ava web on 8079.
    Update funnel guidance to port 80.
    
    Task-Id: t-612

diff --git a/Omni/Dev/Beryllium/Ava.nix b/Omni/Dev/Beryllium/Ava.nix
index 7b9b86d6..4519e981 100644
--- a/Omni/Dev/Beryllium/Ava.nix
+++ b/Omni/Dev/Beryllium/Ava.nix
@@ -51,8 +51,9 @@
     }
   ];
 
-  # Note: Tailscale Funnel for Ava web server is configured via:
-  #   tailscale funnel --bg 8079
+  # Note: Tailscale Funnel for beryllium ingress is configured via:
+  #   tailscale funnel --bg 80
+  # Caddy then routes /files, /news, and /tasks (via ava on 8079).
   # This persists in tailscaled config and doesn't need a systemd service.
   # URL: https://beryllium.oryx-ide.ts.net/
 }
diff --git a/Omni/Dev/Beryllium/Caddy.nix b/Omni/Dev/Beryllium/Caddy.nix
index 671b5928..41f7bd7c 100644
--- a/Omni/Dev/Beryllium/Caddy.nix
+++ b/Omni/Dev/Beryllium/Caddy.nix
@@ -1,11 +1,12 @@
-# Path-based reverse proxy for beryllium services.
+# Unified ingress for beryllium services.
 #
 # Caddy listens on port 80 and routes by path prefix:
 #   /news/  → newsreader (8071)
 #   /files/ → serve (8070)
+#   all else (including /tasks) → ava web (8079)
 #
-# Each service runs with --base-path so generated HTML links
-# include the prefix.  Caddy strips the prefix before proxying.
+# /news and /files run with --base-path so generated HTML links
+# include their prefixes. Caddy strips those prefixes before proxying.
 {...}: {
   services.caddy = {
     enable = true;
@@ -26,39 +27,7 @@
           reverse_proxy localhost:8070
         }
         handle {
-          header Content-Type "text/html; charset=utf-8"
-          respond <<HTML
-            <!doctype html>
-            <html>
-            <head>
-              <meta charset="utf-8">
-              <meta name="viewport" content="width=device-width, initial-scale=1">
-              <title>beryllium</title>
-              <style>
-                :root { --bg: #fff; --fg: #222; --muted: #666; --link: #0366d6; --border: #e0e0e0; }
-                @media (prefers-color-scheme: dark) {
-                  :root { --bg: #1a1a1a; --fg: #d4d4d4; --muted: #888; --link: #58a6ff; --border: #333; }
-                }
-                body { font: 16px/1.8 -apple-system, system-ui, sans-serif;
-                  max-width: 480px; margin: 4rem auto; padding: 1rem;
-                  background: var(--bg); color: var(--fg); }
-                a { color: var(--link); text-decoration: none; font-size: 1.1rem; }
-                a:hover { text-decoration: underline; }
-                h1 { font-size: 1.3rem; margin-bottom: 1.5rem; }
-                ul { list-style: none; padding: 0; }
-                li { padding: 0.4rem 0; }
-                .desc { font-size: 0.85rem; color: var(--muted); }
-              </style>
-            </head>
-            <body>
-              <h1>beryllium</h1>
-              <ul>
-                <li><a href="/news/">news</a> <span class="desc">— rss reader</span></li>
-                <li><a href="/files/">files</a> <span class="desc">— research notes</span></li>
-              </ul>
-            </body>
-            </html>
-          HTML
+          reverse_proxy localhost:8079
         }
       '';
     };