> 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-es/kilo-center/kilo-mioty-service-center/getting-started/architecture-and-components.md).

# Arquitectura y componentes

Arquitectura de KiloCenter — cuatro servicios (KC-Core, KC-Identity, KC-Gateway, KC-Web) más la infraestructura.

### Servicios de tiempo de ejecución

KiloCenter se ejecuta como cuatro servicios cooperativos más dependencias de infraestructura:

* **KC-Core** -- Motor del centro de servicio MIOTY. Gestiona BSSCI (protocolo de estación base) y SCACI (protocolo del centro de aplicaciones), procesa datos de subida/bajada y expone una API interna de gRPC.
* **KC-Identity** -- Servicio de identidad y organización. Proporciona autenticación de usuarios, gestión de organizaciones, gestión de claves API y aislamiento de inquilinos.
* **KC-Gateway** -- Entrada de API externa. Proporciona acceso gRPC y gRPC-web para KC-Web y clientes externos. Actúa como proxy de solicitudes hacia KC-Core y KC-Identity.
* **KC-Web** -- Interfaz de operador basada en navegador para gestionar estaciones base, puntos finales y supervisar el tráfico. Servida por nginx en modo contenedor.

### Módulos de biblioteca

Estos módulos se compilan dentro de los servicios de tiempo de ejecución anteriores y no se despliegan como contenedores separados:

* **KC-DB** -- Módulo de persistencia usado por KC-Core y KC-Identity. Contiene modelos de datos, interfaces de repositorio y migraciones de PostgreSQL.
* **KC-MQTT** -- Módulo de integración MQTT usado por KC-Core. Publica datos de subida y eventos de dispositivos en temas MQTT.

### Dependencias de infraestructura

Todas las ediciones requieren:

* **PostgreSQL** -- almacén de datos principal para mensajes, estado de los puntos finales y configuración
* **Redis** -- almacenamiento en caché y de sesiones
* **Mosquitto** -- intermediario MQTT para transmisión de datos en tiempo real a consumidores externos

### Árbol de componentes

```
KiloCenter
└── kilocenter-modules/
    ├── KC-Core/            - Motor del centro de servicio MIOTY
    ├── KC-Gateway/         - Puerta de enlace API externa gRPC-web
    ├── KC-Web/             - Interfaz de operador en navegador
    ├── KC-DB/              - Modelos de datos, repositorios, migraciones
    ├── KC-MQTT/            - Integración de temas y distribución MQTT
    ├── config/             - Archivos de configuración de tiempo de ejecución
    ├── docker-compose.yml  - Definiciones del tiempo de ejecución en contenedores
    └── deployments/docker/ - Recursos de soporte para Mosquitto, nginx y Docker
```

### Ruta de datos

1. Los endpoints MIOTY transmiten datos por el aire.
2. Las estaciones base reciben tramas de radio y se conectan a KC-Core a través de BSSCI (TCP con TLS en el puerto 5000).
3. KC-Core valida las tramas del protocolo, gestiona sesiones y persiste mensajes a través de KC-DB.
4. KC-Gateway expone la API gRPC-web en el puerto 9090, actuando como proxy de solicitudes hacia KC-Core.
5. KC-Web se conecta a KC-Gateway para todos los flujos de trabajo del operador (modo contenedor: nginx en el puerto 80 actúa como proxy de gRPC-web hacia KC-Gateway).
6. Los sistemas externos consumen datos a través de gRPC (mediante KC-Gateway) o MQTT (mediante Mosquitto).

### Puertos de servicio

| Servicio                                   | Puerto | Protocolo | Descripción                                    |
| ------------------------------------------ | ------ | --------- | ---------------------------------------------- |
| KC-Core (interno)                          | 50051  | gRPC      | API interna (solo KC-Gateway)                  |
| KC-Core (salud)                            | 8086   | HTTP      | Estado de salud y métricas de Prometheus       |
| KC-Core (BSSCI)                            | 5000   | TCP/TLS   | Entrada del protocolo de estación base         |
| KC-Core (SCACI)                            | 5001   | TCP/TLS   | Protocolo del centro de aplicaciones           |
| KC-Identity (gRPC)                         | 50052  | gRPC      | Solo interno (KC-Core/Gateway)                 |
| KC-Identity (salud)                        | 8088   | HTTP      | Estado de salud del servicio de identidad      |
| KC-Gateway                                 | 9090   | gRPC-web  | Entrada de API externa                         |
| KC-Gateway (salud)                         | 8087   | HTTP      | Endpoint de salud de la puerta de enlace       |
| KC-Web (contenedor)                        | 80     | HTTP      | nginx — sirve la SPA, actúa como proxy de gRPC |
| KC-Web (desarrollo desde el código fuente) | 5173   | HTTP      | Servidor de desarrollo Vite                    |
| PostgreSQL                                 | 5433   | TCP       | Base de datos (mapeo del host Docker)          |
| Redis                                      | 6379   | TCP       | Caché                                          |
| Mosquitto                                  | 1883   | TCP       | Broker MQTT                                    |

### Modos de implementación local

* **Modo contenedor** (recomendado): `docker compose up --build -d` ejecuta todos los servicios en contenedores. KC-Web es servido por nginx en `http://localhost/`. No se requiere ninguna cadena de herramientas en el host más allá de Docker.
* **Modo de desarrollo desde el código fuente**: Docker para dependencias de infraestructura (postgres, redis, mosquitto); KC-Core, KC-Gateway y KC-Web compilados y ejecutados desde el código fuente. KC-Web disponible en `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-es/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.
