> For the complete documentation index, see [llms.txt](https://docs.kiloiot.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kiloiot.io/kilo-docs-fr/kilo-center/kilo-mioty-service-center/getting-started/architecture-and-components.md).

# Architecture et composants

Architecture de KiloCenter — quatre services (KC-Core, KC-Identity, KC-Gateway, KC-Web) plus l’infrastructure.

### Services d'exécution

KiloCenter fonctionne avec quatre services coopératifs, plus des dépendances d'infrastructure :

* **KC-Core** -- Moteur du centre de services MIOTY. Gère BSSCI (protocole de station de base) et SCACI (protocole du centre d'application), traite les données montantes/descendantes et expose une API gRPC interne.
* **KC-Identity** -- Service d'identité et d'organisation. Fournit l'authentification des utilisateurs, la gestion des organisations, la gestion des clés API et l'isolation des locataires.
* **KC-Gateway** -- Point d'entrée de l'API externe. Fournit l'accès gRPC et gRPC-web pour KC-Web et les clients externes. Relaye les requêtes vers KC-Core et KC-Identity.
* **KC-Web** -- Interface opérateur basée sur navigateur pour gérer les stations de base, les terminaux et surveiller le trafic. Servie par nginx en mode conteneur.

### Modules de bibliothèque

Ces modules sont compilés dans les services d'exécution ci-dessus et ne sont pas déployés comme des conteneurs séparés :

* **KC-DB** -- Module de persistance utilisé par KC-Core et KC-Identity. Contient les modèles de données, les interfaces de dépôt et les migrations PostgreSQL.
* **KC-MQTT** -- Module d'intégration MQTT utilisé par KC-Core. Publie les données montantes et les événements des appareils vers des topics MQTT.

### Dépendances d'infrastructure

Toutes les éditions nécessitent :

* **PostgreSQL** -- stockage de données principal pour les messages, l’état des terminaux et la configuration
* **Redis** -- mise en cache et stockage des sessions
* **Mosquitto** -- courtier MQTT pour la diffusion de données en temps réel vers des consommateurs externes

### Arborescence des composants

```
KiloCenter
└── kilocenter-modules/
    ├── KC-Core/            - Moteur du centre de services MIOTY
    ├── KC-Gateway/         - Passerelle API gRPC-web externe
    ├── KC-Web/             - Interface opérateur dans le navigateur
    ├── KC-DB/              - Modèles de données, dépôts, migrations
    ├── KC-MQTT/            - Intégration des topics et de la distribution MQTT
    ├── config/             - Fichiers de configuration d'exécution
    ├── docker-compose.yml  - Définitions du runtime des conteneurs
    └── deployments/docker/ - Ressources de support pour Mosquitto, nginx et Docker
```

### Chemin des données

1. Les terminaux MIOTY transmettent des données par voie radio.
2. Les stations de base reçoivent des trames radio et se connectent à KC-Core via BSSCI (TCP avec TLS sur le port 5000).
3. KC-Core valide les trames du protocole, gère les sessions et persiste les messages via KC-DB.
4. KC-Gateway expose l'API gRPC-web sur le port 9090 et relaie les requêtes vers KC-Core.
5. KC-Web se connecte à KC-Gateway pour tous les flux de travail de l'opérateur (mode conteneur : nginx sur le port 80 relaie gRPC-web vers KC-Gateway).
6. Les systèmes externes consomment les données via gRPC (par l'intermédiaire de KC-Gateway) ou MQTT (via Mosquitto).

### Ports des services

| Service                                     | Port  | Protocole | Description                                    |
| ------------------------------------------- | ----- | --------- | ---------------------------------------------- |
| KC-Core (interne)                           | 50051 | gRPC      | API interne (KC-Gateway uniquement)            |
| KC-Core (santé)                             | 8086  | HTTP      | Santé et métriques Prometheus                  |
| KC-Core (BSSCI)                             | 5000  | TCP/TLS   | Entrée du protocole de station de base         |
| KC-Core (SCACI)                             | 5001  | TCP/TLS   | Protocole du centre d'application              |
| KC-Identity (gRPC)                          | 50052 | gRPC      | Interne uniquement (KC-Core/Gateway)           |
| KC-Identity (santé)                         | 8088  | HTTP      | Santé du service d'identité                    |
| KC-Gateway                                  | 9090  | gRPC-web  | Point d'entrée de l'API externe                |
| KC-Gateway (santé)                          | 8087  | HTTP      | Point de terminaison de santé de la passerelle |
| KC-Web (conteneur)                          | 80    | HTTP      | nginx — sert l'application SPA, relaie gRPC    |
| KC-Web (développement à partir des sources) | 5173  | HTTP      | serveur de développement Vite                  |
| PostgreSQL                                  | 5433  | TCP       | Base de données (mappage de l'hôte Docker)     |
| Redis                                       | 6379  | TCP       | Cache                                          |
| Mosquitto                                   | 1883  | TCP       | Broker MQTT                                    |

### Modes de déploiement locaux

* **Mode conteneur** (recommandé) : `docker compose up --build -d` exécute tous les services dans des conteneurs. KC-Web est servi par nginx à `http://localhost/`. Aucune chaîne d’outils hôte n’est requise au-delà de Docker.
* **Mode de développement à partir des sources** : Docker pour les dépendances d'infrastructure (postgres, redis, mosquitto) ; KC-Core, KC-Gateway et KC-Web sont compilés et exécutés à partir des sources. KC-Web disponible à `http://localhost:5173`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kiloiot.io/kilo-docs-fr/kilo-center/kilo-mioty-service-center/getting-started/architecture-and-components.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
