> ## 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.

# Linguagens e runtimes suportados

> Veja as linguagens e versões que a Square Cloud suporta, como RUNTIME ou MAIN define o runtime, como as dependências são instaladas e o que cada imagem inclui.

Um **runtime** na Square Cloud é o ambiente completo e isolado onde sua aplicação roda: o interpretador da linguagem ou máquina virtual, as bibliotecas de sistema às quais ela se vincula, o ferramental que ela pode invocar e a fronteira de segurança que a mantém separada de todas as outras aplicações no host.

Você nunca constrói nem mantém esse ambiente. Você envia seu código-fonte e um pequeno [arquivo de configuração](/pt-br/getting-started/config-file); a Square Cloud detecta a linguagem, resolve suas dependências, provisiona um container isolado e o executa. O mesmo pipeline sustenta bots de Discord/WhatsApp/Telegram, sites e APIs, workers em segundo plano e serviços de longa duração, sobre a mesma infraestrutura rápida e blindada.

## Linguagens suportadas

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

  <Card title="Bun" icon="bread-slice" href="../articles/getting-started-with-bun" />

  <Card title="Deno" icon="t-rex" href="../articles/getting-started-with-deno" />

  <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" />

  <Card title="HTML/CSS" icon="html5" href="../articles/getting-started-with-html" />
</CardGroup>

<Info>
  Além das linguagens acima, a maioria das outras stacks e bibliotecas funciona nativamente. As imagens de runtime são construídas para serem permissivas: se sua linguagem instala no Linux, é muito provável que ela rode na Square Cloud.
</Info>

## Versões

Cada runtime oferece dois canais de atualização, selecionáveis pelo campo `VERSION` no seu arquivo de configuração:

* **`recommended`**: a versão que blindamos e executamos em produção para a maioria das aplicações. Escolha-a a menos que tenha um motivo específico para não fazê-lo.
* **`latest`**: a release mais recente, para times que precisam de um recurso de linguagem recém-lançado.

`VERSION` aceita apenas esses dois valores: qualquer outro valor, incluindo um número de versão exato, faz o deploy falhar com `INVALID_VERSION`.

| Linguagem | `recommended` | `latest` |
| - | - | - |
| Node.js \[JS & TS] | 24.21.0 | 26.9.0 |
| Python | 3.14.7 | 3.14.7 |
| Java | JDK 25 | JDK 25 |
| Elixir | 1.20.4 | 1.20.4 |
| Rust | 1.98.1 | 1.98.1 |
| Ruby | 4.0.7 | 4.0.7 |
| PHP | 8.5.10 | 8.5.10 |
| Go | 1.27.1 | 1.27.1 |
| .NET/C# | 10.0.12 | 10.0.12 |

<Tip>Escolha `recommended`, a menos que precise de um recurso que só o `latest` tem. Consulte a referência do [arquivo de configuração](/pt-br/getting-started/config-file) para os campos `RUNTIME` e `VERSION`.</Tip>

## Como um deploy funciona

Do upload até um processo no ar, todo deploy passa pelo mesmo pipeline determinístico:

<Steps>
  <Step title="Detecção de linguagem" icon="magnifying-glass">
    A Square Cloud identifica a linguagem pelo campo `RUNTIME` do seu arquivo de configuração ou, quando ele não está definido, pela extensão do arquivo `MAIN`: `.js` para Node.js, `.ts` para TypeScript, `.py` para Python, `.go` para Go, `.jar` para Java, e assim por diante. Em seguida, ela verifica se o arquivo de dependências da linguagem está na raiz do seu upload: `package.json` para Node.js e TypeScript, `requirements.txt` ou `pyproject.toml` para Python, `go.mod` ou `go.work` para Go, `Cargo.toml` para Rust, `Gemfile` para Ruby e `mix.exs` para Elixir. Se ele estiver ausente ou vazio, o deploy falha com `INVALID_DEPENDENCY`.
  </Step>

  <Step title="Resolução de dependências" icon="cube">
    As dependências são instaladas **no servidor**, dentro do container, antes de a sua aplicação iniciar: `npm install` quando não há pasta `node_modules` (uma pasta `node_modules` na raiz do seu upload é descartada), `pip install` para Python, `bundle install` para Ruby e `mix deps.get` para Elixir, enquanto Go, Rust e .NET baixam seus pacotes ao compilar o seu código. Você não precisa enviar `node_modules` nem um virtualenv dentro do `.zip`. Java é a exceção: o comando padrão executa um JAR que você compilou (`java -jar MAIN`), então envie o `.jar` compilado.
  </Step>

  <Step title="Provisionamento" icon="server">
    Um container isolado é criado com a CPU e a memória declaradas no seu arquivo de configuração. Os recursos são aplicados no nível do kernel, de modo que uma aplicação nunca consegue sufocar outra no mesmo host.
  </Step>

  <Step title="Inicialização" icon="play">
    Sem `START`, a Square Cloud executa o comando padrão da linguagem, como `node MAIN`, `python MAIN`, `go run MAIN` ou `java -jar MAIN` (Rust e Elixir compilam e executam o projeto inteiro com `cargo run --release` e `mix run --no-halt`). Precisa de uma etapa de build ou de um comando personalizado? Defina `START` e ele é executado literalmente.
  </Step>
</Steps>

## Dentro de cada imagem de runtime

Cada imagem parte da imagem oficial da sua linguagem e adiciona as ferramentas de sistema de que as aplicações costumam precisar:

<CardGroup cols={2}>
  <Card title="Node.js e Python juntos" icon="node-js">
    Aplicações Node.js e Python rodam na mesma imagem, que traz tanto o Node.js quanto o Python 3.14, então um bot pode chamar um script escrito na outra linguagem. A imagem de PHP também inclui o Node.js 24 e o npm para o build de assets.
  </Card>

  <Card title="ffmpeg e Chromium" icon="film">
    O ffmpeg vem pré-instalado nas imagens de Node.js, Python, Java, Go, Rust, Ruby, Elixir e .NET, e a imagem de Node.js e Python também inclui o Chromium headless, pronto para bots de mídia, web scraping e geração de PDF ou screenshots, sem configuração extra.
  </Card>

  <Card title="Sem privilégios por padrão" icon="shield-halved">
    As aplicações rodam como um usuário não-root dentro de um container isolado. Uma dependência comprometida permanece contida, sem acesso privilegiado ao host.
  </Card>

  <Card title="Sites estáticos, sem runtime" icon="file-code" href="/pt-br/articles/getting-started-with-html">
    Não precisa de interpretador? Defina `RUNTIME=static` para servir um site em HTML/CSS/JS puro diretamente, com o mesmo CDN e TLS de qualquer outra aplicação.
  </Card>
</CardGroup>

## Isolamento e segurança

Cada aplicação é um container totalmente isolado com limites de CPU e memória aplicados pelo kernel, nunca um processo compartilhado. Rodar sem privilégios significa que uma aplicação não consegue alcançar o host nem seus vizinhos, e os limites de recursos garantem que um pico em um projeto não tenha efeito algum sobre o desempenho de outro. É o mesmo modelo que permite à Square Cloud hospedar dezenas de milhares de cargas de trabalho em clusters compartilhados sem que interfiram entre si.

## Próximos passos

<CardGroup cols={2}>
  <Card title="Arquivo de configuração" icon="gear" href="/pt-br/getting-started/config-file">
    Domine `MAIN`, `START`, `RUNTIME`, `VERSION` e `MEMORY`: os campos que controlam seu runtime.
  </Card>

  <Card title="Guias por linguagem" icon="graduation-cap" href="#linguagens-suportadas">
    Configuração passo a passo para Node.js, Bun, Deno, Python, Go, Rust, Java, HTML estático e mais.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.