# Architecture and service connections

Understand the public URLs, private services and inference path before installing Dicto.

Dicto clients and the management app connect to the backend API. The backend
uses PostgreSQL for application data and object storage for recordings/files.
API, migration and jobs containers use the same release and configuration.
Transcription and text generation run in separate inference services.

```text
Browser / desktop client ── HTTPS ── reverse proxy ── Dicto API
Management browser app ──── HTTPS ────────────────┘      │
                                                      ├─ PostgreSQL
                                                      ├─ object storage
                                                      ├─ transcription endpoint
                                                      └─ chat/LLM endpoint
Migration container ── PostgreSQL     Jobs ── shared config + uploads
```

An optional LLM gateway supplies stable model aliases and routes requests to
Whisper, a text model or other configured providers. It does not run model weights.
Transcription can work without a chat model; a working chat model does not
establish transcription, realtime or diarization compatibility.

## Public and private addresses

The [reference deployment](/install/reference.md) follows the maintained path layout:

| Audience | Address in the example | Purpose |
| --- | --- | --- |
| Browser/client | `https://dicto.example.org/api` | Public API base URL |
| Administrator | `https://dicto.example.org/management/` | Management app |
| API/jobs | `http://storage:9000` | Private S3-compatible storage |
| API/jobs | `http://llm-server:8000/v1` | Optional inference gateway |
| Proxy | `server:3000`, `management:80` | Private forwarding targets |

Container names are resolved on the Docker network, not in users' browsers.
The proxy strips `/api` before forwarding to the backend and preserves
`/management/` for the management app. Configure both the browser-facing URLs
and internal provider URLs explicitly.

## Pick a complete recipe

Choose [existing inference endpoints](/install/external-ai.md) or
[self-hosted AI](/install/self-hosted-ai.md). Both use the same downloadable core
configuration. Start with [requirements](/start/requirements.md), then use the
component guides when adapting one service.
