複数のClaude Codeセッションを、ひとつのWebUIから。
Warning
このプロジェクトは実験的なものです。Cloudflare Tunnelなどを利用してリモートからアクセスする場合は、セキュリティに十分注意してください。信頼できないネットワーク上での公開は推奨しません。
Claude Codeで本格的に開発を始めると、すぐにターミナルのタブが爆発する。
worktreeごとにClaude Codeを起動して、featureブランチ用、bugfix用、実験用...と増えていく。どのタブでどのセッションが動いているか見失い、外出先からは進捗すら確認できない。サーバーを再起動すればセッションは消え、コンテキストも失われる。
Arkは、そういった問題をまとめて解決する。ブラウザを開けば、すべてのセッションが一覧でき、どこからでも操作できる。
- セッション管理 -- worktreeごとにClaude Codeセッションを起動・停止。サーバー再起動後も自動復元
- ブラウザ操作 -- Webターミナルから直接Claude Codeを操作。ローカルにターミナルを開く必要なし
- マルチペイン -- 最大4つのセッションを同時に表示・監視(PC)
- モバイル対応 -- スマホからフル操作可能。IME / 日本語入力にも対応
- リモートアクセス -- Cloudflare Tunnelで外出先からセッションにアクセス。QRコードですぐ接続
- Git Worktree統合 -- WebUIからworktreeの作成・削除・一覧表示
- Beacon(AIアシスタント) -- Agent SDKベースのチャットUIで、「進捗確認」「タスク着手」「判断」などの高レベル操作を自然言語で実行。MCPツール経由でセッション管理やGitHub操作を自動化
- 画像送信 -- クリップボードから画像をペーストしてClaude Codeに送信(
@パス形式)
Arkは、Agent SDKではなく tmux + ttyd によるターミナル転送方式 を採用している。これにより、Claude CLIのフルターミナル体験をブラウザ上でそのまま再現できる。
ブラウザ(iframe) ←→ ttyd(WebSocket) ←→ tmux(セッション) ←→ claude CLI
- tmux がClaude CLIプロセスをdetachedセッションで管理し、サーバー再起動後もセッションが永続化される
- ttyd がtmuxセッションにWebターミナルアクセスを提供し、各セッションに独立したttydプロセスが起動する
- Beacon は別レイヤーとして、Agent SDKベースのチャットUIを提供する。ターミナル操作ではなく、自然言語による高レベルな指示に特化している
Homebrew Cask:
brew install --cask ignission/tap/arkまたは GitHub Releases から直接ダウンロード: https://github.com/ignission/claude-code-ark/releases
要件: macOS 12 (Monterey) 以降、arm64 (Apple Silicon)。Cask の depends_on macos: ">= :monterey" に合わせており、これ未満は未検証です。
現在の .app は Developer ID 署名・Apple notarization が未対応 (追跡 issue: #193)。
このため macOS は Homebrew 経由でダウンロードした .app を quarantine 対象として "damaged" 判定します。
Caution
以下の手順は Gatekeeper の検証を意図的に迂回します。実行前に 入手元が正規であること を必ず確認してください:
- 配布元が
https://github.com/ignission/claude-code-ark/releasesであること - Homebrew Cask 経由でインストールした場合、
brewが.zipの sha256 を Cask 定義 (Casks/ark.rb) と自動照合しているため、改ざんは検知されています - 直接ダウンロードした場合は GitHub Releases ページ掲載の sha256 と
shasum -a 256 Ark-*.zip出力を手元で比較してください
署名対応完了までは、上記 CAUTION の真正性確認 (Cask 経由なら自動 sha256 照合済み、それ以外なら手動照合) を済ませた上で、インストール後に quarantine 属性を手動で削除してください:
# Cask の install 先 (/Applications/Ark.app) 前提。別パスにある場合は読み替え。
APP="/Applications/Ark.app"
if [ ! -d "$APP" ]; then
echo "ERROR: $APP が見つかりません。インストール先を確認してください。" >&2
exit 1
fi
xattr -dr com.apple.quarantine "$APP"Note
Homebrew 4.5 で --no-quarantine switch および HOMEBREW_CASK_OPTS=--no-quarantine 環境変数が 代替なしで廃止 されたため、現状 install 時点での回避はできません。xattr -dr で事後削除する手順のみが残された対処です。
参考: Homebrew/brew#19046
git clone https://github.com/ignission/claude-code-ark.git
cd claude-code-ark
pnpm install
pnpm build
pnpm startブラウザで http://localhost:4001 を開く。
| オプション | 説明 |
|---|---|
--skip-permissions |
Claude CLIの権限確認をスキップ |
--repos /path1,/path2 |
許可するリポジトリパスを制限 |
--quick / -q |
Quick Tunnel(一時URL + トークン認証)を起動 |
--remote / -r |
Named Tunnel(固定URL + Cloudflare Access)を起動 |
| 環境変数 | 説明 |
|---|---|
PORT |
サーバーポート(デフォルト: 4001) |
SKIP_PERMISSIONS |
true で権限確認スキップ |
ARK_PUBLIC_DOMAIN |
Named Tunnel用の固定ドメイン |
ARK_TUNNEL_NAME |
Named Tunnel名(デフォルト: claude-code-ark) |
cloudflared をインストールした上で、Quick Tunnelを使う場合:
pnpm start:quick起動後、ターミナルにQRコードと一時URL(*.trycloudflare.com)が表示される。トークン認証付き。
固定ドメインを使いたい場合は、環境変数 ARK_PUBLIC_DOMAIN を設定して pnpm start:remote で起動する。
| コマンド | 説明 |
|---|---|
pnpm dev |
フロントエンド開発サーバー |
pnpm dev:server |
バックエンド開発サーバー |
pnpm dev:full |
フルスタック開発 |
pnpm dev:quick |
Quick Tunnel付き開発 |
pnpm build |
本番ビルド |
pnpm start |
本番起動 |
pnpm check |
型チェック |
MIT