Clawork は、Rust + Tauri で構築したローカル優先のデスクトップ AI エージェントです。
Cowork 系の安全制御と OpenClaw 系の常駐自動化を両立しつつ、Operator セッションで「計画 → 承認 → 実行」を追跡できます。
- Sandbox/Elevated の二段階権限(承認トークン付き)
- ローカル制御 API(
X-Clawork-Token必須) - CLI / GUI / Local API の共通ロジック
- WASM スキル実行(WASI + JSON stdin/stdout)
- MCP ツール呼び出し(stdio セッション)
- メモリ保存・検索(埋め込み + LIKE フォールバック)
- Daily Briefing / proactive suggestions
- Telegram / WhatsApp 送受信経路(Webhook + polling)
- Operator Cockpit(セッション、タイムライン、承認キュー、定期タスク)
- Domain Policy(ドメイン単位の action 制御)
- Connector OAuth 状態管理(Workspace Pack の土台)
apps/desktop/src-tauri: デスクトップ backend(Tauri + Local API)apps/desktop/ui: Svelte 5 ダッシュボードbin/clawork-cli: CLI クライアントcrates/clawork-core: 共通型/traitcrates/clawork-capabilities: 権限エンジンcrates/clawork-daemon: heartbeat / croncrates/clawork-skills: WASM スキルランタイムcrates/clawork-operator: Operator DB / セッション / 承認 / タスク / policy / connectorcrates/clawork-*: adapters, memory, audit, mcp, llm, fs, browser, office
デフォルト: http://127.0.0.1:4747
必須ヘッダ:
X-Clawork-Token: <data/cli.token の値>
GET /v1/statusGET /v1/tasksPOST /v1/actions/approvePOST /v1/auth/token/issuePOST /v1/auth/token/revokePOST /v1/auth/token/rotatePOST /v1/skills/runPOST /v1/messages/sendGET /v1/messages/inboundGET /v1/mail/inbox/unrepliedPOST /v1/research/jobsGET /v1/research/jobs/{id}GET /v1/research/jobs/{id}/reportPOST /v1/media/imagePOST /v1/media/videoPOST /v1/fs/operatePOST /v1/mcp/callPOST /v1/browser/navigatePOST /v1/office/excelPOST /v1/office/uploadPOST /v1/memory/storeGET /v1/memory/recentPOST /v1/memory/searchGET /v1/briefingGET /v1/suggestions
/v1/status には init_errors(audit / memory / operator などの初期化失敗理由)が含まれます。
POST /v1/operator/sessionsGET /v1/operator/sessionsGET /v1/operator/sessions/{id}POST /v1/operator/sessions/{id}/planPOST /v1/operator/sessions/{id}/runGET /v1/operator/sessions/{id}/timelineGET /v1/operator/approvals/pendingPOST /v1/operator/actions/{id}/approvePOST /v1/operator/actions/{id}/rejectPOST /v1/operator/tasksGET /v1/operator/tasksPOST /v1/operator/tasks/{id}/run-nowPOST /v1/operator/projectsGET /v1/operator/projectsGET /v1/operator/projects/{id}/artifactsPOST /v1/connectors/{provider}/oauth/startPOST /v1/connectors/{provider}/oauth/callbackGET /v1/connectors/statusPOST /v1/connectors/google/sheets/appendPOST /v1/connectors/google/drive/createPOST /v1/connectors/notion/searchPOST /v1/connectors/notion/page/createPOST /v1/connectors/slack/postPOST /v1/connectors/slack/historyPOST /v1/policies/domainGET /v1/policies/domain
clawork status
clawork ask "statusを表示して"
clawork ask "fs write data/note.txt :: 今日のメモを保存して"
clawork ask "briefingを見せて"
clawork ask "search rust tauri mcp"
clawork ask "browse openai.com"
clawork ask "workspaceの接続状況を確認して"
clawork ask "artifact 今週のメモ :: - done: ci stabilized"
clawork ask "llm このプロジェクトの次の改善点を3つ提案して"
clawork ask "send telegram 123456 :: 進捗を送って" --dry-run
clawork ops health
clawork approve confirm-xxxx
clawork token issue --ttl-seconds 3600
clawork token revoke <token>
clawork token rotate
clawork skill list
clawork skill run echo '{"text":"hello"}'
clawork operator session create "Workspace follow-up" "Summarize pending work"
clawork operator session list
clawork operator session plan <session-id> '["Collect context","Draft actions","Wait approval"]'
clawork operator session run <session-id>
clawork operator session timeline <session-id>
clawork operator approvals list
clawork operator approvals approve <action-id>
clawork operator task create "Morning check" "0 */30 * * * * *" "Generate short briefing"
clawork operator task list
clawork operator project create "RAG Validation" --description "chunking + retrieval quality"
clawork operator project list
clawork operator project artifacts <project-id>
clawork connectors status
clawork connectors auth google
clawork connectors google-sheets-append <spreadsheet_id> '[[\"url\",\"score\",\"cost\"]]' --sheet-name Sheet1 --value-input-option USER_ENTERED
clawork connectors google-drive-create "weekly-report.txt" "hello from clawork" --mime-type text/plain
clawork connectors auth notion
clawork connectors notion-search "RAG"
clawork connectors notion-page-create "Weekly Notes" --content "decisions and follow-ups"
clawork connectors auth slack
clawork connectors slack-post C123456 "daily standup summary"
clawork connectors slack-history C123456 --limit 20
clawork mail unreplied 10
clawork research create "Compare RAG chunking strategies" '[\"https://example.com/a\",\"https://example.com/b\"]' --title "RAG chunking review" --project-id <project-id>
clawork research show <job-id>
clawork research report <job-id>
clawork media image "cinematic product photo, soft light" --provider openai --model gpt-image-1 --size 1024x1024 --project-id <project-id>
clawork media video "camera dolly through modern office" --provider sora --seconds 12 --project-id <project-id>
clawork mcp connector.notion.search '{"query":"RAG","page_size":10}' --route local
clawork mcp connector.slack.post '{"channel":"C123456","text":"from mcp local route"}' --route local
clawork mcp tools/list '{}' --route remote
clawork policy domain set example.com low "network_call,message_send" ""
clawork policy domain listresearch create と media image/video に --project-id を指定すると、生成物が project_artifacts に citation 付きで自動登録されます。
mcp は --route local|remote を指定できます。remote は CLAWORK_REMOTE_MCP_URL が必要です。
ask は自然言語から実行計画を作って操作します。CLAWORK_OPENAI_API_KEY があれば LLM 計画、未設定時はルールベース計画にフォールバックします。
mcp --route remote のレスポンス契約は固定です:
{
"ok": true,
"payload": { "...": "..." },
"error": null
}この形以外は validation_error になります。
token rotate は既存トークンを失効し、新しいトークンを data/cli.token に保存します。token issue は期限付きトークン発行(デフォルト1時間)です。
CLAWORK_LOCAL_API_ADDR(例:127.0.0.1:4747)CLAWORK_CLI_TOKEN/CLAWORK_CLI_TOKEN_FILECLAWORK_ALLOWED_PATHSCLAWORK_MCP_COMMAND,CLAWORK_MCP_ARGSCLAWORK_REMOTE_MCP_URL(clawork mcp --route remote用)CLAWORK_OPENAI_API_KEY,CLAWORK_OPENAI_EMBEDDING_MODELCLAWORK_TELEGRAM_BOT_TOKENCLAWORK_TELEGRAM_WEBHOOK_SECRETCLAWORK_WHATSAPP_ACCESS_TOKEN,CLAWORK_WHATSAPP_PHONE_IDCLAWORK_WHATSAPP_VERIFY_TOKEN,CLAWORK_WHATSAPP_APP_SECRETCLAWORK_SLACK_WEBHOOK_URL(Slack 送信)CLAWORK_SLACK_BOT_TOKEN,CLAWORK_SLACK_POLL_CHANNELS(Slack 受信)CLAWORK_GOOGLE_ACCESS_TOKEN(Google API 直接利用する場合の上書き)CLAWORK_NOTION_ACCESS_TOKEN,CLAWORK_NOTION_VERSIONCLAWORK_MEDIA_IMAGE_ENDPOINT,CLAWORK_MEDIA_VIDEO_ENDPOINTCLAWORK_MEDIA_ENDPOINT_<PROVIDER>_IMAGE,CLAWORK_MEDIA_ENDPOINT_<PROVIDER>_VIDEOCLAWORK_MEDIA_API_KEY,CLAWORK_MEDIA_API_KEY_<PROVIDER>CLAWORK_ENABLE_IMESSAGE(macOS のみ)CLAWORK_INBOUND_AUTORUN(1/trueで受信チャット自動実行)CLAWORK_INBOUND_REPLY(1/trueでチャットへ実行結果返信)CLAWORK_INBOUND_AUTO_ELEVATE_TTL_SECONDS(自動実行時に Elevated を有効化する秒数)CLAWORK_OPENAI_MODEL_PLANNING(自然言語計画用モデル上書き)CLAWORK_OPENAI_MODEL_PROMPT(llm_prompt用モデル上書き)
- 受信経路(Webhook または poll)を設定
- 自動実行を有効化
$env:CLAWORK_INBOUND_AUTORUN="1"
$env:CLAWORK_INBOUND_REPLY="1"
# 危険操作も自動実行したい場合のみ(任意)
$env:CLAWORK_INBOUND_AUTO_ELEVATE_TTL_SECONDS="1800"- チャットで
claworkまたは/claworkプレフィックス付きで送信
例:
clawork status/clawork briefingを見せてclawork fs write data/note.txt :: これはチャットからのメモclawork search rust async runtimeclawork browse github.comclawork artifact 週次サマリ :: 今週の実施事項
CLAWORK_REPO に実リポジトリ(owner/repo)を指定して実行します。
Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/<owner>/<repo>/main/scripts/install.sh | CLAWORK_REPO=<owner/repo> bashWindows (PowerShell):
iwr https://raw.githubusercontent.com/<owner>/<repo>/main/scripts/install.ps1 -UseBasicParsing | iex
# 事前に: $env:CLAWORK_REPO="<owner/repo>"installer は release asset の *.sha256 を検証します。検証を無効化する場合のみ
CLAWORK_SKIP_CHECKSUM=1 を指定してください(非推奨)。
release には SHA256SUMS.txt も添付され、publish 前に workflow で構成整合を検証します。
あわせて preflight-release-gate.md / release-readiness-gate.md を同梱し、判定根拠を追跡できます。
UI:
cd apps/desktop/ui
npm ci
npm run buildDesktop:
cd apps/desktop/src-tauri
cargo tauri dev最小E2Eスモーク(Windows想定):
./scripts/smoke-local-api.ps1このスモークでは以下を検証します:
- daemon start/stop/restart と status 整合
- 承認フロー付き
fs write/readの往復 - Daily Briefing 取得と rationale フィールド
- MCP remote 失敗時の
not_configuredエラーコード - (利用可能時)operator session create/plan/run/timeline
- (利用可能時)memory store/search/recent
プレリリース前チェック(Windows想定):
./scripts/preflight-release.ps1レポートを明示出力する場合:
./scripts/preflight-release.ps1 -ReportPath reports/preflight-v1.mdCLI サイズ予算(既定 15MB)を変更する場合:
./scripts/preflight-release.ps1 -MaxCliSizeMb 12GitHub Actions でも preflight-report workflow から同等チェックを実行し、
artifact preflight-report として判定レポートを取得できます。
タグ v* で走る release workflow は、先に preflight-gate(Windows)を通過した場合のみ
artifact build / publish に進みます。
ローカルで最終 readiness 判定を作る場合:
./scripts/release-readiness.ps1 -PreflightReportPath reports/preflight-latest.md -ReportPath reports/release-readiness-latest.mdpreflight と readiness を順にまとめて実行する場合:
./scripts/run-release-gates.ps1 -SkipReleaseBuild今回のPR-9実行例(ローカル判定レポート):
./scripts/preflight-release.ps1 -SkipReleaseBuild -ReportPath reports/preflight-pr9.md
./scripts/release-readiness.ps1 -PreflightReportPath reports/preflight-pr9.md -ReportPath reports/release-readiness-pr9.md- Node は
>=22 <23前提(Windows の Vite/Rollup 異常終了回避) - iMessage は macOS 限定、他 OS では既定で非表示
- Connector OAuth は現在「状態管理」の土台実装(最小スコープ)
- Domain Policy は action 判定前に適用(blocked_actions 優先)
- Rust toolchain は
1.88.xを前提 operator/memoryのDB初期化に失敗する環境では、smoke script内の該当検証は自動で skip