
# Daytona

Daytona permite que Termbridge execute seu terminal e a visualização em um sandbox na nuvem. Use essa opção para obter um ambiente reproduzível, uma visualização na nuvem ou manter seu laptop ocioso.

## Requisitos

- Uma chave Daytona API
- Um repositório URL que o sandbox possa clonar
- Credenciais Git se o repositório for privado

## Início rápido

Defina o backend como Daytona e informe a configuração do repositório:

```bash
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_DAYTONA_API_KEY=your_key
export TERMBRIDGE_SANDBOX_REPO=https://github.com/you/your-repo.git
export TERMBRIDGE_SANDBOX_BRANCH=main
export TERMBRIDGE_SANDBOX_PATH=your-repo
export TERMBRIDGE_SANDBOX_NAME=termbridge-sandbox
export TERMBRIDGE_SANDBOX_PUBLIC=true
export TERMBRIDGE_SANDBOX_PREVIEW_PORT=5173
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

Em seguida, execute Termbridge como de costume:

```bash
npx termbridge
```

Sempre defina `TERMBRIDGE_SANDBOX_REPO` (ou `--sandbox-repo`). Se estiver ausente, Termbridge usará um repositório padrão integrado que não é acessível publicamente; assim, o sandbox será criado, mas a clonagem falhará ([#2](https://github.com/inline0/termbridge/issues/2)).

## Conexão Daytona

| Variável | Finalidade |
| --- | --- |
| `TERMBRIDGE_DAYTONA_API_KEY` | Sua chave Daytona API |
| `TERMBRIDGE_DAYTONA_API_URL` | Endpoint API (padrão: `https://app.daytona.io/api`) |
| `TERMBRIDGE_DAYTONA_TARGET` | Região de destino Daytona (opcional) |

Esses valores são passados ao SDK Daytona. Se algum deles não estiver definido, o SDK usará sua própria variável `DAYTONA_API_KEY`, `DAYTONA_API_URL` ou `DAYTONA_TARGET`.

## Modo sandbox direto (sem túnel)

No modo direto, o servidor Termbridge é executado dentro do sandbox e Cloudflare é totalmente ignorado. O URL de compartilhamento é o link de visualização Daytona para o servidor no sandbox.

```bash
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_SANDBOX_DIRECT=true
export TERMBRIDGE_SANDBOX_SERVER_PORT=8080
```

`TERMBRIDGE_SANDBOX_SERVER_PORT` (ou `--port`) usa `8080` por padrão. O modo direto cria um sandbox público, a menos que você defina `TERMBRIDGE_SANDBOX_PUBLIC=false`, e o UI oculta o alternador de terminais.

Você ainda pode ativar a visualização definindo `TERMBRIDGE_SANDBOX_PREVIEW_PORT`; no modo direto, esse valor é encaminhado como a porta `--proxy` do servidor.

## Clonagem de repositório

Termbridge criará um sandbox e clonará seu repositório no diretório de trabalho do sandbox.

Use estas configurações:

| Variável | Finalidade |
| --- | --- |
| `TERMBRIDGE_SANDBOX_REPO` | Repositório URL a clonar (sempre defina, consulte o início rápido) |
| `TERMBRIDGE_SANDBOX_BRANCH` | Branch a selecionar (opcional) |
| `TERMBRIDGE_SANDBOX_PATH` | Caminho do repositório no sandbox (opcional) |
| `TERMBRIDGE_SANDBOX_NAME` | Nome do sandbox (opcional, o padrão é `termbridge-<random hex>`) |

Se `TERMBRIDGE_SANDBOX_PATH` não estiver definido, Termbridge o deduz do nome do repositório.

## Repositórios privados

Forneça credenciais de git ao clonar repositórios privados:

```bash
export TERMBRIDGE_SANDBOX_GIT_USERNAME=your_github_username
export TERMBRIDGE_SANDBOX_GIT_TOKEN=your_github_token
```

`TERMBRIDGE_SANDBOX_GIT_PASSWORD` também é compatível e substitui o token se estiver definido.

## Agentes de programação

Termbridge pode instalar agentes de programação dentro do sandbox e sincronizar sua autenticação local para que estejam prontos imediatamente.

Consulte o guia de [Agentes de programação](https://termbridge.inline0.dev/pt/docs/sandboxes/coding-agents) para ver a configuração completa, o modo automático e os detalhes de segurança.

## Modo de pré-visualização

Para exibir a visualização, defina `TERMBRIDGE_SANDBOX_PREVIEW_PORT` como a porta usada pelo seu servidor de desenvolvimento dentro do sandbox.

Para Vite, vincule-o a todas as interfaces:

```bash
npm run dev -- --host 0.0.0.0 --port 5173
```

Termbridge busca o link de pré-visualização de Daytona e o encaminha pelo servidor Termbridge para que a pré-visualização seja carregada dentro do UI.

## Sandboxes públicos e privados

| Variável | O que faz |
| --- | --- |
| `TERMBRIDGE_SANDBOX_PUBLIC=true` | Cria um sandbox público |
| `TERMBRIDGE_SANDBOX_PUBLIC=false` | Cria um sandbox privado |

Quando a variável não está definida, os sandboxes são privados, exceto no modo direto, em que são públicos.

Para sandboxes privados, Termbridge encaminha automaticamente o token de pré-visualização ao fazer o proxy da pré-visualização.

## Limpeza e ciclo de vida

Para excluir sandboxes quando Termbridge sair:

```bash
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

Para sandboxes de curta duração ou de teste, use um prefixo:

```bash
export TERMBRIDGE_SANDBOX_NAME=termbridge-test-$(date +%s)
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

Isso mantém o uso de sandboxes sob controle e evita problemas com a cota de disco.

## Opções de CLI

Você também pode configurar Daytona por meio de opções. Uma opção tem precedência sobre a variável de ambiente correspondente.

| Opção | Variável de ambiente | Finalidade |
| --- | --- | --- |
| `--backend sandbox-daytona` | `TERMBRIDGE_BACKEND` | Usar o backend Daytona |
| `--sandbox-repo <url>` | `TERMBRIDGE_SANDBOX_REPO` | Repositório URL |
| `--sandbox-branch <branch>` | `TERMBRIDGE_SANDBOX_BRANCH` | Branch |
| `--sandbox-path <path>` | `TERMBRIDGE_SANDBOX_PATH` | Caminho do repositório no sandbox |
| `--sandbox-name <name>` | `TERMBRIDGE_SANDBOX_NAME` | Nome do sandbox |
| `--sandbox-preview-port <port>` | `TERMBRIDGE_SANDBOX_PREVIEW_PORT` | Porta de pré-visualização |
| `--sandbox-public` | `TERMBRIDGE_SANDBOX_PUBLIC=true` | Criar um sandbox público |
| `--sandbox-direct` | `TERMBRIDGE_SANDBOX_DIRECT=true` | Executar o servidor dentro do sandbox (sem túnel) |

Não há opção para um sandbox privado; use `TERMBRIDGE_SANDBOX_PUBLIC=false`. A saída integrada de `termbridge --help` ainda mostra nomes de `--daytona-*` e `--backend daytona`, que são rejeitados ([#1](https://github.com/inline0/termbridge/issues/1)).

## Solução de problemas

**A visualização está em branco**
- Verifique se o servidor de desenvolvimento está em execução dentro do sandbox.
- Use `--host 0.0.0.0` para que a porta de pré-visualização possa ser acessada.
- Confirme se `TERMBRIDGE_SANDBOX_PREVIEW_PORT` corresponde à porta do servidor de desenvolvimento.

**A criação do sandbox falha com erros de cota**
- Exclua sandboxes antigos no painel Daytona.
- Use `TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true` para sessões de curta duração.

**Falha ao clonar o repositório**
- Confira novamente URL, a branch e as credenciais do repositório.
- Verifique se o token Git tem acesso de leitura ao repositório.
