Spaces:
Sleeping
Sleeping
akashyadav758
Harden monitor (gate all routes), swap ChatGPT backend to free-Chatgpt-api, clean repo
5c7f4b5 | # Architecture β one container, everything inside | |
| Everything runs in **one container** built from the root `Dockerfile`. The extensions inside | |
| Chrome dial their servers on hardcoded `127.0.0.1` ports, so the servers **must** share Chrome's | |
| localhost β a separate machine/Space can never reach them. That's why there's a single image, not | |
| microservices. | |
| ``` | |
| https://β¦hf.space (only port 3001 is public) | |
| β | |
| ββββββββββΌββββββββββ | |
| β monitor :3001 β UI + API gateway (one Go binary) | |
| β / /chrome.log β (open, no key) | |
| β /gpt /gemini /flowβ (API-key gated β localhost) | |
| ββββ¬βββββββ¬βββββββ¬βββ | |
| 9225 ββββ 8000β ββββ 8101 | |
| (chatgpt) (gemini) (flow) | |
| β β β | |
| ws 9225 ws 9226 ws 9227 βββ extensions dial in (localhost) | |
| βββββββββ Chrome (headless) + 3 unpacked extensions βββββββββ | |
| CDP 9222 Β· socat proxy 9223 Β· profile in /home/chrome/data | |
| ``` | |
| ## Port map (all on the container's 127.0.0.1) | |
| | Port | Who | Purpose | | |
| |------|-----|---------| | |
| | 3001 | monitor | UI + API gateway (**only published port**) | | |
| | 9222 | Chrome | DevTools Protocol (CDP) | | |
| | 9223 | socat | CDP proxied for external tools | | |
| | 9225 | chatgpt server | HTTP API **and** extension WS (same port) | | |
| | 8000 / 9226 | gemini server | HTTP API / extension cookie-WS | | |
| | 8101 / 8100 / 9227 | flow server | HTTP API / ext-callback / extension WS | | |
| ## What starts it | |
| `start_hf.sh` (the container entrypoint) in order: restore profile from Postgres β clean profile β | |
| start monitor (3001) β CDP proxy β **start the 3 backend servers** (step 6a) β launch Chrome with | |
| the 3 extensions. Each server logs to `/home/chrome/{chatgpt,gemini,flow}.log`. | |
| ## Components added on top of the base image | |
| - `monitor/` β Go UI, now also the **reverse-proxy gateway** (`gatewayHandler`, `authOK`). | |
| - `profilesync/` β Go tool, Chrome profile β Postgres snapshot. | |
| - `free-Chatgpt-api/`, `free-gemini-api/` (Go) + `flow-agent/` (Python/FastAPI) β the 3 servers, | |
| built/installed into the image by the `Dockerfile`. | |