
# CLI リファレンス

## 基本的な使い方

コマンドを実行するだけです。引数は必要ありません:

```bash
npx termbridge
```

これにより、ローカルサーバー、tmuxセッション、デフォルトのCloudflareトンネルがすべて起動します。

サブコマンドを指定せずに`termbridge`を実行するのは、`termbridge start`と同じです。

すべてのフラグを指定して、`termbridge start`を明示的に実行することもできます:

```bash
termbridge start --port 8080 --proxy 5173 --session dev --kill-on-exit --no-qr --tunnel cloudflare
```

## フラグ

| フラグ | 機能 | デフォルト |
|------|--------------|---------|
| `--port <port>` | ランダムポートの代わりに指定したポートを使用 | ランダム |
| `--proxy <port>` | ローカル開発サーバーをプロキシ（Terminal/Previewビューを有効化） | - |
| `--session <name>` | tmuxセッションに名前を付ける | 自動生成 |
| `--kill-on-exit` | Termbridgeの終了時にtmuxセッションをクリーンアップ | オフ |
| `--no-qr` | QRコードを出力しない（スクリプト向け） | オフ |
| `--no-tunnel` | トンネルを無効化（`--public-url`が必要） | オフ |
| `--public-url <url>` | トンネル無効時のパブリックURL | - |
| `--tunnel <provider>` | トンネルプロバイダー（`cloudflare`または`none`） | cloudflare |
| `--tunnel-token <token>` | 名前付きCloudflare Tunnelトークンを使用（`--port`が必要） | - |
| `--tunnel-url <url>` | 名前付きトンネルのパブリックURL（`--tunnel-token`と併用必須） | - |
| `--backend <backend>` | ターミナルバックエンド（`tmux`または`sandbox-daytona`） | tmux |
| `--sandbox-repo <url>` | DaytonaサンドボックスにクローンするリポジトリのURL | - |
| `--sandbox-branch <branch>` | サンドボックスでチェックアウトするブランチ | - |
| `--sandbox-path <path>` | サンドボックス内のリポジトリパス | リポジトリ名から生成 |
| `--sandbox-name <name>` | サンドボックス名 | ランダムな`termbridge-<hex>` |
| `--sandbox-preview-port <port>` | サンドボックスのプレビューポート | - |
| `--sandbox-public` | パブリックサンドボックスを作成 | オフ（直接モードではオン） |
| `--sandbox-direct` | Daytonaサンドボックス内でサーバーを実行（トンネルなし） | オフ |
| `--dev-proxy-url <url>` | プレビュー通信を`localhost:<proxy port>`の代わりにこのURLへ転送（開発スクリプトで使用） | - |
| `-h`、`--help` | ヘルプを表示 | - |

その他のオプションはすべて`unknown option: <flag>`で失敗します。`--version`フラグはありません。

フラグは対応する環境変数より優先されます。ただし例外として、現在`TERMBRIDGE_TUNNEL`は`--tunnel`と`--no-tunnel`を優先します（[#5](https://github.com/inline0/termbridge/issues/5)）。

> **注意**
> 組み込みの`termbridge --help`出力には、現在も`--daytona-*`フラグと`--backend tmux | daytona`が表示されます。これらの名前は拒否されるため、上の表にある`--sandbox-*`フラグと`--backend sandbox-daytona`を使ってください（[#1](https://github.com/inline0/termbridge/issues/1)）。

## 例

### 既存のtmuxセッションに接続する

すでにtmuxセッションが実行中の場合:

```bash
termbridge --session my-session
```

### 固定ポートとカスタムセッション

```bash
termbridge --port 8080 --session codex
```

### セッションを残さず終了する

```bash
termbridge --kill-on-exit
```

### スクリプトでの使用（QR出力なし）

```bash
termbridge --no-qr
```

### Vite開発サーバーをプロキシする

```bash
# Start your Vite app first
cd my-app && npm run dev  # runs on port 5173

# Then start Termbridge with proxy
termbridge --proxy 5173
```

**Views**ボタンでTerminalとPreviewを切り替えます。PreviewはHMR対応のプロキシ経由でアプリを読み込みます。

### 名前付きCloudflareトンネル（トークン方式）

Cloudflareアカウントがあり、trycloudflareのレート制限を避けたい場合:

```bash
termbridge --port 8080 --tunnel-token <TOKEN> --tunnel-url https://term.example.com
```

### トンネルを無効にする（独自のパブリックURLを使用）

```bash
termbridge --no-tunnel --public-url https://example.com
```

## 環境変数

Termbridgeはシェルから環境変数を読み込み、実行ディレクトリ内の`.env`ファイルからも読み込みます。シェルですでに設定されている変数は、`.env`ファイルより優先されます。

### 基本設定

| 変数 | 機能 |
|----------|--------------|
| `TERMBRIDGE_SESSIONS=2` | 起動時に複数のtmuxセッションを作成 |
| `TERMBRIDGE_TMUX_CWD=/path` | 新しいtmuxセッションの作業ディレクトリ |
| `TERMBRIDGE_PUBLIC_URL=https://example.com` | トンネル無効時のパブリックURL |
| `TERMBRIDGE_TUNNEL=none` | トンネルを無効化 |
| `TERMBRIDGE_TUNNEL_TOKEN=<token>` | 名前付きトンネルのトークン（`TERMBRIDGE_TUNNEL_URL`が必要） |
| `TERMBRIDGE_TUNNEL_URL=https://term.example.com` | 名前付きトンネルのパブリックURL |

### 詳細設定

Daytona直接モードでは、サンドボックス内で実行するサーバーにこれらを設定します。自分で設定することもできます。

| 変数 | 機能 |
|----------|--------------|
| `TERMBRIDGE_HOST=0.0.0.0` | サーバーがバインドするアドレス（デフォルトは `127.0.0.1`）。表示されるローカル URL には常に `127.0.0.1` が表示されます。 |
| `TERMBRIDGE_COOKIE_SAMESITE=lax` | セッションCookieの `SameSite` 値：`lax`、`strict`、または `none`（デフォルトは `Lax`、ダイレクトモードでは `None`） |
| `TERMBRIDGE_SHARE_FILE=/path/share-url.txt` | 共有 URL もこのファイルに書き込みます |
| `TERMBRIDGE_HIDE_TERMINAL_SWITCHER=1` | UI のターミナル切り替えメニューを非表示にします |
| `TERMBRIDGE_TMUX_PATH_PREFIX=/path/bin` | Termbridge が起動または接続する各tmuxセッションで、`PATH` の前に追加します（`export` コマンドとしてセッションに入力されます） |

### 開発

| 変数 | 機能 |
|----------|--------------|
| `TERMBRIDGE_INSECURE_COOKIE=1` | HTTP Cookieを許可します（ローカル開発のみ） |
| `TERMBRIDGE_PROXY_PORT=5173` | dev:beam:proxy スクリプト用のプロキシポート |
| `TERMBRIDGE_DEV_UI=http://127.0.0.1:5000` | Vite開発 UI URL を上書きします |
| `TERMBRIDGE_DEV_PORT=3000` | 開発時の Termbridge サーバーポートを上書きします（デフォルトは `8787`） |
| `TERMBRIDGE_DEV_SESSION=codex` | `dev:beam` のtmuxセッション名（デフォルトは `codex`） |
| `TERMBRIDGE_SKIP_BUILD=1` | `dev:beam` で CLI ビルドをスキップします |

### サンドボックス（Daytona）

| 変数 | 機能 |
|----------|--------------|
| `TERMBRIDGE_BACKEND=sandbox-daytona` | Daytonaサンドボックスのバックエンドを使用します |
| `TERMBRIDGE_SANDBOX_DIRECT=true` | サンドボックス内で Termbridge を実行します |
| `TERMBRIDGE_SANDBOX_SERVER_PORT=8080` | サンドボックス内サーバーのポート |
| `TERMBRIDGE_SANDBOX_AGENTS=claude-code,codex` | エージェント向けのインストールと認証情報の同期を自動で行います |
| `TERMBRIDGE_SANDBOX_AGENT_ENV=...` | 転送する追加の環境変数 |
| `TERMBRIDGE_SANDBOX_AGENT_AUTH_PATHS=...` | 同期するローカル認証ファイル |

Daytonaの設定全般については、[Daytonaガイド](https://termbridge.inline0.dev/ja/docs/sandboxes/daytona)を参照してください。

## Termbridge の停止

Termbridge の実行中に、ターミナルで `Ctrl+C` を押します。次の処理が行われます。

- トンネルを閉じます（有効な場合）
- ローカルサーバーを停止します
- tmuxセッションは維持されます（`--kill-on-exit` を使用した場合を除く）

デフォルトではtmuxセッションが維持されるため、後から再接続できます。
