> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Runtimes

> Cómo Square Cloud compila y ejecuta tu código: detección de lenguaje, resolución de dependencias, contenedores aislados y las herramientas incluidas en cada imagen de runtime.

Un **runtime** en Square Cloud es el entorno completo y aislado dentro del cual se ejecuta tu aplicación: el intérprete del lenguaje o la máquina virtual, las bibliotecas del sistema con las que se enlaza, las herramientas a las que puede recurrir y la frontera de seguridad que la mantiene separada de todas las demás aplicaciones del host.

Nunca construyes ni mantienes ese entorno. Tú envías tu código fuente y un pequeño [archivo de configuración](/es/getting-started/config-file); Square Cloud detecta el lenguaje, resuelve tus dependencias, aprovisiona un contenedor aislado y lo ejecuta. El mismo pipeline impulsa bots de Discord/WhatsApp/Telegram, sitios web y APIs, workers en segundo plano y servicios de larga duración, sobre la misma infraestructura rápida y reforzada.

## Lenguajes soportados

<CardGroup cols={3}>
  <Card title="JavaScript" icon="node-js" href="../articles/getting-started-with-nodejs" />

  <Card title="Python" icon="python" href="../articles/getting-started-with-python" />

  <Card title="Java" icon="java" href="../articles/getting-started-with-java" />

  <Card title="Rust" icon="rust" href="../articles/getting-started-with-rust" />

  <Card title="Elixir" icon="droplet" href="../articles/getting-started-with-elixir" />

  <Card title="PHP" icon="php" href="../articles/getting-started-with-php" />

  <Card title="Go" icon="golang" href="../articles/getting-started-with-go" />

  <Card title="C#" icon="c" href="../articles/getting-started-with-csharp" />

  <Card title="Ruby" icon="gem" href="../articles/getting-started-with-ruby" />
</CardGroup>

<Info>
  Más allá de los lenguajes anteriores, la mayoría de los demás stacks y bibliotecas funcionan sin configuración adicional. Las imágenes de runtime están construidas para ser permisivas: si tu lenguaje se instala en Linux, es muy probable que funcione en Square Cloud.
</Info>

## Versiones

Cada runtime ofrece dos canales de actualización, seleccionables a través del campo `VERSION` en tu archivo de configuración:

* **`recommended`** — la versión que reforzamos y ejecutamos en producción para la mayoría de las aplicaciones. Elígela a menos que tengas una razón específica para no hacerlo.
* **`latest`** — la versión más reciente, para equipos que necesitan una característica del lenguaje recién publicada.

También puedes fijar una versión exacta para lograr reproducibilidad total entre deploys.

| Lenguaje           | `recommended` | `latest` |
| ------------------ | ------------- | -------- |
| Node.js \[JS & TS] | 24.15.0       | 26.1.0   |
| Python             | 3.13.13       | 3.14.5   |
| Java               | JDK 25        | JDK 25   |
| Elixir             | 1.19.5        | 1.19.5   |
| Rust               | 1.95.0        | 1.95.0   |
| Ruby               | 4.0.4         | 4.0.4    |
| PHP                | 8.5.6         | 8.5.6    |
| Go                 | 1.26.3        | 1.26.3   |
| .NET/C#            | 10.0.8        | 10.0.8   |

<Tip>Fijar `recommended` te da actualizaciones de parches automáticas y probadas sin cambios que rompan la compatibilidad de forma inesperada. Consulta la referencia del [archivo de configuración](/es/getting-started/config-file) para los campos `RUNTIME` y `VERSION`.</Tip>

## Cómo funciona un deploy

Desde la subida hasta un proceso en vivo, cada deploy pasa por el mismo pipeline determinista:

<Steps>
  <Step title="Detección de lenguaje" icon="magnifying-glass">
    Square Cloud inspecciona los archivos de tu subida e identifica el stack a partir de las señales que ya existen en tu proyecto — un `package.json` para Node.js, un `requirements.txt` o `pyproject.toml` para Python, un `go.mod` para Go, un `Gemfile` para Ruby, y así sucesivamente. Puedes anular la detección explícitamente con el campo `RUNTIME`.
  </Step>

  <Step title="Resolución de dependencias" icon="cube">
    Tu manifiesto de dependencias se instala **del lado del servidor**, dentro del entorno de compilación. Nunca envías `node_modules`, un virtualenv ni artefactos compilados dentro del `.zip` — la plataforma los resuelve e instala por ti, manteniendo las subidas pequeñas y las compilaciones reproducibles.
  </Step>

  <Step title="Aprovisionamiento" icon="server">
    Se crea un contenedor aislado con la CPU y la memoria declaradas en tu archivo de configuración. Los recursos se aplican a nivel del kernel, de modo que una aplicación nunca puede privar a otra en el mismo host.
  </Step>

  <Step title="Inicio" icon="play">
    El campo `MAIN` apunta a tu archivo de entrada y la plataforma lo lanza con el intérprete correcto. ¿Necesitas un paso de compilación, un servidor estático o un comando personalizado? Define `START` y se ejecuta tal cual.
  </Step>
</Steps>

## Dentro de cada imagen de runtime

Cada imagen se construye sobre una base común y auditada en seguridad, de modo que el entorno es consistente sin importar qué lenguaje despliegues:

<CardGroup cols={2}>
  <Card title="Node.js 26 + herramientas de compilación" icon="node-js">
    Cada imagen incluye Node.js 26 junto al lenguaje principal. Las herramientas de compilación, los pipelines de assets y las utilidades basadas en JS siempre están disponibles, sea cual sea tu stack.
  </Card>

  <Card title="ffmpeg y Chromium" icon="film">
    El procesamiento de medios (ffmpeg) y un navegador headless (Chromium) vienen preinstalados — listos para bots de medios, web scraping y generación de PDF o capturas de pantalla sin configuración adicional.
  </Card>

  <Card title="Sin privilegios por defecto" icon="shield-halved">
    Las aplicaciones se ejecutan como un usuario no root dentro de un contenedor aislado. Una dependencia comprometida permanece contenida — no tiene acceso privilegiado al host.
  </Card>

  <Card title="Sitios estáticos, sin runtime" icon="file-code">
    ¿No necesitas un intérprete? Define `RUNTIME=static` para servir un sitio HTML/CSS/JS simple directamente, con la misma CDN y TLS que cualquier otra aplicación.
  </Card>
</CardGroup>

## Aislamiento y seguridad

Cada aplicación es un contenedor completamente aislado con límites de CPU y memoria aplicados por el kernel — nunca un proceso compartido. Ejecutarse sin privilegios significa que una aplicación no puede alcanzar el host ni a sus vecinas, y los topes de recursos garantizan que un pico en un proyecto no tenga ningún efecto sobre el rendimiento de otro. Este es el mismo modelo que permite a Square Cloud alojar decenas de miles de cargas de trabajo en clústeres compartidos sin que interfieran entre sí.

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Archivo de configuración" icon="gear" href="/es/getting-started/config-file">
    Domina `MAIN`, `START`, `RUNTIME`, `VERSION` y `MEMORY` — los campos que controlan tu runtime.
  </Card>

  <Card title="Guías por lenguaje" icon="graduation-cap" href="/es/articles/getting-started-with-nodejs">
    Configuración paso a paso para Node.js, Python, Go, Rust, Java y más.
  </Card>
</CardGroup>
