Skip to content

VPS INFRASTRUCTURE INVENTORY

Architecture Map · Page Structure · UX/UI Redesign Proposal

VPS: 76.13.44.83 · Ubuntu 24.04 · Hostinger

31 containers · 11 domains · 6 application surfaces

Generated: 2026-05-13

1. Executive Overview

The VPS hosts the complete João Brazão digital infrastructure --- a mix of personal tools, business applications, and AI pipelines. This document maps every component, every accessible page, and flags what is orphaned or ambiguous.

1.1 Quick Numbers


Containers Domains App Surfaces Orphaned Pages


31 running 11 active / 1 6 major 7 identified pending DNS surfaces


1.2 Key Facts

  • All traffic routed through infra-nginx (nginx:1.29-alpine) --- ports 80/443 public

  • All HTTPS with TLS 1.2/1.3. SSL certs expire 2026-06-28 (.com + .cloud). Action required.

  • Primary operational UI: joaoluisbrazao.cloud (RabbitHall Flask app)

  • admin.joaoluisbrazao.com/ redirects to joaoluisbrazao.cloud/admin/dashboard --- React SPA is bypassed

  • gamine-brain-api container exposes port 8140 publicly (0.0.0.0) without nginx auth layer

  • gamine-web container (port 8090) is running but served by no nginx vhost --- orphaned container

  • bear-overnight container (python:3.12-slim) running a background script --- purpose unclear

2. Domain Map

Every public-facing domain, its backing container, purpose, and current status.


Domain Container / Backend Purpose Audience Status


joaoluisbrazao.com infra-nginx → /html/ TCN / Down a Public LIVE Rabbit Hole

admin.joaoluisbrazao.com admin-dashboard:8084 Control Center João + Team LIVE (React SPA)

joaoluisbrazao.cloud rabbithall:5001 Operations Hub João + Team LIVE (Flask)

brain.joaoluisbrazao.com jb-brain-api:8130 JB Second João LIVE Brain

vault.joaoluisbrazao.cloud vaultwarden:80 Password Family + Team LIVE Manager

mail.joaoluisbrazao.cloud triage-dashboard:8082 Email Triage João LIVE

tasks.joaoluisbrazao.com vikunja:3456 Task Manager João + Team LIVE

git.joaoluisbrazao.com forgejo:3000 Git Dev team LIVE Repositories

gestso-sandbox.joaoluisbrazao.com sandbox-odoo-web:8210 Odoo 18 ERP Gestso team LIVE (Gestso)

headscale.joaoluisbrazao.com headscale:8091 VPN Control João LIVE Server

docs.joaoluisbrazao.com --- (DNS not created) Docs Portal Dev team PENDING


admin.joaoluisbrazao.com serves API proxies (/api/*), Uptime Kuma (/uptime/), Gamine hub (/gamine/), and Docs (/docs/) in addition to redirecting / to .cloud

3. Page Structure --- Per Domain

Complete list of every accessible path per domain. Routes marked INTERNAL are valid but intended for machine-to-machine calls. Routes marked ORPHAN are accessible but not reachable from any navigation menu.

3.1 joaoluisbrazao.com --- Down a Rabbit Hole (TCN)

Static site served from /opt/downrabbithole/html/ on infra-nginx.


Path / Route Description Serves Status


/ Landing page --- personal Static HTML LIVE hub with brain chat widget

/ai.html AI section --- curated AI Static HTML LIVE content

/cars.html Classic cars section Static HTML LIVE

/crypto.html Crypto section Static HTML LIVE

/geopolitics.html Geopolitics section Static HTML LIVE

/jb2b-curator.html JB2B Document Curator tool Static HTML ORPHAN

/jb2b-status.html JB2B pipeline status page Static HTML ORPHAN

/docs Blocked --- returns 404 nginx 404 LIVE (infra doc exposure fix
#574)

/docs/ Blocked --- returns 404 nginx 404 LIVE


jb2b-curator.html and jb2b-status.html are accessible at this domain but have nothing to do with TCN. They were added as quick access pages and are not linked from the main nav.

3.2 admin.joaoluisbrazao.com --- Control Center

React SPA (admin-dashboard:8084) handles the root but immediately redirects to joaoluisbrazao.cloud. Sub-paths have real content.


Path / Route Description Serves Status


/ Redirects to nginx 301 LIVE joaoluisbrazao.cloud/admin/dashboard

/uptime/ Uptime Kuma monitoring dashboard uptime-kuma LIVE

/docs/ MkDocs infrastructure documentation Static (nginx) LIVE portal

/docs/vps-overview/ VPS overview doc MkDocs page LIVE

/docs/docker-layout/ Docker container layout MkDocs page LIVE

/docs/deployment-process/ Deployment workflow MkDocs page LIVE

/docs/networking/ Network topology MkDocs page LIVE

/docs/security/ Security posture MkDocs page LIVE

/docs/monitoring/ Monitoring setup MkDocs page LIVE

/docs/backups/ Backup strategy MkDocs page LIVE

/docs/postgres/ PostgreSQL guide MkDocs page LIVE

/docs/onboarding/ Team onboarding MkDocs page LIVE

/docs/incident-response/ Incident runbook MkDocs page LIVE

/docs/runbooks/ Operational runbooks MkDocs page LIVE

/docs/adr/ 4 Architecture Decision Records MkDocs pages LIVE

/docs/tech-debt/ Tech debt register MkDocs page LIVE

/gamine/dashboard Gamine backoffice (28-tab admin panel) rabbithall LIVE

/gamine/ Gamine public hub gamine-brain-web LIVE

/api/vikunja/ Vikunja API proxy vikunja:3456 INTERNAL

/api/ghrepos/ Skills catalog API proxy ghrepos-api INTERNAL

/api/skills/ Skills gateway proxy jb-skills-gateway INTERNAL

/api/review/ AI review API proxy jb-skills-gateway INTERNAL

/api/run-command Server command execution rabbithall INTERNAL

/api/reports Dashboard refresh reports dashboard-refresh INTERNAL


3.3 joaoluisbrazao.cloud --- Operations Hub (RabbitHall)

Primary operational interface. RabbitHall (Flask) serves all admin + gamine routes.


Path / Route Description Serves Status


/ RabbitHall root (redirects or rabbithall LIVE landing)

── ADMIN SECTION ── INTERNAL

/admin/dashboard Main control center --- infra rabbithall LIVE overview

/admin/commands Server command runner (one-click rabbithall LIVE operations)

/admin/runs Execution log + Audit cockpit (5 rabbithall LIVE gauges)

/admin/audit-archive Historical audit report browser rabbithall LIVE

/admin/tasks Vikunja task mirror + Run button rabbithall LIVE

/admin/skills Skills catalog browser rabbithall LIVE

/admin/youtube-monitor YouTube channel monitor rabbithall LIVE

/admin/jb2b-curator JB2B document curation interface rabbithall LIVE

/admin/discovery Discovery engine control panel rabbithall LIVE

/admin/brain-quarantine Brain quarantine review rabbithall LIVE

/admin/sources Content sources manager (all rabbithall LIVE projects)

/admin/sources/\<project> Per-project source configuration rabbithall LIVE

/admin/auto-login Auto-login endpoint (cookie set) rabbithall INTERNAL

/admin/login Login form --- rate limited (5 rabbithall LIVE req/min)

── GAMINE SECTION ── LIVE

/gamine/ Gamine hub landing rabbithall LIVE

/gamine/kpi KPI dashboard (4 semicircle rabbithall LIVE gauges)

/gamine/kpi/\<slug>/\<status> KPI detail / drill-down rabbithall LIVE

/gamine/intelligence Intelligence hub (7 views) rabbithall LIVE

/gamine/intelligence/research/\<type>/\<slug> Research entity detail page rabbithall LIVE

/gamine/social Social media overview rabbithall LIVE

/gamine/social/instagram Instagram data view rabbithall LIVE

/gamine/social/instagram/dashboard Instagram dashboard rabbithall LIVE

/gamine/keywords Keywords management rabbithall LIVE

/gamine/keywords/stats Keywords statistics rabbithall LIVE

/gamine/dashboard Full backoffice (28-tab admin rabbithall LIVE panel) --- also via admin.*.com

── STATIC REPORTS ── LIVE

/audit-reports/ Static HTML audit reports nginx static LIVE (directory index)

/docs/ Redirects to nginx 301 LIVE admin.joaoluisbrazao.com/docs/


3.4 brain.joaoluisbrazao.com --- JB Second Brain

FastAPI backend with pgvector. 14,979+ nodes, 38 clusters, 800 taxonomy terms.


Path / Route Description Serves Status


/ Brain main interface jb-brain-api LIVE (chat + search Q&A)

/graph Graph Explorer --- 2D/3D jb-brain-api LIVE force graph, 4 domain
lenses

/clusters Cluster browser (301 jb-brain-api WARNING redirect --- verify
target)

/health Health check endpoint jb-brain-api INTERNAL

/api/v1/stats Brain statistics jb-brain-api INTERNAL

/api/v1/search Semantic search (HyDE + jb-brain-api INTERNAL co-retrieval)

/api/v1/chat Chat / Q&A endpoint jb-brain-api INTERNAL

/api/v1/nodes Node CRUD (ingestion) jb-brain-api INTERNAL

/api/v1/graph/* Graph exploration jb-brain-api INTERNAL endpoints

/api/v1/insights Insight synthesis jb-brain-api INTERNAL

/api/v1/clusters Cluster data API jb-brain-api INTERNAL

/api/v1/digest Daily digest + latest jb-brain-api INTERNAL

/api/v1/quarantine/* Quarantine management jb-brain-api INTERNAL

/api/v1/discover/nuggets Content nuggets discovery jb-brain-api INTERNAL


The /clusters route appears to return a 301 --- verify the redirect target is correct. The Graph Explorer at /graph supersedes it.

3.5 Other Domains


Path / Route Description Serves Status


vault.joaoluisbrazao.cloud/ Vaultwarden --- full vaultwarden LIVE password manager UI

vault.joaoluisbrazao.cloud/notifications/hub WebSocket sync endpoint vaultwarden INTERNAL

mail.joaoluisbrazao.cloud/ Email triage dashboard triage-dashboard LIVE

tasks.joaoluisbrazao.com/ Vikunja --- full task vikunja LIVE manager app

git.joaoluisbrazao.com/ Forgejo --- full git forgejo LIVE platform (17 repos)

gestso-sandbox.joaoluisbrazao.com/ Odoo 18 ERP --- Gestso odoo-web LIVE company

headscale.joaoluisbrazao.com/ Headscale VPN control headscale LIVE server (API only, no UI)


4. Container Inventory

All 31 containers observed running at time of inventory (2026-05-13). Ports marked (PUB) are exposed to the public internet.


Container Name Image Port(s) Compose Dir Notes


litellm litellm:main-stable 4000 (int) infrastructure/litellm AI gateway --- 25 models, 3 tiers, \$25/mo cap

rabbithall rabbithall:latest 5001 (int) rabbithall-compose Flask ops hub --- all /admin/* routes

jb-brain-api jb-brain-api:0.1.0 8130 (int) dev/jb-brain Second brain FastAPI --- healthy

jb-skills-gateway jb-skills-catalog-* 8095 (int) dev/jb-skills-catalog 52 skills, 3 workers --- healthy

ghrepos-api ghrepos-api-ghrepos-api 8086 (int) ghrepos-api Skills catalog API --- healthy

jb2b-api jb2b-jb2b-api 8120 (int) jb2b JB2B curator API --- healthy

gamine-web gamine-web 8090 (int) gamine ⚠️ ORPHAN --- no nginx vhost. Legacy container?

gamine-brain-api gamine-brain-api:0.1.0 8140 (PUBLIC) gamine ⚠️ Port 8140 exposed to internet without nginx auth

gamine-brain-web gamine-brain-web:0.1.0 8141 (int) gamine Gamine public hub --- served at /gamine/ via admin

gamine-db postgres:16-alpine 5432 (int) gamine Gamine-only PostgreSQL --- healthy

gamine-minio minio/minio:* 9000 (int) gamine Object storage for Gamine --- healthy

infra-postgres pgvector/pgvector:pg16 5432 (int) infrastructure Primary shared DB (jb_brain, ghrepos, jb2b)

infra-redis redis:7 6379 (int) infrastructure Cache / queues

infra-nginx nginx:1.29-alpine 80/443 (PUB) infrastructure/nginx Reverse proxy --- TLS 1.2/1.3, healthy

infra-certbot certbot/certbot 80/443 infrastructure SSL cert management

infra-telegram-webhook infra-telegram-webhook:1.0 --- infrastructure \@DownRabbitbot Telegram alerts

admin-dashboard nginx:alpine 8084 (int) admin-dashboard React SPA served by nginx --- bypassed by redirect

dashboard-refresh dashboard-refresh-* 8125 (int) infrastructure Dashboard data refresh service

vikunja vikunja/vikunja:0.24.6 3456 (int) infrastructure Task manager --- healthy

forgejo forgejo/forgejo:9 3000/2222 infrastructure Git server --- 17 repos

uptime-kuma louislam/uptime-kuma:1.23.13 3001 (PUB) infrastructure 36 monitors, Telegram alerts --- healthy

vaultwarden vaultwarden/server:1.35.4 80 (int) infrastructure Password manager --- healthy (5d up)

triage-bot email-triage-triage-bot --- email-triage Email triage automation

triage-dashboard email-triage-dashboard 8082 (int) email-triage Email triage UI at mail.*.cloud

sandbox-odoo-web odoo:18.0 8210 (int) sandbox-odoo Odoo 18 ERP --- Gestso sandbox --- healthy

sandbox-odoo-docai sandbox-odoo-docai 8211 (int) sandbox-odoo Odoo document AI module --- healthy

sandbox-odoo-db postgres:16-alpine 5432 (int) sandbox-odoo Odoo-only PostgreSQL --- healthy

headscale headscale/headscale:0.23 8091/3478 infrastructure VPN control server (Tailscale-compatible)

clamav clamav/clamav:1.4 3310/7357 infrastructure Antivirus scanning --- healthy

falco falcosecurity/falco:0.39.2 --- infrastructure Runtime security monitoring --- healthy

bear-overnight python:3.12-slim --- ? ⚠️ UNKNOWN --- script container, up 13 min, no label


5. Orphaned & Hanging Assets

Pages, containers, and routes that exist on the VPS but are either unreachable from navigation, publicly exposed unintentionally, or have no clear purpose.


Asset Problem Recommended Action Risk / Impact


/jb2b-curator.html JB2B curator UI on the Remove from TCN. Point LOW risk --- (joaoluisbrazao.com) public TCN site. Not users to accessible but linked from nav. /admin/jb2b-curator. obscure Duplicates
/admin/jb2b-curator on
.cloud.

/jb2b-status.html JB2B pipeline status on Remove from TCN. Add MEDIUM risk --- (joaoluisbrazao.com) the public TCN site. Not status to /admin/runs internal data linked from nav. Exposes instead. publicly internal pipeline state reachable publicly.

gamine-web container (port Docker container running Investigate: replace Container waste + 8090) gamine-web image but not by gamine-brain-web? confusion in any nginx location If legacy, stop +
block. No traffic can remove container.
reach it.

gamine-brain-api (port 8140 API container with Change to SECURITY --- --- PUBLIC) 0.0.0.0:8140 binding. 127.0.0.1:8140 binding unauthenticated Publicly accessible OR add nginx location API exposure without nginx auth block with auth.
layer.

/admin/audit-reports/ Static HTML audit Add direct link from LOW --- usability (joaoluisbrazao.cloud) reports served with /admin/runs Audit tab. gap autoindex. Accessible
but not linked from
/admin/runs or nav.

admin.joaoluisbrazao.com/ React SPA Either use the SPA at Container waste (React SPA bypassed) (admin-dashboard:8084) admin.*.com or stop --- 8084 serves runs but immediately the container and nothing useful redirects all traffic to remove the redirect.
.cloud. SPA features
unused.

bear-overnight container Background script Identify the script. UNKNOWN --- (python:3.12-slim) container running with If one-shot: let it operational blind no custom image name, no finish and don\'t spot label, no apparent restart. If recurring: compose project. give it a proper
image + cron.

/clusters (brain.*.com) Route exists but returns Remove route or alias LOW --- dead 301. Redirect target not it to /graph with redirect confirmed. Graph proper 301.
Explorer at /graph
supersedes it.

docs.joaoluisbrazao.com DNS A record not Create DNS A → DNS pending --- created. Cert not 76.13.44.83, issue Vikunja #565 issued. Docs served at cert, uncomment nginx
admin.*.com/docs/ block in docs.conf.
instead.


6. Disabled & Stale Assets

Files and directories that exist on the VPS but are inactive. None affect current operation --- they are cleanup opportunities.


File / Directory Location Action


jb2b.conf.disabled /opt/infrastructure/nginx/conf.d/ JB2B had own domain (now consolidated). Keep for reference; rename to .archived.

jb2b.conf.bak.disabled /opt/infrastructure/nginx/conf.d/ Backup of above. Safe to delete.

uptime.conf.disabled /opt/infrastructure/nginx/conf.d/ Uptime Kuma had own domain; now served via /uptime/ path. Keep as reference or delete.

chat-admin.conf.bak-220907 /opt/infrastructure/nginx/conf.d/ Old chat-admin backup (2022). Safe to delete.

chat-admin.conf.bak-pregamine /opt/infrastructure/nginx/conf.d/ Pre-Gamine admin config. Safe to delete.

gamine.conf.bak /opt/infrastructure/nginx/conf.d/ Gamine config backup. Safe to delete after confirming current gamine.conf is stable.

gamine.conf.bak-pre-docs-redirect-20260511 /opt/infrastructure/nginx/conf.d/ Pre-docs-redirect backup. Safe to delete.

tcn.conf.bak-574-20260511-223758 /opt/infrastructure/nginx/conf.d/ Pre-#574 TCN config (before /docs block was added). Safe to delete.

/opt/prod/tuga-car-nuts/ /opt/prod/ Stale TCN deploy directory. NOT being served. Actual serving is from /opt/downrabbithole/html/. Track in Vikunja #512.

index.html.bak.20260404 /opt/downrabbithole/html/ Old TCN index backup. Safe to delete.

index.html.bak /opt/downrabbithole/html/ Older TCN index backup. Safe to delete.


7. Access Matrix

Who should have access to each surface. This is the intended state --- not necessarily the current enforced state (auth hardening is ongoing).


Surface João Cristina Marta Alice Dev Public team


joaoluisbrazao.com (TCN)

joaoluisbrazao.cloud (admin hub) --- --- ---

brain.joaoluisbrazao.com --- --- --- --- ---

admin.joaoluisbrazao.com/docs/ --- --- --- ---

admin.joaoluisbrazao.com/uptime/ --- --- ---

tasks.joaoluisbrazao.com ---

git.joaoluisbrazao.com --- --- --- ---

vault.joaoluisbrazao.cloud ---

mail.joaoluisbrazao.cloud --- --- --- ---

gestso-sandbox.*.com --- --- --- --- ---

headscale.joaoluisbrazao.com --- --- --- --- ---

/gamine/dashboard (backoffice) --- ---

/gamine/ (public hub) ---

/audit-reports/ (HTML reports) --- --- --- ---


8. Proposed UX/UI Hierarchy

Current state has three problems that make navigation confusing:

  • Entry point split: admin.*.com redirects to .cloud, making two URLs for the same thing

  • Gamine accessed from two domains with different routing behaviour

  • No clear separation between \'João alone\', \'João + Team\', and \'public\'

8.1 Proposed Three-Layer Model

LAYER 0 --- PUBLIC INTERNET: joaoluisbrazao.com

The personal/TCN site. Public-facing. No login. Content-only.

Clean up: remove jb2b-curator.html and jb2b-status.html from here.

LAYER 1 --- OPERATIONAL HUB: joaoluisbrazao.cloud (single door)

Primary working environment for João + team. One URL to remember. Accessed daily.

  • ┌── /admin/dashboard Main control center (infra health)

  • ├── /admin/tasks Vikunja task mirror

  • ├── /admin/runs Execution log + Audit cockpit

  • ├── /admin/commands One-click server operations

  • ├── /admin/skills Skills catalog

  • ├── /admin/discovery Discovery engine

  • ├── /admin/jb2b-curator JB2B curation interface

  • ├── /admin/sources Content source manager

  • ├── /admin/audit-archive Historical audit reports (add nav link)

  • └── /gamine/* All Gamine surfaces under one /gamine/ prefix

LAYER 2 --- SPECIALIST TOOLS: dedicated subdomains (bookmarked, not nav)

Used by specific people for specific purposes. No casual browsing.

  • brain.joaoluisbrazao.com --- João (second brain, daily research)

  • tasks.joaoluisbrazao.com --- João + team (native Vikunja app, power users)

  • git.joaoluisbrazao.com --- Dev team (Forgejo, code review)

  • vault.joaoluisbrazao.cloud --- All team (password manager)

  • mail.joaoluisbrazao.cloud --- João + Cristina (email triage)

  • admin.joaoluisbrazao.com/docs/ --- Dev team (infra documentation)

  • admin.joaoluisbrazao.com/uptime/ --- João + ops (monitoring)

LAYER 3 --- RESTRICTED / API: no casual access, not bookmarked

  • gestso-sandbox.joaoluisbrazao.com --- Gestso ERP (Odoo team only)

  • headscale.joaoluisbrazao.com --- VPN API (João + Cristina, WireGuard)

  • All /api/* paths --- Machine-to-machine only

8.2 Concrete Changes to Implement


# Change Why Effort


1 Stop Eliminates the dual-domain Low --- nginx config admin-dashboard:8084 confusion. admin.*.com change redirect --- serve .cloud becomes docs+api subdomain as the ONLY admin URL only.

2 Fix gamine-web orphan 31 containers; running Low --- docker --- confirm if it\'s dead containers costs RAM compose change legacy or replace and causes confusion.
gamine-brain-web

3 Bind gamine-brain-api Port 8140 is currently Low --- compose to 127.0.0.1:8140 (not publicly reachable without ports: change 0.0.0.0) auth --- security
exposure.

4 Remove Admin tools don\'t belong Low --- delete 2 jb2b-curator.html + on a public personal site. files + git push jb2b-status.html from TCN
(joaoluisbrazao.com)

5 Add nav links to These pages exist and are Low --- rabbithall /admin/audit-archive and useful but orphaned from nav template /admin/sources from main the nav tree.
nav

6 Create Docs at a path Low --- DNS A docs.joaoluisbrazao.com (admin.*.com/docs/) is record + certbot DNS + cert confusing. Give docs its
own clean URL.

7 Identify and resolve Unknown background process Low --- one SSH bear-overnight is an operational blind command to inspect container spot.

8 Delete all *.conf.bak Reduces clutter in a Trivial --- rm + and *.disabled files in security-sensitive nginx reload nginx/conf.d/ directory. Keep only .conf files.

9 Add a \'Team No single page tells a new Medium --- new Onboarding\' page at team member what to access page + docs /admin/team or and how.
/docs/onboarding/team

10 Consolidate /gamine/ Currently /gamine/ means Medium --- nginx + routing: one domain, one different things on .cloud rabbithall path vs admin.*.com. Choose
one.


8.3 Suggested Navigation Map for the Admin Dashboard

If you rebuild the main navigation at joaoluisbrazao.cloud, structure it as:

  • INFRA → Dashboard / Runs / Commands / Audit Archive

  • DATA → JB2B Curator / Discovery / Sources / YouTube Monitor

  • TASKS → Tasks (Vikunja mirror) / Skills Catalog

  • GAMINE → KPI / Intelligence / Social / Keywords / Dashboard

  • TOOLS → Brain (link out) / Git (link out) / Docs (link out) / Uptime (link out) / Vault (link out)

Today you are lost because the nav does not reflect the actual structure. The structure exists --- it just needs to be surfaced in a consistent menu. All the routes are there; it\'s purely a navigation problem.

9. Gamine Routing Confusion --- Detailed

Gamine is accessed differently depending on which domain you use. This confuses team members and makes the auth boundary unclear.

9.1 Current Routing Behaviour


URL Goes to Auth? Intended?


admin.joaoluisbrazao.com/gamine/dashboard rabbithall:5001 → HMAC cookie / Yes --- admin 28-tab backoffice IP whitelist panel

admin.joaoluisbrazao.com/gamine/ gamine-brain-web:8080 → None (public) Ambiguous --- public hub admin subdomain serving public content

joaoluisbrazao.cloud/gamine/ rabbithall:5001 → HMAC cookie / Yes --- /gamine/ route IP whitelist operational landing

joaoluisbrazao.cloud/gamine/intelligence rabbithall:5001 → HMAC cookie / Yes intelligence hub IP whitelist

joaoluisbrazao.cloud/gamine/dashboard rabbithall:5001 → same HMAC cookie / Yes --- but two 28-tab backoffice IP whitelist URLs for same page


  • DECISION: Gamine operational tools live exclusively at joaoluisbrazao.cloud/gamine/*

  • DECISION: Gamine public hub (gamine-brain-web) gets its own clean URL --- gamine.joaoluisbrazao.com --- OR stays at gamine.org

  • Remove the /gamine/ proxy block from admin.joaoluisbrazao.com (keep only /gamine/dashboard for backward compat with short redirect)

  • Result: admin.*.com = API proxies + Docs + Uptime only. .cloud = all operational UI.