はじめに
ターミナルで動く AI コーディングエージェントは、選択肢が増えてきました。
Claude Code や Codex CLI が代表的です。
この記事では、その一つである OMO(oh-my-openagent)を取り上げます。
インストールから、日常的に使える状態になるまでを順に解説します。
OMO は、ターミナルで使う AI エージェントです。
複数社のモデルを、1つのコマンドから使い分けられます。
Claude と ChatGPT のサブスクリプションに同時にログインし、作業ごとに担当モデルを割り当てられます。
筆者は Claude Code と Codex CLI を併用していましたが、OMO に寄せて1日使い込みました。
その中でつまずいた点も、対処法と一緒に載せています。
この記事で分かることは次のとおりです。
- OMO のインストールと、最初のログインまでの手順
- ログインの選び方で、料金の扱いが変わること
- 入力欄の基本操作と、よく使うコマンド
- 設定ファイル
omo.jsoncで、役割ごとにモデルを割り当てる方法 - 筆者が実際に遭遇したエラーと、その対処法
対象読者
- Claude Code や Codex CLI を使ったことがあり、ほかの選択肢を試したい方
- Claude と ChatGPT の両方のサブスクリプションを持っていて、使い分けたい方
- ターミナルの基本操作(
cdやコマンド実行)ができる方
動作確認環境
2026年10月時点で、次の環境で確認しました。
| 項目 | バージョン |
|---|---|
| OS | macOS 27.0(Apple Silicon) |
| ターミナル | macOS 標準のターミナル.app |
| OMO | 5.1.27(エンジン: senpi 2026.10.10-9) |
| ログインしたサービス | Claude(Max)、ChatGPT(Pro)、Cursor |
OMO は更新が速いツールです。
画面の表示やコマンドが、この記事の内容と違う場合があります。
最新の情報は、OMO の公式リポジトリ で確認することをおすすめします。
要点
- インストールはコマンド1行で済み、起動は
omoです。 - Claude をプランの利用枠で使うなら、
/login anthropic-subscriptionでログインします。 - ChatGPT は
chatgpt-subscriptionとしてログインし、モデル名もその名前で指定します。 -
~/.omo/omo.jsoncで、役割(エージェント)ごとに使うモデルを決められます。 - 困ったときは、まず
omo doctorで環境を診断するのが近道です。
OMO の全体像
最初に、OMO がどんな部品でできているかを整理しておきます。
全体像を先に知っておくと、後半の設定の話が理解しやすくなります。
OMO は、オープンソースのコーディングエージェント pi を改造した senpi の上で動いています。
ファイルの読み書きやコマンド実行といった基本の道具に加えて、次のような仕組みを持っています。
| 仕組み | 役割 |
|---|---|
| サブエージェント | 計画・実装・レビューなどを、別のモデルに任せる |
| スキル | 作業手順書。必要なときだけ読み込まれる |
| 記憶(Kibitzer) | 過去のやり取りから、役立つ情報を毎回の作業に添える |
| 拡張機能 | TypeScript で機能を追加する。表示のカスタマイズもできる |
OMO の詳しい文書は、インストールすると手元にも置かれます。
場所は ~/.omo/binary-runtime/<バージョン>/docs/ です。
この記事で「同梱の文書」と書いているのは、このフォルダのファイルを指します。
インストール
インストールスクリプトで入れる
macOS と Linux では、次のコマンドでインストールできます。
curl -fsSL https://get.omo.dev/install.sh | bash
このスクリプトは、OS と CPU に合った omo の実行ファイルを ~/.local/bin に置きます。
ダウンロードしたファイルは、公開されているチェックサムで照合されます。
Windows の場合は、PowerShell で次のコマンドを実行します。
irm https://get.omo.dev/install.ps1 | iex
インストールが終わったら、新しいターミナルを開いてバージョンを確認します。
omo --version
筆者の環境では、次のように表示されました。
omo 5.1.27 (engine: senpi 2026.10.10-9; scheme nodef)
新しいターミナルでも omo: command not found と表示される場合は、PATH が通っていません。
シェルの設定ファイル(~/.zshrc など)に、次の1行を追加してみてください。
export PATH="$HOME/.local/bin:$PATH"
シェルごとの手順は、OMO のインストール資料 にまとまっています。
パッケージマネージャーで入れる
npm や Bun を使い慣れている場合は、パッケージとしても入れられます。
npm i -g omo-ai
パッケージ名は omo-ai です。
npm には omo という名前の別のパッケージがあるので、名前を確認してから入れることをおすすめします。
起動と最初のログイン
起動する
作業したいプロジェクトのフォルダに移動して、omo を実行します。
cd ~/projects/my-app
omo
OMO は、起動したフォルダの中でファイルを読み書きします。
変更を取り消せるよう、git で管理しているフォルダで使うことをおすすめします。
Claude にログインする(料金の扱いに注意)
Claude のサブスクリプションには、ログインの経路が2つあります。
どちらを選ぶかで、料金の扱いが変わります。
| ログインの方法 | 料金の扱い(同梱の文書 providers.md による) |
|---|---|
/login anthropic-subscription |
Claude Code の仕組みを経由して呼び出す。プランの利用枠で使える |
/login で anthropic を選ぶ |
外部ツールからの利用として、追加利用分(トークンごとの課金)になる |
プランの利用枠で使いたい場合は、入力欄で次のコマンドを実行します。
/login anthropic-subscription
ブラウザが開くので、そこで許可すればログインは完了です。
筆者は最初、/login の一覧から anthropic を選んでいました。
後から文書を読み、こちらはプランの枠外の課金になると知りました。
Claude の利用状況は、Claude の利用状況ページ で確認できます。
ChatGPT にログインする
ChatGPT のサブスクリプションは、入力欄で /login を実行し、ChatGPT を選んでログインします。
OMO の中では、chatgpt-subscription という名前で扱われます。
後で設定ファイルにモデルを書くときも、この名前を使います。
公式 README によると、ほかに Kimi と GLM のサブスクリプションにも対応しています。
筆者は、/login cursor で Cursor にもログインしました。
Cursor 経由では、Grok などのモデルも使えます。
使えるモデルを確認する
ログインが済んだら、ターミナルで次のコマンドを実行します。
omo --list-models gpt-6
ログイン済みのサービスで使えるモデルが、提供元の名前と一緒に表示されます。
筆者の環境での一部を抜粋します。
provider model context max-out thinking images
chatgpt-subscription gpt-6-astra 600K 128K yes yes
chatgpt-subscription gpt-6-sol 400K 128K yes yes
設定ファイルには、chatgpt-subscription/gpt-6-sol のように「提供元/モデル名」の形で書きます。
引数の gpt-6 を claude や grok に変えると、ほかのモデルも探せます。
環境を診断する
続けて、次のコマンドで環境を診断します。
omo doctor
筆者の環境では、次のような結果になりました(一部を抜粋しています)。
PASS plugin manifest: plugin/package.json
PASS extension: plugin/extensions/omo.js
INFO omo 5.1.27 (engine: senpi 2026.10.10-9; scheme nodef)
PASS task categories: all 10 usable with your connected providers
最後の行は、ログイン済みのサービスで、作業の種類(カテゴリ)を10種類すべて動かせるという意味です。
ここで認証まわりの問題がないかを確かめ、次の章で最初の依頼を出して応答が返れば、導入は完了です。
最初の依頼を出す
入力欄に、日本語で依頼を書いて Enter を押します。
このリポジトリの構成を要約して、テストの実行方法を教えてください。
OMO はファイルを読み、必要ならコマンドを実行して答えを組み立てます。
ファイルを指定したいときは、入力欄で @ を打つと候補が出ます。
README では、難しい作業に ultrawork(または ulw)を付ける使い方が紹介されています。
付けると、コードを読んで計画を立て、手順ごとに確認しながら進めるモードになります。
1回だけ実行して終わる使い方
対話画面を開かずに、質問を1つ投げて結果だけ受け取ることもできます。
omo -p --no-session "package.json のスクリプト一覧を表にしてください。"
-p は1回実行して終了するモード、--no-session は会話の記録を残さない指定です。
スクリプトから呼び出すときに便利です。
入力欄の基本操作
よく使うキー操作をまとめます。
キー割り当ては、同梱の文書 keybindings.md で確認しました。
| キー | 動作 |
|---|---|
| Enter | 送信 |
| Shift+Enter / Ctrl+J | 改行(端末によっては効きません。後述します) |
| Esc | 実行中の処理を中断する |
| Ctrl+G | 外部エディタで入力内容を編集する |
| Ctrl+L | モデルを選ぶ |
| Alt+Enter | 作業中に、次の依頼を予約する |
| Ctrl+C | 入力を消す(2回押すと終了) |
よく使うコマンドは次のとおりです。
| コマンド | 動作 |
|---|---|
/login |
サービスにログインする |
/model |
使うモデルを切り替える |
/reload |
設定や拡張機能を読み込み直す |
プロジェクトの指示を渡す
OMO は起動時に、作業フォルダとその親フォルダにある AGENTS.md または CLAUDE.md を読み込みます。
「テストは必ずこのコマンドで実行する」といった決まりごとを書いておくと、毎回伝えなくて済みます。
# プロジェクトの指示
- コードを変更したら `npm test` を実行してください。
- 本番データベースへの操作はしないでください。
- 回答は日本語で、結論から書いてください。
筆者の環境では、Claude Code 用に書いた ~/.claude/CLAUDE.md も読み込まれていました。
この挙動は公式の文書では見つけられなかったので、筆者の環境での確認にとどまります。
設定ファイルで役割とモデルを決める
ここからが OMO らしい使い方です。
設定ファイルの場所
役割(エージェント)やモデルの割り当ては、~/.omo/omo.jsonc に書きます。
プロジェクトごとに変えたい場合は、そのプロジェクトに .omo/omo.jsonc を置きます。
同じ項目が両方にあるときは、作業フォルダに近いほうが優先されます。
キー割り当てや拡張機能など、ほかの設定は ~/.omo/agent/ の下に別のファイルで置きます。
これらは後の章で紹介します。
役割(エージェント)を追加する
agents に役割を書くと、その役割を担うサブエージェントを独自に追加できます。
例えば、計画は推論の強いモデル、レビューは別のモデル、という分け方ができます。
次の例は、ChatGPT のサブスクリプションだけで動く、完成した設定ファイルです。
役割を2つ追加し、軽い作業用のモデルも指定しています。
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/omo.schema.json",
"agents": {
"planner": {
"description": "要件を分析し、実装計画を作る",
"model": "chatgpt-subscription/gpt-6-astra",
"reasoning": "high",
"prompt": "You are the planning agent. Analyze requirements and produce an implementation plan. Do not modify code.",
"tools": { "write": false, "edit": false }
},
"code-reviewer": {
"description": "最終コードレビュー",
"model": "chatgpt-subscription/gpt-6-sol",
"reasoning": "high",
"prompt": "You are an independent code reviewer. Report actionable findings without modifying code.",
"tools": { "write": false, "edit": false }
}
},
"categories": {
"quick": { "model": "chatgpt-subscription/gpt-6-luna" }
}
}
すでに設定ファイルがある場合は、agents と categories を既存の中身に足してください。
ファイルごと置き換えると、それまでの設定が消えます。
各項目の意味は次のとおりです。
| 項目 | 意味 |
|---|---|
description |
役割の説明。メインのモデルが、どの役割に任せるかを決める手がかりになる |
model |
使うモデル。omo --list-models で確認した「提供元/モデル名」を書く |
reasoning |
考える深さ。low・medium・high・xhigh・max などから選ぶ |
prompt |
その役割への指示文 |
tools |
使える道具の制限 |
$schema の行を入れておくと、対応したエディタで項目名の補完やチェックが効きます。
"write": false と "edit": false で止められるのは、ファイルを書き換える専用の道具だけです。
コマンド実行の道具(bash)が使えれば、そこからファイルを変えることはできます。
完全な読み取り専用を保証する設定ではない点に、留意が必要です。
追加した役割を呼び出す
追加した役割は、OMO を起動し直すと使えるようになります。
筆者の環境では、実行中のセッションで新しい役割を呼ぶと「その名前のエージェントはない」というエラーになりました。
起動し直したら、依頼文の中で役割の名前を挙げて頼みます。
planner に、ログイン機能を追加する実装計画を立ててもらってください。
OMO には explore など組み込みの役割もあります。
自分で追加する役割には、組み込みと重ならない名前を付けておくと混乱しません。
Claude や Grok を組み合わせる
Claude のモデルを使うには、先に /login anthropic-subscription でログインしておきます。
そのうえで omo --list-models claude を実行し、表示された「提供元/モデル名」を model に書きます。
Grok を使う場合は、/login cursor で Cursor にログインします。
筆者の環境では cursor/grok-4.7 という名前で表示され、調査用の役割に割り当てて使いました。
Cursor で使えるモデルはアカウントごとに異なるので、名前は自分の環境で確認するのが確実です。
軽い作業用のモデル(quick)
設定例の categories.quick は、軽い作業用のカテゴリです。
後述する記憶機能(Kibitzer)の判定も、既定ではこのカテゴリのモデルで動きます。
ここを確実に動くモデルにしておくと、後で紹介するエラーを防げます。
筆者がつまずいたところと対処法
実際に1日使って遭遇した問題を、対処法と一緒に紹介します。
原因まで確かめられたものと、推測にとどまるものを分けて書いています。
ターミナル.app で改行できない
macOS 標準のターミナル.app では、改行のつもりのキーで送信されてしまいました。
Shift+Enter と Ctrl+J の、どちらを押しても同じでした。
同じ端末で、Claude Code と Codex CLI は Ctrl+J で改行できます。
そのため、OMO 側の問題と考えています。
開発元には Issue #9796 として報告しました。
ターミナルの設定を変えずに済む回避策は、次の2つです。
1つ目は、Ctrl+G で外部エディタを開く方法です。
入力内容がエディタで開くので、自由に改行して保存・終了すると入力欄に戻ります。
エディタは、設定の externalEditor、環境変数の VISUAL、EDITOR の順に探されます。
VS Code のようなウィンドウで開くエディタは、閉じるまで待つ指定(code --wait など)が必要です。
2つ目は、改行用のキーを自分で追加する方法です。
~/.omo/agent/keybindings.json を作り、次のように書きます。
{
"tui.input.newLine": ["shift+enter", "ctrl+j", "ctrl+q"]
}
保存したら、入力欄で /reload を実行すると反映されます。
ctrl+q を選んだのは、OMO の既定のキー割り当てで使われていない数少ない組み合わせだったからです。
OMO の文書によると、iTerm2・Ghostty・Kitty では Shift+Enter で改行できます。
ターミナルを替えられる場合は、それがいちばん手軽です。
「Kibitzer gate failed」というエラーが何度も出る
次のようなエラーが、会話の合間に繰り返し表示されました。
× Kibitzer gate failed · start_failed
the child session started on chatgpt-subscription/gpt-6-luna instead of the pinned
chatgpt-subscription/gpt-6-luna-fast; refusing the substitution
after 3 consecutive failures; set categories.quick.model (or memory.recall.category)
in omo.json to a model that answers
Kibitzer は、過去の記憶から今回の作業に役立つものを選ぶ仕組みです。
このエラーは、指定したモデルと、実際に起動したモデルが一致しなかったことを示しています。
OMO は一致しない結果を使わないため、判定が失敗していました。
なぜ別のモデルで起動したのかまでは、確かめられていません。
このときも、メインの応答は普段どおり続きました。
ただし、記憶を参照する判定は失敗していたことになります。
対処法は、エラー文のとおり categories.quick.model に確実に応答するモデルを指定することです。
判定に使うカテゴリ自体を変えたい場合は、memory.recall.category で指定できます。
Haiku を指定したら、文章量が足りず起動できなかった
軽いモデルで試そうと、次のコマンドを実行しました。
omo -p --no-session --model anthropic/claude-haiku-5-5 "質問の文章"
すると、起動前に次のようなエラーで止まりました(一部を抜粋しています)。
systemPromptTokens: 22190,
activeToolSchemaTokens: 12096,
requiredTokens: 107246,
shortfallTokens: 7246,
verdict: "impossible",
OMO は、指示文と道具の説明、それに出力用の余白などを合わせて、必要な文章量を見積もっています。
筆者の環境では、その合計が約10万7千トークンになりました。
モデルが一度に扱える文章量(コンテキスト)を約7千トークン上回ったため、起動を断られたようです。
この数字は、読み込んでいる指示ファイルやスキルの量で変わります。
筆者の環境は指示ファイルとスキルが多めなので、ほかの環境では起動できる可能性もあります。
メインのモデルには、扱える文章量の大きいモデルを選んでおくと安心です。
Cursor のモデルが途中から応答しなくなる
長く続けていたセッションで Cursor のモデルを呼ぶと、次のエラーが返りました。
Cursor conversation is poisoned for this session; use another provider
OMO の変更履歴には、会話の途中の履歴圧縮で、Cursor との会話の状態が壊れる不具合を直した記録があります。
ただ、今回のエラーが同じ原因かどうかは特定できていません。
筆者の場合は、新しいセッションで起動し直して使いました。
困ったら omo doctor
設定を変えた後や、何かがおかしいと感じたときは、まず omo doctor を実行するのがおすすめです。
OMO の構成、ログイン状態、カテゴリごとの利用可否をまとめて確認できます。
さらに便利にする
基本の使い方に慣れたら、次のような拡張もできます。
Claude Code のスキルを流用する
Claude Code 用のスキル(.claude/skills/ の手順書)は、OMO でも読み込めます。
プロジェクトのフォルダに .senpi/settings.json を作り、次のように書きます。
{
"skills": ["../.claude/skills"]
}
起動し直すか /reload を実行した後、/skill:スキル名 で呼び出せれば読み込めています。
筆者の環境では、既存のスキルがそのまま一覧に並びました。
ただし、Claude Code にしかない道具を前提にしたスキルは、そのままでは動かない場合があります。
その場合は、スキルの手順を OMO の道具に合わせて調整する必要があります。
入力欄の下に情報を表示する
TypeScript のファイルを置くと、OMO が拡張機能として読み込みます。
置き場所は ~/.omo/agent/extensions/ です。
筆者は、Claude と Codex の利用率(5時間枠と週の枠)を入力欄の下に表示する拡張を作りました。
書き方は、同梱の文書 extensions.md が参考になります。
同じフォルダの1つ上にある examples/extensions/ には、サンプルもあります。
表示の追加には ctx.ui.setStatus() を使います。
更新とアンインストール
インストールの方法ごとに、手順が異なります。
| インストール方法 | 更新 | アンインストール |
|---|---|---|
| インストールスクリプト(macOS / Linux) | 同じ curl コマンドをもう一度実行 |
rm ~/.local/bin/omo |
| npm | omo update |
npm uninstall -g omo-ai |
| Bun | omo update |
bun remove -g omo-ai |
Windows での更新とアンインストールは、OMO のインストール資料 にまとまっています。
どの方法でも、設定やログイン情報は ~/.omo/ に残ります。
完全に消したい場合は、このフォルダも削除します。
まとめ
OMO は、curl の1行でインストールし、/login でサブスクリプションにつなげば使い始められます。
Claude は anthropic-subscription でログインすると、プランの利用枠で使えます。
そこから ~/.omo/omo.jsonc で、役割ごとにモデルを割り当てます。
そうすると、複数社のモデルを作業に合わせて使い分けられます。
筆者が使ってみて感じたのは、「どのモデルに何を任せるか」を自分で決められる面白さでした。
一方で、ターミナルとの相性や、ログインの経路による料金の違いなど、知らないとつまずく点もありました。
まずはインストールと omo doctor までを試し、普段の小さな作業から任せてみるのがよいと思います。
この記事の下書きには生成AIを利用しています。
手順とコマンドは、動作確認環境に書いた筆者の環境で実行して確認しました。
料金の扱いなど、文書から引用した内容は、その旨を本文に記載しています。