# foxhui/webai2api architecture

> Architecture diagram of the GitHub repository foxhui/webai2api, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/foxhui/webai2api
- Repository: https://github.com/foxhui/webai2api

## Overview

WebAI2API turns browser-based AI websites into an OpenAI-compatible API. A request is routed through the HTTP/API layer, parsed and queued, then dispatched to an isolated browser worker and provider adapter; results are returned in API form. The repository also documents model discovery, cookie retrieval, streaming, failover, and a web administration UI with configuration, logs, statistics, and VNC access. Some connections are based on the README or source-index import references; unsampled implementation details are not assumed.

Main entry points: [`src/server/server.js`](https://github.com/foxhui/webai2api/blob/main/src/server/server.js) (HTTP Server), [`src/server/api/openai/routes.js`](https://github.com/foxhui/webai2api/blob/main/src/server/api/openai/routes.js) (API Routes), [`src/server/api/admin/routes.js`](https://github.com/foxhui/webai2api/blob/main/src/server/api/admin/routes.js) (Admin API), [`src/backend/pool/PoolManager.js`](https://github.com/foxhui/webai2api/blob/main/src/backend/pool/PoolManager.js) (Worker Pool)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_http["HTTP Server<br/>[server.js]"]
  node_routes["API Routes<br/>[routes.js]"]
  node_auth["Token Auth<br/>[auth.js]"]
  node_parser["Request Parser<br/>[parse.js]"]
  node_queue["Task Queue<br/>[queue.js]"]
  node_response["Response Writer<br/>[respond.js]"]
end

subgraph group_runtime["Browser Runtime"]
  node_backend["Backend Facade<br/>[index.js]"]
  node_pool["Worker Pool<br/>[PoolManager.js]"]
  node_worker["Browser Worker<br/>[Worker.js]"]
  node_launcher["Browser Launcher<br/>[launcher.js]"]
  node_registry["Adapter Registry<br/>[registry.js]"]
  node_adapters["Provider Adapters"]
  node_failover["Failover Strategy<br/>[failover.js]"]
end

subgraph group_admin["Management"]
  node_configmanage["Config Manager<br/>[manager.js]"]
  node_adminroutes["Admin API<br/>[routes.js]"]
  node_webui["Web Management UI<br/>[App.vue]"]
end

subgraph group_ops["Runtime Support"]
  node_config["Configuration<br/>[index.js]"]
  node_history[("History Store<br/>[history.js]")]
  node_stats[("Usage Statistics<br/>[stats.js]")]
  node_logger["Logging<br/>[logger.js]"]
end

node_client(("API Client"))
node_aiwebsites["AI Websites"]

node_client -->|"sends requests"| node_http
node_http -->|"initializes"| node_backend
node_http -->|"mounts routes"| node_routes
node_http -->|"creates queue"| node_queue
node_routes -->|"uses auth"| node_auth
node_routes -->|"parses requests"| node_parser
node_routes -.->|"submits tasks"| node_queue
node_routes -->|"writes responses"| node_response
node_backend -->|"loads settings"| node_config
node_backend -->|"initializes pool"| node_pool
node_pool -->|"dispatches tasks"| node_worker
node_pool -->|"runs failover"| node_failover
node_pool -->|"queries adapters"| node_registry
node_worker -->|"starts browser"| node_launcher
node_worker -->|"matches models"| node_registry
node_registry -->|"loads manifests"| node_adapters
node_adapters -->|"automates sites"| node_aiwebsites
node_http -->|"mounts routes"| node_adminroutes
node_adminroutes -->|"updates settings"| node_configmanage
node_adminroutes -->|"retries downloads"| node_history
node_adminroutes -->|"reads statistics"| node_stats
node_webui -.->|"manages service"| node_adminroutes
node_http -->|"initializes store"| node_history

click node_http "https://github.com/foxhui/webai2api/blob/main/src/server/server.js"
click node_routes "https://github.com/foxhui/webai2api/blob/main/src/server/api/openai/routes.js"
click node_auth "https://github.com/foxhui/webai2api/blob/main/src/server/middlewares/auth.js"
click node_parser "https://github.com/foxhui/webai2api/blob/main/src/server/api/openai/parse.js"
click node_queue "https://github.com/foxhui/webai2api/blob/main/src/server/queue.js"
click node_response "https://github.com/foxhui/webai2api/blob/main/src/server/respond.js"
click node_backend "https://github.com/foxhui/webai2api/blob/main/src/backend/index.js"
click node_pool "https://github.com/foxhui/webai2api/blob/main/src/backend/pool/PoolManager.js"
click node_worker "https://github.com/foxhui/webai2api/blob/main/src/backend/pool/Worker.js"
click node_launcher "https://github.com/foxhui/webai2api/blob/main/src/backend/engine/launcher.js"
click node_registry "https://github.com/foxhui/webai2api/blob/main/src/backend/registry.js"
click node_adapters "https://github.com/foxhui/webai2api/tree/main/src/backend/adapter"
click node_failover "https://github.com/foxhui/webai2api/blob/main/src/backend/strategies/failover.js"
click node_config "https://github.com/foxhui/webai2api/blob/main/src/config/index.js"
click node_configmanage "https://github.com/foxhui/webai2api/blob/main/src/config/manager.js"
click node_adminroutes "https://github.com/foxhui/webai2api/blob/main/src/server/api/admin/routes.js"
click node_webui "https://github.com/foxhui/webai2api/blob/main/webui/src/App.vue"
click node_history "https://github.com/foxhui/webai2api/blob/main/src/utils/history.js"
click node_stats "https://github.com/foxhui/webai2api/blob/main/src/utils/stats.js"
click node_logger "https://github.com/foxhui/webai2api/blob/main/src/utils/logger.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_http,node_routes,node_auth,node_parser,node_queue,node_response,node_client toneBlue
class node_backend,node_pool,node_worker,node_launcher,node_registry,node_adapters,node_failover toneAmber
class node_configmanage,node_adminroutes,node_webui toneMint
class node_config,node_history,node_stats,node_logger toneRose
class node_aiwebsites toneIndigo
```

## Components

### HTTP API

- [HTTP Server](https://github.com/foxhui/webai2api/blob/main/src/server/server.js): `src/server/server.js`
- [API Routes](https://github.com/foxhui/webai2api/blob/main/src/server/api/openai/routes.js): `src/server/api/openai/routes.js`
- [Token Auth](https://github.com/foxhui/webai2api/blob/main/src/server/middlewares/auth.js): `src/server/middlewares/auth.js`
- [Request Parser](https://github.com/foxhui/webai2api/blob/main/src/server/api/openai/parse.js): `src/server/api/openai/parse.js`
- [Task Queue](https://github.com/foxhui/webai2api/blob/main/src/server/queue.js): `src/server/queue.js`
- [Response Writer](https://github.com/foxhui/webai2api/blob/main/src/server/respond.js): `src/server/respond.js`

### Browser Runtime

- [Backend Facade](https://github.com/foxhui/webai2api/blob/main/src/backend/index.js): `src/backend/index.js`
- [Worker Pool](https://github.com/foxhui/webai2api/blob/main/src/backend/pool/PoolManager.js): `src/backend/pool/PoolManager.js`
- [Browser Worker](https://github.com/foxhui/webai2api/blob/main/src/backend/pool/Worker.js): `src/backend/pool/Worker.js`
- [Browser Launcher](https://github.com/foxhui/webai2api/blob/main/src/backend/engine/launcher.js): `src/backend/engine/launcher.js`
- [Adapter Registry](https://github.com/foxhui/webai2api/blob/main/src/backend/registry.js): `src/backend/registry.js`
- [Provider Adapters](https://github.com/foxhui/webai2api/tree/main/src/backend/adapter): `src/backend/adapter`
- [Failover Strategy](https://github.com/foxhui/webai2api/blob/main/src/backend/strategies/failover.js): `src/backend/strategies/failover.js`

### Management

- [Config Manager](https://github.com/foxhui/webai2api/blob/main/src/config/manager.js): `src/config/manager.js`
- [Admin API](https://github.com/foxhui/webai2api/blob/main/src/server/api/admin/routes.js): `src/server/api/admin/routes.js`
- [Web Management UI](https://github.com/foxhui/webai2api/blob/main/webui/src/App.vue): `webui/src/App.vue`

### Runtime Support

- [Configuration](https://github.com/foxhui/webai2api/blob/main/src/config/index.js): `src/config/index.js`
- [History Store](https://github.com/foxhui/webai2api/blob/main/src/utils/history.js): `src/utils/history.js`
- [Usage Statistics](https://github.com/foxhui/webai2api/blob/main/src/utils/stats.js): `src/utils/stats.js`
- [Logging](https://github.com/foxhui/webai2api/blob/main/src/utils/logger.js): `src/utils/logger.js`

### Other components

- **API Client**
- **AI Websites**

## Connections

- API Client → HTTP Server: sends requests (evidence: `README.md`)
- HTTP Server → Backend Facade: initializes (evidence: `src/server/server.js`)
- HTTP Server → API Routes: mounts routes (evidence: `src/server/server.js`)
- HTTP Server → Task Queue: creates queue (evidence: `src/server/server.js`)
- API Routes → Token Auth: uses auth (evidence: `src/server/api/index.js`)
- API Routes → Request Parser: parses requests (evidence: `src/server/api/openai/routes.js`)
- API Routes → Task Queue: submits tasks
- API Routes → Response Writer: writes responses (evidence: `src/server/api/openai/routes.js`)
- Backend Facade → Configuration: loads settings (evidence: `src/backend/index.js`)
- Backend Facade → Worker Pool: initializes pool (evidence: `src/backend/index.js`)
- Worker Pool → Browser Worker: dispatches tasks (evidence: `src/backend/pool/PoolManager.js`)
- Worker Pool → Failover Strategy: runs failover (evidence: `src/backend/pool/PoolManager.js`)
- Worker Pool → Adapter Registry: queries adapters (evidence: `src/backend/pool/PoolManager.js`)
- Browser Worker → Browser Launcher: starts browser (evidence: `src/backend/pool/Worker.js`)
- Browser Worker → Adapter Registry: matches models (evidence: `src/backend/pool/Worker.js`)
- Adapter Registry → Provider Adapters: loads manifests (evidence: `src/backend/registry.js`)
- Provider Adapters → AI Websites: automates sites (evidence: `README.md`)
- HTTP Server → Admin API: mounts routes
- Admin API → Config Manager: updates settings (evidence: `src/server/api/admin/routes.js`)
- Admin API → History Store: retries downloads (evidence: `src/server/api/admin/routes.js`)
- Admin API → Usage Statistics: reads statistics (evidence: `src/server/api/admin/routes.js`)
- Web Management UI → Admin API: manages service
- HTTP Server → History Store: initializes store (evidence: `src/server/server.js`)
