[](https://discord.gg/VEhNQXxYMB)
[English](../README.md) | 日本語 | [他の翻訳README](./README.md)
# OpenWork
> OpenWorkは、Claude Cowork/Codex(デスクトップアプリ)のオープンソース代替です。
## 基本理念
- ローカルファースト、クラウド対応: OpenWorkはワンクリックであなたのマシン上で動作します。メッセージを即座に送信できます。
- コンポーザブル: デスクトップアプリ、WhatsApp/Slack/Telegramコネクタ、またはサーバー。用途に合ったものを使えます。ロックインなし。
- エジェクタブル: OpenWorkはOpenCodeで動いているため、OpenCodeでできることはすべてOpenWorkでも動作します(UIがなくても)。
- シェアリング・イズ・ケアリング: localhostでソロ作業を始め、必要に応じてリモート共有を明示的にオプトインできます。
OpenWorkは、エージェントワークフローを再現可能なプロダクト化されたプロセスとして簡単にリリースできるように設計されています。
## 代替UI
- **OpenWork Orchestrator(CLIホスト)**: デスクトップUIなしでOpenCode + OpenWorkサーバーを実行します。
- インストール: `npm install -g openwork-orchestrator`
- 実行: `openwork start --workspace /path/to/workspace --approval auto`
- ドキュメント: [apps/orchestrator/README.md](../apps/orchestrator/README.md)
## クイックスタート
デスクトップアプリを[openworklabs.com/download](https://openworklabs.com/download)からダウンロードするか、最新の[GitHubリリース](https://github.com/different-ai/openwork/releases)を取得するか、以下の手順でソースからインストールしてください。
- macOSおよびLinux向けのダウンロードが直接利用可能です。
- Windowsへのアクセスは現在、[openworklabs.com/pricing#windows-support](https://openworklabs.com/pricing#windows-support)の有料サポートプランで提供されています。
- ホステッドOpenWork Cloudワーカーは、チェックアウト後にWebアプリから起動し、デスクトップアプリから`Add a worker` -> `Connect remote`で接続します。
## なぜOpenWorkか
現在のOpenCode向けCLIやGUIは開発者を中心に設計されています。つまり、ファイルの差分、ツール名、そしてCLIを公開しなければ拡張が難しい機能に焦点が当てられています。
OpenWorkは以下を目指して設計されています:
- **拡張可能**: スキルとOpenCodeプラグインはインストール可能なモジュールです。
- **監査可能**: 何が、いつ、なぜ起きたかを表示します。
- **権限管理**: 特権フローへのアクセスを制御します。
- **ローカル/リモート**: OpenWorkはローカルでもリモートサーバーへの接続でも動作します。
## 含まれる機能
- **ホストモード**: ローカルコンピュータ上でOpenCodeを実行します。
- **クライアントモード**: URLで既存のOpenCodeサーバーに接続します。
- **セッション**: セッションの作成/選択とプロンプトの送信。
- **ライブストリーミング**: SSE `/event` サブスクリプションによるリアルタイム更新。
- **実行計画**: OpenCodeのTodoをタイムラインとして表示。
- **権限**: 権限リクエストを表示し、応答(一度許可 / 常に許可 / 拒否)。
- **テンプレート**: 一般的なワークフローを保存して再実行(ローカル保存)。
- **デバッグエクスポート**: バグ報告時に、設定 -> デバッグからランタイムデバッグレポートと開発者ログストリームをコピーまたはエクスポート。
- **スキルマネージャー**:
- インストール済みの `.opencode/skills` フォルダを一覧表示
- ローカルのスキルフォルダを `.opencode/skills/` にインポート
## スキルマネージャー
## ローカルコンピュータまたはサーバーで動作
## クイックスタート
### 必要要件
- Node.js + `pnpm`
- Rustツールチェーン(Tauri用): `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh` でインストール
- Tauri CLI: `cargo install tauri-cli`
- OpenCode CLIがPATH上にインストールされていること: `opencode`
### ローカル開発の前提条件(デスクトップ)
`pnpm dev` を実行する前に、以下がシェルにインストールされ有効になっていることを確認してください:
- Node + pnpm(リポジトリは `pnpm@10.27.0` を使用)
- **Bun 1.3.9+**(`bun --version`)
- Rustツールチェーン(Tauri用)、現在の `rustup` stableからのCargo(`Cargo.lock` v4対応)
- Xcode Command Line Tools(macOS)
- Linux環境では、`pkg-config` が `webkit2gtk-4.1` と `javascriptcoregtk-4.1` を解決できるようにWebKitGTK 4.1開発パッケージが必要
### 1分間の動作確認
リポジトリルートから実行:
```bash
git checkout dev
git pull --ff-only origin dev
pnpm install --frozen-lockfile
which bun
bun --version
pnpm --filter @openwork/desktop exec tauri --version
```
### インストール
```bash
pnpm install
```
OpenWorkは現在 `apps/app`(UI)と `apps/desktop`(デスクトップシェル)に配置されています。
### 実行(デスクトップ)
```bash
pnpm dev
```
`pnpm dev` は自動的に `OPENWORK_DEV_MODE=1` を有効にするため、デスクトップ開発では個人のグローバル設定/認証/データの代わりに分離されたOpenCode状態を使用します。
### 実行(Web UIのみ)
```bash
pnpm dev:ui
```
リポジトリのすべての `dev` エントリポイントは同じ開発モード分離にオプトインするため、ローカルテストでは一貫してOpenWork管理のOpenCode状態を使用します。
### Archユーザー向け:
```bash
sudo pacman -S --needed webkit2gtk-4.1
curl -fsSL https://opencode.ai/install | bash -s -- --version "$(node -e "const fs=require('fs'); const parsed=JSON.parse(fs.readFileSync('constants.json','utf8')); process.stdout.write(String(parsed.opencodeVersion||'').trim().replace(/^v/,''));")" --no-modify-path
```
## アーキテクチャ(概要)
- **ホストモード**では、OpenWorkはローカルホストスタックを実行し、UIをそれに接続します。
- デフォルトランタイム: `openwork`(`openwork-orchestrator` からインストール)。`opencode`、`openwork-server`、およびオプションで `opencode-router` をオーケストレーションします。
- フォールバックランタイム: `direct`。デスクトップアプリが直接 `opencode serve --hostname 127.0.0.1 --port ` を起動します。
プロジェクトフォルダを選択すると、OpenWorkはそのフォルダを使用してローカルでホストスタックを実行し、デスクトップUIを接続します。
これにより、リモートサーバーなしで完全にマシン上でエージェントワークフローの実行、プロンプトの送信、進捗の確認が可能です。
- UIは `@opencode-ai/sdk/v2/client` を使用して:
- サーバーに接続
- セッションの一覧表示/作成
- プロンプトの送信
- SSEイベントのサブスクライブ(サーバーからUIへのリアルタイム更新のストリーミングにServer-Sent Eventsを使用)
- Todoと権限リクエストの読み取り
## フォルダピッカー
フォルダピッカーはTauriダイアログプラグインを使用します。
ケイパビリティの権限は以下で定義されています:
- `apps/desktop/src-tauri/capabilities/default.json`
## OpenCodeプラグイン
プラグインはOpenCodeを拡張する**ネイティブ**な方法です。OpenWorkはスキルタブから `opencode.json` を読み書きして管理します。
- **プロジェクトスコープ**: `/opencode.json`
- **グローバルスコープ**: `~/.config/opencode/opencode.json`(または `$XDG_CONFIG_HOME/opencode/opencode.json`)
`opencode.json` を手動で編集することもできます。OpenWorkはOpenCode CLIと同じ形式を使用します:
```json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-wakatime"]
}
```
## 便利なコマンド
```bash
pnpm dev
pnpm dev:ui
pnpm typecheck
pnpm build
pnpm build:ui
pnpm test:e2e
```
## トラブルシューティング
デスクトップやセッションのバグを報告する必要がある場合は、Issueを作成する前に設定 -> デバッグからランタイムデバッグレポートと開発者ログの両方をエクスポートしてください。
### Linux / Wayland(Hyprland)
OpenWorkがWebKitGTKエラー(`Failed to create GBM buffer` など)で起動時にクラッシュする場合は、起動前にdmabufまたはコンポジティングを無効にしてください。以下のいずれかの環境変数フラグを試してください。
```bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 openwork
```
```bash
WEBKIT_DISABLE_COMPOSITING_MODE=1 openwork
```
## セキュリティに関する注意
- OpenWorkはデフォルトでモデルの推論と機密ツールメタデータを非表示にします。
- ホストモードはデフォルトで `127.0.0.1` にバインドします。
## コントリビューション
- 変更を行う前に、`AGENTS.md`、`VISION.md`、`PRINCIPLES.md`、`PRODUCT.md`、`ARCHITECTURE.md` を確認してプロダクトの目標を理解してください。
- リポジトリ内で作業する前に、Node.js、`pnpm`、Rustツールチェーン、および `opencode` がインストールされていることを確認してください。
- チェックアウトごとに `pnpm install` を実行し、PRを作成する前に `pnpm typecheck` と `pnpm test:e2e`(または対象のスクリプトサブセット)で変更を検証してください。
- PRを作成する際は `.github/pull_request_template.md` を使用し、実行したコマンド、結果、手動検証手順、およびエビデンスを含めてください。
- CIが失敗した場合は、PRの本文でコード関連のリグレッションか外部/環境/認証のブロッカーかを分類してください。
- 新しいPRDは `AGENTS.md` に記載されている `.opencode/skills/prd-conventions/SKILL.md` の規約に従い、`apps/app/pr/.md` に追加してください。
コミュニティドキュメント:
- `CODE_OF_CONDUCT.md`
- `SECURITY.md`
- `SUPPORT.md`
- `TRIAGE.md`
初回コントリビューションチェックリスト:
- [ ] `pnpm install` とベースライン検証コマンドを実行する。
- [ ] 変更に明確なIssueリンクとスコープがあることを確認する。
- [ ] 動作変更に対してテストを追加/更新する。
- [ ] PRに実行したコマンドと結果を含める。
- [ ] ユーザー向けフロー変更のスクリーンショット/動画を追加する。
## チーム・企業向け
組織でのOpenWork利用に興味がありますか?ぜひお聞かせください — [ben@openworklabs.com](mailto:ben@openworklabs.com) までユースケースについてご連絡ください。
## ライセンス
MIT — `LICENSE` をご確認ください。