> ## Documentation Index
> Fetch the complete documentation index at: https://arkor-92aeef0e-eng-353.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Studio

> 学習を開始し、ストリームを眺め、完成したモデルとチャットするためのローカル Web UI。

Studio は `arkor dev` 実行時に得られるローカル Web UI です。サインインする別サービスではありません。あなたのマシーン上で起動し、同じ Arkor CLI プロセスと話し、dev サーバーを止めれば消えます。

## Studio の役割

3 つの仕事:

1. **学習を開始する。** "Run training" ボタンが内部で `arkor start` をスポーンし、ジョブをマネージドバックエンドに投入します。`arkor start` は既存の `.arkor/build/index.mjs` 成果物を実行し（無いときだけ自動ビルド）、Studio が成果物を新鮮に保つ仕組みは下記の dev ループのメモを参照してください。
2. **学習を眺める。** ライブステータス付きのジョブ一覧、ストリーム到着とともに更新される Loss チャート、学習イベントのテール。タブで開きっぱなしにして他の作業ができます。
3. **完成モデルを試す。** Playground ページでベースモデルや任意の完了ジョブの最終アダプタを選んでチャットできます。中間チェックポイントは Playground からはロードしません。学習中の推論には [`onCheckpoint`](/ja/concepts/lifecycle) コールバックをトレーナーで使ってください。

dev ループのメモ: Studio の `/api/manifest` エンドポイントはリクエストごとにトレーナーをリビルド・再 import しますが（キャッシュバストクエリ付き、`packages/arkor/src/studio/manifest.ts` を参照）、UI が fetch するのは Run training ページがマウントされたときだけです。`src/arkor/` を編集して同じ Run training ページに留まり続けると、次のクリックは既存の `.arkor/build/index.mjs` を再利用して古いコードで走ります。確実に新しいコードを取り込むには、編集とクリックの間にページをリロード（あるいはターミナルから `pnpm exec arkor build`）してください。

## Studio が動く場所

`arkor dev` を起動すると CLI は次を行います:

1. Hono サーバーを `127.0.0.1:4000` で起動（ポートは `-p` で変更可能）。
2. 同一オリジンで Vite + React の SPA を提供し、UI はループバックの `/api/*` 経由で CLI と話します。
3. 起動ごとに CSRF トークンを発行し（`~/.arkor/studio-token` にモード `0600` で保存）、すべてのリクエストにこのトークンを要求します。

サーバーはループバックにのみバインドし、ループバック以外の `Host` ヘッダーのリクエストは拒否します。公開 URL もインバウンド接続もなく、トークンは `arkor dev` のたびにローテートされます。共有開発マシーンでも学習データを露出する心配なく安全に Studio を動かせます。

## マネージドバックエンドとの関係

Studio はあなたの CLI が何をしているかの画面にすぎません。CLI が認証付き HTTPS でマネージドバックエンドと話し、Studio は CLI に（ループバック越しに）描画する内容を尋ねます。

```
Studio（ブラウザータブ）
   │  ループバック上の /api/*、CSRF トークン必須
   ▼
arkor CLI（あなたのマシーン）
   │  認証付き HTTPS
   ▼
Arkor マネージドバックエンド（学習、推論）
```

この分離があるからこそ、ブラウザーに何もログインしなくても Studio が動きます。CLI は `~/.arkor/credentials.json` で既に認証情報を持っており、Studio はローカルで動いている恩恵でそれを継承します。

`~/.arkor/credentials.json` がない場合の処理はエントリーポイントが決めます。**`arkor dev`** は起動時に匿名セッションをブートストラップし、必要に応じてアップグレードできるよう `arkor login --oauth` を案内する 1 行のヒントを出します。OAuth フローを自動で起動することはありません。例外は初回起動時に `/v1/auth/cli/config` 自体へ到達できないケースで、同じトランスポートエラーが再スローされて `arkor dev` は fail-fast で終了します（具体的な復旧手順は [`arkor dev`](/ja/cli/dev) を参照）。**Studio サーバーの遅延ブートストラップ**（認証情報が無い状態で `/api/*` リクエストが届いたとき）も同じ匿名フォールバックを行います。アカウントセッションを使いたい場合は、Studio をクリックする前（あるいは後）に別途 `arkor login --oauth` を実行してください。認証情報ファイルは共有なので、Studio は次のリクエストでアカウントセッションを拾います。

## 実際に見えるもの

現状のビューはあえて小さく保たれています:

* **Jobs。** ステータス、名前、作成時刻、ID。数秒ごとにポーリング。
* **Job 詳細。** Loss チャート、ログのテール（直近のイベント）、ライブステータス。`Server-Sent Events` 経由でストリームされ、手動リロードなしで最新のままです。
* **Playground。** アダプタセレクタ（ベースモデル or 任意の完了ジョブの最終アダプタ）、チャット UI、ストリーミングレスポンス。呼び出しは CLI を経由して、その先のマネージド推論エンドポイントに届きます。Playground は完了済みジョブだけを並べます。学習中に中間チェックポイントで推論したい場合は、代わりに [`onCheckpoint`](/ja/concepts/lifecycle) コールバックを使ってください。

各ビュー（Run training、Job 詳細、Playground）のウォークスルーは [Studio](/ja/studio/overview) セクションにあります。

## Studio を使うべきでない場面

Studio は開発ツールです。あなたのマシーンで動き、ループバックのみで、`arkor dev` が立ち上がっている間だけ存在します。ファインチューン済みモデルのプロダクション利用では、Studio にユーザーを向けるのではなく、自分のアプリケーションコードから（あるいはサービング層から）`infer` を呼んでください。
