Documentation Index
Fetch the complete documentation index at: https://docs.arkor.ai/llms.txt
Use this file to discover all available pages before exploring further.
Studio
Studio は arkor dev を実行したときに起動するローカル Web UI です。あなたのマシン上で動き、同じ CLI プロセスとループバック越しに話し、dev サーバーを止めれば消えます。サインアップも公開 URL もありません。
http://localhost:4000(arkor dev --port で変更可)で開いてください。
レイアウト
ヘッダには現在の identity が <mode> · <org>[ / <project>][ · <baseUrl-host>] の形で表示されます。mode は anonymous か auth0。クラウド API ホスト suffix は CLI が本番エンドポイントを指しているときは隠され、それ以外で表示されます。
3 ページ、アプリ内ナビで切り替えます:
| ルート | ページ | やること |
|---|
#/ | Home | 学習をトリガーしてジョブ一覧を眺める。 |
#/jobs/:id | Job 詳細 | 1 つのジョブのライブステータス、loss チャート、イベントログ。 |
#/playground | Playground | 完了アダプタやベースモデルとチャット。 |
アーキテクチャ
Studio(ブラウザータブ、http://localhost:4000)
│ ループバック上の /api/*、CSRF トークン必須
▼
arkor CLI(あなたのマシン)
│ 認証付き HTTPS
▼
Arkor マネージドバックエンド
/api/* リクエストごとに 3 つのチェックが走ります:
- Host ヘッダのガード。
127.0.0.1 と localhost のみ受理。127.0.0.1 に DNS リバインディングされる悪意あるサイトに誘導された被害者でも、送信されるのは Host: evil.com で、ミドルウェアは HTTP 403 で拒否します。
- 起動ごとの CSRF トークン。
arkor dev は起動ごとに 32 バイトのトークン(base64url)を生成し、<meta name="arkor-studio-token"> として index.html にインジェクトし、すべての /api/* 呼び出しに必須化します(ヘッダ X-Arkor-Studio-Token、または EventSource リクエスト用に ?studioToken=)。クロスオリジンタブは meta を読めないので、preflight をスキップする「simple」なクロスオリジン POST も拒否されます。比較は timingSafeEqual。
- CORS なし。 SPA は同一オリジンなので CORS は価値を加えません。
* を反射すると「simple」なクロスオリジン POST(text/plain、urlencoded)を素通りさせてしまうので、トークンチェックがそれを拒否します。
トークンは arkor dev 起動のたびにローテートされるので、前回起動時の古いタブはリロードするまで HTTP 403 で失敗します。
今日できること
| 機能 | 補足 |
|---|
| Run training | Home ページのボタン。POST /api/train を呼ぶと arkor start がスポーンされ、stdout/stderr が生のテキストとしてページにストリームされます。 |
| Jobs リスト | Home ページ。固定 5 秒間隔でポーリング。列: Status、Name(詳細へリンク)、Created、ID。 |
| Job 詳細 | ライブステータスバッジ、SVG の loss チャート、生イベントログ(直近 50 行)。Server-Sent Events 経由で /api/jobs/:id/events からストリーム。 |
| Playground | #/playground のチャット UI。2 モード: 1 つの対応ベースモデル、または任意の完了ジョブの最終アダプタ。 |
まだないもの
これらは SDK や HTTP API レベルでは存在しますが、Studio UI としては今のところありません:
| 不足 UI | 回避策 |
|---|
| 動作中ジョブのキャンセル / 一時停止 | 自前コードから trainer.cancel() を呼ぶ。 |
| Playground での中間チェックポイントアダプタ選択 | トレーナー内で onCheckpoint({ infer }) を使う。SDK の infer は今しがた保存されたチェックポイントに紐づく。 |
| Jobs リストのフィルタ/検索/ページング | 今日のポーリング一覧ビューでは対象外。 |
| プロジェクトごとの複数トレーナー | /api/manifest が単一の trainer を返す。SDK の createArkor も 1 つしか受け付けない。 |
Playground から temperature / topP / maxTokens を調整 | HTTP API(InferArgs)はこれらを受け付ける。SDK から infer を呼ぶ際に渡してください。 |
| loss チャートのズーム、エクスポート、ツールチップ | チャートは静的な SVG パス。 |
| ライトモード切替 | Studio CSS は color-scheme: dark に固定。 |
Studio を使うべきでない場面
Studio は開発ツールです。ループバックでのみ、arkor dev が立ち上がっている間だけリッスンし、起動ごとに CSRF トークンをローテートします。プロダクション利用では Studio にユーザーを向けるのではなく、自前のアプリケーションコード(あるいは出荷するサービング層)から infer を呼んでください。