
# Daytona

Daytona consente a Termbridge di eseguire il terminale e l'anteprima in un sandbox cloud. Usalo per un ambiente riproducibile, un'anteprima cloud o per lasciare inattivo il portatile.

## Requisiti

- Una chiave Daytona API
- Un repository URL che il sandbox possa clonare
- Credenziali Git se il repository è privato

## Avvio rapido

Imposta il backend su Daytona e fornisci la configurazione del repository:

```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
```

Poi esegui Termbridge come al solito:

```bash
npx termbridge
```

Imposta sempre `TERMBRIDGE_SANDBOX_REPO` (o `--sandbox-repo`). Se manca, al momento Termbridge usa un repository predefinito integrato che non è accessibile pubblicamente: il sandbox viene creato, ma la clonazione non riesce ([#2](https://github.com/inline0/termbridge/issues/2)).

## Connessione Daytona

| Variabile | Scopo |
| --- | --- |
| `TERMBRIDGE_DAYTONA_API_KEY` | La tua chiave Daytona API |
| `TERMBRIDGE_DAYTONA_API_URL` | Endpoint API (predefinito `https://app.daytona.io/api`) |
| `TERMBRIDGE_DAYTONA_TARGET` | Regione di destinazione Daytona (facoltativa) |

Questi valori vengono passati all'SDK Daytona. Se uno di essi non è impostato, l'SDK usa la propria variabile `DAYTONA_API_KEY`, `DAYTONA_API_URL` o `DAYTONA_TARGET`.

## Modalità sandbox diretta (senza tunnel)

La modalità diretta esegue il server Termbridge nel sandbox e salta del tutto Cloudflare. Il link di condivisione URL è il link di anteprima Daytona al server nel sandbox.

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

Per impostazione predefinita, `TERMBRIDGE_SANDBOX_SERVER_PORT` (o `--port`) usa `8080`. La modalità diretta crea un sandbox pubblico, a meno che non imposti `TERMBRIDGE_SANDBOX_PUBLIC=false`; inoltre UI nasconde il selettore di terminale.

Puoi comunque abilitare l'anteprima impostando `TERMBRIDGE_SANDBOX_PREVIEW_PORT`; in modalità diretta viene inoltrato come porta del server `--proxy`.

## Clonazione del repository

Termbridge crea un sandbox e clona il tuo repository nella directory di lavoro del sandbox.

Usa queste impostazioni:

| Variabile | Scopo |
| --- | --- |
| `TERMBRIDGE_SANDBOX_REPO` | URL del repository da clonare (impostarlo sempre, vedere la guida rapida) |
| `TERMBRIDGE_SANDBOX_BRANCH` | Branch da selezionare (facoltativo) |
| `TERMBRIDGE_SANDBOX_PATH` | Percorso del repository nella sandbox (facoltativo) |
| `TERMBRIDGE_SANDBOX_NAME` | Nome della sandbox (facoltativo, predefinito: `termbridge-<random hex>`) |

Se `TERMBRIDGE_SANDBOX_PATH` non è impostata, Termbridge la ricava dal nome del repository.

## Repository privati

Fornite le credenziali git durante la clonazione di repository privati:

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

Anche `TERMBRIDGE_SANDBOX_GIT_PASSWORD` è supportata e, se impostata, sostituisce il token.

## Agenti di programmazione

Termbridge può installare agenti di programmazione nella sandbox e sincronizzare le vostre credenziali locali, così saranno subito pronti.

Consultate la guida [Agenti di programmazione](https://termbridge.inline0.dev/it/docs/sandboxes/coding-agents) per la configurazione completa, la modalità automatica e i dettagli sulla sicurezza.

## Modalità anteprima

Per mostrare la vista di anteprima, impostate `TERMBRIDGE_SANDBOX_PREVIEW_PORT` sulla porta usata dal server di sviluppo nella sandbox.

Per Vite, assicuratevi di associare il server a tutte le interfacce:

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

Termbridge recupera il link di anteprima di Daytona e lo inoltra tramite il server Termbridge, così l'anteprima viene caricata all'interno di UI.

## Sandbox pubbliche e private

| Variabile | Funzione |
| --- | --- |
| `TERMBRIDGE_SANDBOX_PUBLIC=true` | Crea una sandbox pubblica |
| `TERMBRIDGE_SANDBOX_PUBLIC=false` | Crea una sandbox privata |

Se la variabile non è impostata, le sandbox sono private, tranne in modalità diretta, in cui sono pubbliche.

Per le sandbox private, Termbridge inoltra automaticamente il token di anteprima quando inoltra l'anteprima.

## Pulizia e ciclo di vita

Per eliminare le sandbox quando Termbridge termina:

```bash
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

Per sandbox di breve durata o di test, usate un prefisso:

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

Questo mantiene sotto controllo l'uso delle sandbox ed evita problemi con la quota del disco.

## Opzioni di CLI

Potete configurare Daytona anche tramite opzioni. Un'opzione ha la precedenza sulla variabile d'ambiente corrispondente.

| Opzione | Variabile d'ambiente | Scopo |
| --- | --- | --- |
| `--backend sandbox-daytona` | `TERMBRIDGE_BACKEND` | Usa il backend Daytona |
| `--sandbox-repo <url>` | `TERMBRIDGE_SANDBOX_REPO` | Repository URL |
| `--sandbox-branch <branch>` | `TERMBRIDGE_SANDBOX_BRANCH` | Branch |
| `--sandbox-path <path>` | `TERMBRIDGE_SANDBOX_PATH` | Percorso del repository nella sandbox |
| `--sandbox-name <name>` | `TERMBRIDGE_SANDBOX_NAME` | Nome della sandbox |
| `--sandbox-preview-port <port>` | `TERMBRIDGE_SANDBOX_PREVIEW_PORT` | Porta di anteprima |
| `--sandbox-public` | `TERMBRIDGE_SANDBOX_PUBLIC=true` | Crea una sandbox pubblica |
| `--sandbox-direct` | `TERMBRIDGE_SANDBOX_DIRECT=true` | Esegue il server nella sandbox (senza tunnel) |

Non esiste un'opzione per una sandbox privata: usate `TERMBRIDGE_SANDBOX_PUBLIC=false`. L'output integrato di `termbridge --help` mostra comunque nomi `--daytona-*` e `--backend daytona`, che vengono rifiutati ([#1](https://github.com/inline0/termbridge/issues/1)).

## Risoluzione dei problemi

**La vista di anteprima è vuota**
- Assicuratevi che il server di sviluppo sia in esecuzione nella sandbox.
- Usate `--host 0.0.0.0` per rendere raggiungibile la porta di anteprima.
- Verificate che `TERMBRIDGE_SANDBOX_PREVIEW_PORT` corrisponda alla porta del server di sviluppo.

**La creazione della sandbox non riesce a causa di errori di quota**
- Eliminate le sandbox obsolete dal pannello di controllo Daytona.
- Usate `TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true` per le sessioni di breve durata.

**Clonazione del repository non riuscita**
- Verificate repository URL, branch e credenziali.
- Assicuratevi che il token Git abbia accesso in lettura al repository.
