コンテンツにスキップ

Vibe Kanban を Claude Code + AWS Bedrock + zsh 環境で動かす

概要

AWS Bedrock を用いた Claude Code を使って Vibe Kanban を動かそうと動かそうとしたが、Vibe Kanban は Claude Code のログインを前提としており、そのままでは動かせない。 Vibe Kanban は コーディングエージェント実行時のコマンドを上書きできる。 AWS Bedrock を用いた Claude Code を起動するコマンドを作成し、Vibe Kanban に設定することで AWS Bedrock を用いた Claude Code を Vibe Kanban で利用できる。 しかし、コマンド実行は bash で行われるため、私のように zsh 環境でコマンド作成している場合は工夫が必要。

Vibe Kanban とは

Vibe Kanban は、コーディングエージェントのためのカンバンボード。 チケットごとに異なるコーディングエージェントを使用したり、複数のコーディングエージェントを並列またはシーケンシャルに実行したりできる。 GitHub 連携することで Pull Request の作成もできる。Vibe Kanban の個人的に気に入っている点は、Git Worktree を使って各チケットごとに異なるブランチを作成し、作業を分離しているが.envのように git の追跡対象外のファイルも設定で共有できること。 Git Worktree 単体であれば git の管理外のファイルは共有されないが、Vibe Kanban では設定で共有できる。

利用にあたっての課題

概要でも述べたが、Vibe Kanban は Claude Code のログインを前提としており、初期設定では AWS Bedrock を用いた Claude Code を利用できない。 Vibe Kanban は コーディングエージェント実行時のコマンドを上書きできるが、コマンド実行は bash で行われるため、私のように zsh 環境でコマンド作成している場合は工夫が必要。

解決

AWS Bedrock を用いた Claude Code 実行するコマンドを作成

AWS Bedrock を用いた Claude Code を使うコマンドを作成する。 zsh からの利用を想定しているため、~/.zshrcに以下のように記述する。

1
2
3
4
5
6
7
8
function my-claude-code() {
  env \
    AWS_PROFILE="personal" \
    AWS_REGION="us-east-1" \
    ANTHROPIC_MODEL="arn:aws:bedrock:us-east-1:123456789012:application-instance-profile/my-claude-code-profile" \
    CLAUDE_CODE_USE_BEDROCK=1 \
    claude --dangerously-skip-permissions "$@"
}

ポイントは--dangerously-skip-permissionsオプションを付与すること。 これを付与しないと、Vibe Kanban から Claude Code を実行した際にファイルの作成や編集の権限がなく、エラーが発生する。 Vibe Kanban から Claude Code を実行する場合に--dangerously-skip-permissionsオプションを付与する設定があるが、うまく機能しなかったのでコマンドに直接付与する形にした。

Vibe Kanban の設定

次のように Vibe Kanban の Coding Agent の設定を変更する。Claude Code の bedrock プロファイルを追加し、base_command_overrideに先ほど作成したコマンドを指定する。 このコマンド実行は bash で行われるため、zsh の設定を読み込むようにzsh -c 'source ~/.zshrc > /dev/null 2>&1 && my-claude-code'としている。

{
  "executors": {
    "CODEX": {
      "HIGH": {
        "CODEX": {
          "append_prompt": null,
          "sandbox": "danger-full-access",
          "model_reasoning_effort": "high"
        }
      },
      "DEFAULT": {
        "CODEX": {
          "append_prompt": null,
          "sandbox": "danger-full-access"
        }
      }
    },
    "OPENCODE": {
      "DEFAULT": {
        "OPENCODE": {
          "append_prompt": null
        }
      }
    },
    "CLAUDE_CODE": {
      "PLAN": {
        "CLAUDE_CODE": {
          "append_prompt": null,
          "plan": true,
          "additional_params": []
        }
      },
      "DEFAULT": {
        "CLAUDE_CODE": {
          "append_prompt": null,
          "plan": false,
          "dangerously_skip_permissions": true,
          "additional_params": []
        }
      },
      "bedrock": {
        "CLAUDE_CODE": {
          "append_prompt": null,
          "dangerously_skip_permissions": true,
          "base_command_override": "zsh -c 'source ~/.zshrc > /dev/null 2>&1 && my-claude-code'",
          "additional_params": []
        }
      }
    },
    "AMP": {
      "DEFAULT": {
        "AMP": {
          "append_prompt": null,
          "dangerously_allow_all": true
        }
      }
    },
    "QWEN_CODE": {
      "DEFAULT": {
        "QWEN_CODE": {
          "append_prompt": null,
          "yolo": true
        }
      }
    },
    "CURSOR": {
      "DEFAULT": {
        "CURSOR": {
          "append_prompt": null,
          "force": true
        }
      }
    },
    "GEMINI": {
      "FLASH": {
        "GEMINI": {
          "append_prompt": null,
          "model": "flash",
          "yolo": true
        }
      },
      "DEFAULT": {
        "GEMINI": {
          "append_prompt": null,
          "model": "default",
          "yolo": true
        }
      }
    }
  }
}

タスク実行時に今回設定した bedrock プロファイルを選択することで、AWS Bedrock を用いた Claude Code を利用できる。 余談だが、コマンドをalias mc='my-claude-code'のようにエイリアスで設定しても、Vibe Kanban からは実行できなかった。

まとめ

Vibe Kanban は Claude Code のログインを前提としており、そのままでは AWS Bedrock を用いた Claude Code を利用できない。 Vibe Kanban は コーディングエージェント実行時のコマンドを上書きできるため、AWS Bedrock を用いた Claude Code を使うコマンドを作成し、Vibe Kanban に設定することで AWS Bedrock を用いた Claude Code を Vibe Kanban で利用できる。 しかし、コマンド実行は bash で行われるため、私のように zsh 環境でコマンド作成している場合は工夫が必要。