# harshitj183/mann-ai-agent architecture

> Architecture diagram of the GitHub repository harshitj183/mann-ai-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/harshitj183/mann-ai-agent
- Repository: https://github.com/harshitj183/mann-ai-agent

## Overview

This repository contains two separate products: Mann, an AI-assistant application with a web client and microservices, and JustPostgres, a managed-Postgres control plane with a web console and connection router. JustPostgres users manage projects and their data, backups, branches, extensions, REST access, and upgrades; the control plane exposes these API stages and runs background jobs. The excerpts establish API routing and selected project, storage, and database behavior. Many service implementations and UI pages are unsampled, so their internal links are omitted or marked unverified.

Main entry points: [`justpostgres/apps/control-plane/src/api/app.ts`](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/app.ts) (HTTP application), [`backend/api-gateway/src`](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/api-gateway/src) (API gateway), [`frontend/src/App.tsx`](https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/App.tsx) (App routing), [`justpostgres/apps/web/src/App.tsx`](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/web/src/App.tsx) (Console routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mann_ui["Mann web app"]
  node_mann_app["App routing<br/>[App.tsx]"]
  node_mann_auth_context["Auth context<br/>[AuthContext.tsx]"]
  node_mann_chat_page["Chat interface<br/>[Chat.tsx]"]
end

subgraph group_mann_backend["Mann services"]
  node_mann_gateway["API gateway"]
  node_mann_auth_routes["Auth routes<br/>[auth.routes.js]"]
  node_mann_chat_routes["Chat routes<br/>[chat.routes.js]"]
  node_mann_agent_routes["Agent routes<br/>[agent.routes.js]"]
  node_mann_memory_routes["Memory routes<br/>[memory.routes.js]"]
  node_mann_tools_routes["Tools routes<br/>[tools.routes.js]"]
  node_mann_auth_service["Authentication service<br/>[auth.routes.js]"]
  node_mann_chat_service["Chat service"]
  node_mann_agent_service["Agent service"]
  node_mann_memory_service["Memory and skills"]
  node_mann_tools_service["Tools service"]
end

subgraph group_jp_ui["JustPostgres console"]
  node_jp_console["Console routes<br/>[App.tsx]"]
  node_jp_web_api["Console API client<br/>[api.ts]"]
  node_jp_console_pages["Management pages"]
end

subgraph group_jp_api["Control plane API"]
  node_jp_cp_app["HTTP application<br/>[app.ts]"]
  node_jp_auth["Authentication"]
  node_jp_projects_api["Project management<br/>[projects.ts]"]
  node_jp_data_api["Data access<br/>[data.ts]"]
  node_jp_backup_api["Backup management<br/>[backups.ts]"]
  node_jp_branch_api["Branch management<br/>[branches.ts]"]
  node_jp_extension_api["Extension management<br/>[extensions.ts]"]
  node_jp_rest_api["REST management<br/>[rest.ts]"]
  node_jp_upgrade_api["Upgrade management<br/>[upgrades.ts]"]
  node_jp_other_api["Admin and operations"]
end

subgraph group_jp_runtime["Postgres runtime"]
  node_jp_project_service["Project lifecycle<br/>[service.ts]"]
  node_jp_object_storage["Object storage<br/>[object-storage.ts]"]
  node_jp_router["Connection router"]
  node_jp_job_system["Background jobs"]
  node_jp_container_driver["Container driver<br/>[driver.ts]"]
end

subgraph group_jp_state["Control plane state"]
end

node_mann_user(("Assistant user"))
node_jp_operator(("Database operator"))

node_mann_user -->|"uses"| node_mann_app
node_mann_app -->|"provides auth"| node_mann_auth_context
node_mann_app -.->|"routes to"| node_mann_chat_page
node_mann_app -.->|"requests services"| node_mann_gateway
node_mann_gateway -->|"dispatches"| node_mann_auth_routes
node_mann_gateway -->|"dispatches"| node_mann_chat_routes
node_mann_gateway -->|"dispatches"| node_mann_agent_routes
node_mann_gateway -->|"dispatches"| node_mann_memory_routes
node_mann_gateway -->|"dispatches"| node_mann_tools_routes
node_mann_auth_routes -->|"forwards requests"| node_mann_auth_service
node_mann_chat_routes -->|"forwards requests"| node_mann_chat_service
node_mann_agent_routes -->|"forwards requests"| node_mann_agent_service
node_mann_memory_routes -->|"forwards requests"| node_mann_memory_service
node_mann_tools_routes -->|"forwards requests"| node_mann_tools_service
node_jp_operator -->|"manages databases"| node_jp_console
node_jp_console -->|"calls"| node_jp_web_api
node_jp_console -.->|"routes pages"| node_jp_console_pages
node_jp_console -.->|"uses control-plane API"| node_jp_cp_app
node_jp_cp_app -->|"protects API"| node_jp_auth
node_jp_cp_app -->|"routes requests"| node_jp_projects_api
node_jp_cp_app -->|"routes requests"| node_jp_data_api
node_jp_cp_app -->|"routes requests"| node_jp_backup_api
node_jp_cp_app -->|"routes requests"| node_jp_branch_api
node_jp_cp_app -->|"routes requests"| node_jp_extension_api
node_jp_cp_app -->|"routes requests"| node_jp_rest_api
node_jp_cp_app -->|"routes requests"| node_jp_upgrade_api
node_jp_cp_app -->|"routes requests"| node_jp_other_api
node_jp_projects_api -.->|"manages projects"| node_jp_project_service
node_jp_project_service -->|"enqueues work"| node_jp_job_system
node_jp_project_service -->|"uses containers"| node_jp_container_driver
node_jp_backup_api -.->|"configures storage"| node_jp_object_storage
node_jp_data_api -.->|"accesses project databases"| node_jp_router
node_jp_cp_app -.->|"serves console assets"| node_jp_web_api
node_jp_web_api -.->|"sends API requests"| node_jp_cp_app

click node_mann_app "https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/App.tsx"
click node_mann_auth_context "https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/contexts/AuthContext.tsx"
click node_mann_chat_page "https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/pages/Chat.tsx"
click node_mann_gateway "https://github.com/harshitj183/mann-ai-agent/tree/main/backend/api-gateway/src"
click node_mann_auth_routes "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/auth.routes.js"
click node_mann_chat_routes "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/chat.routes.js"
click node_mann_agent_routes "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/agent.routes.js"
click node_mann_memory_routes "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/memory.routes.js"
click node_mann_tools_routes "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/tools.routes.js"
click node_mann_auth_service "https://github.com/harshitj183/mann-ai-agent/blob/main/backend/auth-service/src/routes/auth.routes.js"
click node_mann_chat_service "https://github.com/harshitj183/mann-ai-agent/tree/main/backend/chat-service/src"
click node_mann_agent_service "https://github.com/harshitj183/mann-ai-agent/tree/main/backend/agent-service/src"
click node_mann_memory_service "https://github.com/harshitj183/mann-ai-agent/tree/main/backend/memory-service/src"
click node_mann_tools_service "https://github.com/harshitj183/mann-ai-agent/tree/main/backend/tools-service/src"
click node_jp_console "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/web/src/App.tsx"
click node_jp_web_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/web/src/lib/api.ts"
click node_jp_console_pages "https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/web/src/pages"
click node_jp_cp_app "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/app.ts"
click node_jp_auth "https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/auth"
click node_jp_projects_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/projects.ts"
click node_jp_data_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/data.ts"
click node_jp_backup_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/backups.ts"
click node_jp_branch_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/branches.ts"
click node_jp_extension_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/extensions.ts"
click node_jp_rest_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/rest.ts"
click node_jp_upgrade_api "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/upgrades.ts"
click node_jp_other_api "https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/api/routes"
click node_jp_project_service "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/projects/service.ts"
click node_jp_object_storage "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/backups/object-storage.ts"
click node_jp_router "https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/router/src"
click node_jp_job_system "https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/jobs"
click node_jp_container_driver "https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/docker/driver.ts"

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_mann_app,node_mann_auth_context,node_mann_chat_page,node_mann_user toneBlue
class node_mann_gateway,node_mann_auth_routes,node_mann_chat_routes,node_mann_agent_routes,node_mann_memory_routes,node_mann_tools_routes,node_mann_auth_service,node_mann_chat_service,node_mann_agent_service,node_mann_memory_service,node_mann_tools_service,node_jp_operator toneAmber
class node_jp_console,node_jp_web_api,node_jp_console_pages toneMint
class node_jp_cp_app,node_jp_auth,node_jp_projects_api,node_jp_data_api,node_jp_backup_api,node_jp_branch_api,node_jp_extension_api,node_jp_rest_api,node_jp_upgrade_api,node_jp_other_api toneRose
class node_jp_project_service,node_jp_object_storage,node_jp_router,node_jp_job_system,node_jp_container_driver toneIndigo
```

## Components

### Mann web app

- [App routing](https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Auth context](https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/contexts/AuthContext.tsx): `frontend/src/contexts/AuthContext.tsx`
- [Chat interface](https://github.com/harshitj183/mann-ai-agent/blob/main/frontend/src/pages/Chat.tsx): `frontend/src/pages/Chat.tsx`

### Mann services

- [API gateway](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/api-gateway/src): `backend/api-gateway/src`
- [Auth routes](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/auth.routes.js): `backend/api-gateway/src/routes/auth.routes.js`
- [Chat routes](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/chat.routes.js): `backend/api-gateway/src/routes/chat.routes.js`
- [Agent routes](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/agent.routes.js): `backend/api-gateway/src/routes/agent.routes.js`
- [Memory routes](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/memory.routes.js): `backend/api-gateway/src/routes/memory.routes.js`
- [Tools routes](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/api-gateway/src/routes/tools.routes.js): `backend/api-gateway/src/routes/tools.routes.js`
- [Authentication service](https://github.com/harshitj183/mann-ai-agent/blob/main/backend/auth-service/src/routes/auth.routes.js): `backend/auth-service/src/routes/auth.routes.js`
- [Chat service](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/chat-service/src): `backend/chat-service/src`
- [Agent service](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/agent-service/src): `backend/agent-service/src`
- [Memory and skills](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/memory-service/src): `backend/memory-service/src`
- [Tools service](https://github.com/harshitj183/mann-ai-agent/tree/main/backend/tools-service/src): `backend/tools-service/src`

### JustPostgres console

- [Console routes](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/web/src/App.tsx): `justpostgres/apps/web/src/App.tsx`
- [Console API client](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/web/src/lib/api.ts): `justpostgres/apps/web/src/lib/api.ts`
- [Management pages](https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/web/src/pages): `justpostgres/apps/web/src/pages`

### Control plane API

- [HTTP application](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/app.ts): `justpostgres/apps/control-plane/src/api/app.ts`
- [Authentication](https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/auth): `justpostgres/apps/control-plane/src/auth`
- [Project management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/projects.ts): `justpostgres/apps/control-plane/src/api/routes/projects.ts`
- [Data access](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/data.ts): `justpostgres/apps/control-plane/src/api/routes/data.ts`
- [Backup management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/backups.ts): `justpostgres/apps/control-plane/src/api/routes/backups.ts`
- [Branch management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/branches.ts): `justpostgres/apps/control-plane/src/api/routes/branches.ts`
- [Extension management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/extensions.ts): `justpostgres/apps/control-plane/src/api/routes/extensions.ts`
- [REST management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/rest.ts): `justpostgres/apps/control-plane/src/api/routes/rest.ts`
- [Upgrade management](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/api/routes/upgrades.ts): `justpostgres/apps/control-plane/src/api/routes/upgrades.ts`
- [Admin and operations](https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/api/routes): `justpostgres/apps/control-plane/src/api/routes`

### Postgres runtime

- [Project lifecycle](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/projects/service.ts): `justpostgres/apps/control-plane/src/projects/service.ts`
- [Object storage](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/backups/object-storage.ts): `justpostgres/apps/control-plane/src/backups/object-storage.ts`
- [Connection router](https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/router/src): `justpostgres/apps/router/src`
- [Background jobs](https://github.com/harshitj183/mann-ai-agent/tree/main/justpostgres/apps/control-plane/src/jobs): `justpostgres/apps/control-plane/src/jobs`
- [Container driver](https://github.com/harshitj183/mann-ai-agent/blob/main/justpostgres/apps/control-plane/src/docker/driver.ts): `justpostgres/apps/control-plane/src/docker/driver.ts`

### Other components

- **Assistant user**
- **Database operator**

## Connections

- Assistant user → App routing: uses (evidence: `frontend/src/App.tsx`)
- App routing → Auth context: provides auth (evidence: `frontend/src/App.tsx`)
- App routing → Chat interface: routes to
- App routing → API gateway: requests services
- API gateway → Auth routes: dispatches (evidence: `backend/api-gateway/src/routes/auth.routes.js`)
- API gateway → Chat routes: dispatches (evidence: `backend/api-gateway/src/routes/chat.routes.js`)
- API gateway → Agent routes: dispatches (evidence: `backend/api-gateway/src/routes/agent.routes.js`)
- API gateway → Memory routes: dispatches (evidence: `backend/api-gateway/src/routes/memory.routes.js`)
- API gateway → Tools routes: dispatches (evidence: `backend/api-gateway/src/routes/tools.routes.js`)
- Auth routes → Authentication service: forwards requests (evidence: `backend/api-gateway/src/routes/auth.routes.js`)
- Chat routes → Chat service: forwards requests (evidence: `backend/api-gateway/src/routes/chat.routes.js`)
- Agent routes → Agent service: forwards requests (evidence: `backend/api-gateway/src/routes/agent.routes.js`)
- Memory routes → Memory and skills: forwards requests (evidence: `backend/api-gateway/src/routes/memory.routes.js`)
- Tools routes → Tools service: forwards requests (evidence: `backend/api-gateway/src/routes/tools.routes.js`)
- Database operator → Console routes: manages databases (evidence: `justpostgres/apps/web/src/App.tsx`)
- Console routes → Console API client: calls (evidence: `justpostgres/apps/web/src/App.tsx`)
- Console routes → Management pages: routes pages
- Console routes → HTTP application: uses control-plane API
- HTTP application → Authentication: protects API (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Project management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Data access: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Backup management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Branch management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Extension management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → REST management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Upgrade management: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- HTTP application → Admin and operations: routes requests (evidence: `justpostgres/apps/control-plane/src/api/app.ts`)
- Project management → Project lifecycle: manages projects
- Project lifecycle → Background jobs: enqueues work (evidence: `justpostgres/apps/control-plane/src/projects/service.ts`)
- Project lifecycle → Container driver: uses containers (evidence: `justpostgres/apps/control-plane/src/projects/service.ts`)
- Backup management → Object storage: configures storage
- Data access → Connection router: accesses project databases
- HTTP application → Console API client: serves console assets
- Console API client → HTTP application: sends API requests
