Kanera CLI
@kanera/cli Kanera をターミナルに配置すると、カードの検索、作業の管理、およびシェル スクリプトからのタスクの自動化が可能になります。シェル コマンドを実行できる AI コーディング エージェントも、MCP クライアント構成や長時間実行サーバーを必要とせずに、これを使用できます。
インストール
必要なもの Node.js 22以降。ターミナルでこのコマンドを実行して、 kanera グローバルにコマンドを実行します:
npm install --global @kanera/cli
公開されたパッケージには実行時の依存関係はありません。コマンドが使用可能であることを確認します。
kanera commands
インストールせずに試してみるには:
npx @kanera/cli commands
認証する
ブラウザ経由でサインインします。
kanera auth login
auth login ClaudeやCodexと同じOAuthデバイスフローを使用します。リンクと短いコードが表示され、ブラウザーでリンクが開き、承認すると自動的に完了します。次を選択する前に、ページのコードが端末のコードと一致することを確認してください: アクセスを許可する。 SSH 経由またはヘッドレス マシン上で、任意のデバイスでリンクを開きます。パスする --no-browser 起動を省略します。
その後、CLI は有効期間の短いアクセス トークンとリフレッシュ トークンを保存し、それらを自動的に更新します。サインインは以下に表示されます 設定 -> AI エージェント として Kanera CLI (コンピュータの名前)、変更はカード履歴にその名前でラベル付けされます。そこで取り消すか、実行してください kanera auth logout、サーバー上でも終了します。
エージェントに名前を付けます
AI エージェントが CLI を操作する場合は、サインイン時にそのエージェントに名前を付けて、その作業にそのエージェントのラベルが付けられるようにします。
kanera auth login --agent "Claude Code"
サインインは次のように表示されます Claude Code (コンピュータ名上のKanera CLI) 同意画面の 設定 -> AI エージェント、そしてとして Claude Code経由(…上のKanera CLI) すべてのコメント、カードの変更、通知、およびエージェントの実行に対して。 KANERA_AGENT_NAME 環境から同じ名前を設定します。名前はサインイン中は固定されるため、各エージェントに独自のプロファイルを与えます。 --profile 複数が同じマシンを共有する場合。 --agent 個人キーを使用して行われた作業はユーザーとして記録されるため、API キーには適用されません。
代わりに API キーを使用してください
CI、cron ジョブ、無人エージェントの API キーは、ブラウザーのサインインを承認する人がいない場合、またはKanera によって読み取り専用として強制される資格情報が必要な場合に使用します。で作成します プロファイル設定 -> API キー、または ワークスペース設定 -> API 認証情報を個人ではなくワークスペースに所属させる場合。参照: KaneraAPI 違いのために。
kanera auth login --with-api-key
ホストされたKaneraでは、次のAPIキーページが開きます。 https://board.kanera.app/settings/api-keys、シェルのスクロールバックに到達しないようにターミナル エコーを抑制してキーの入力を求め、Kanera に対して検証して保存します。
個人キーを使用して行われた変更は、ユーザーとして記録されます。 経由 バッジが付いているため、エージェントの作業にラベルを付けたい場合は、ブラウザー サインインの方が適しています。を選択してください 読み取り専用 資格情報が無人エージェントのものである場合は個人キー。 CLI は保持しているスコープを報告し、書き込み拒否は別個のコードで終了するため、エージェントは再試行せずに停止できます。
kanera whoami # who am I, and what may this credential do?
kanera doctor # diagnose credentials, connectivity, and scope
CI またはエージェント サンドボックスでは、保存されているプロファイルを完全にスキップして、 KANERA_API_KEY.
タイムラインのスケジュールを確認する
kanera schedule "$BOARD_ID" --json
kanera schedule --workspaceId "$WORKSPACE_ID" --json
kanera card update MKT-42 --changes.startDateLocalDate 2026-11-02 --changes.dueDateLocalDate 2026-11-06
スコープを 1 つだけ使用します: ボードの位置引数、または --workspaceId。読み取りにより返されるのは、 タイムライン エンジンの計画日、稼働日の期間と余裕、重要なカード、競合、予想される終了日、最新の期日とのずれ。更新により保存された日付が変更され、書き込みアクセスが必要になります。後続者は自動的に移動しません。日付が変わったらスケジュールを読み直してください。
kanera my-day --json スケジュールの競合、重要な作業、計画された開始の遅れなどが含まれます。 kanera portfolio --json ボードごとのスケジュールの健全性を含む、サポートされているクロスボード ロールアップを返します。イベント サブスクリプションには、ホストされた HTTP MCP クライアントが必要です。これらは CLI の stdio トランスポートによって提供されません。
日常のコマンド
kanera my-day # overdue, due this week, idle, and Up next in one view
kanera work # your work across every accessible board
kanera boards # every board you can reach, including guest boards
kanera card MKT-42 # a card, by key, id, or URL
kanera card done MKT-42 # mark it complete
kanera comment MKT-42 "Shipped."
kanera search "renewal"
kanera priorities # an Up next queue
kanera separator create "$BOARD" "$LIST" "This week" --color blue
kanera capture "Renew the venue insurance" # a task in your private Scratchpad Inbox, no board needed
kanera remind MKT-42 "friday 3pm" # a private reminder on a card, up to 8 weeks ahead
kanera remind clear MKT-42
kanera reminders # your pending reminders, soonest first
kanera watch MKT-42 # follow a card's activity; kanera unwatch MKT-42 stops
kanera inbox # your latest notifications; then kanera inbox --since "<cursor>" for only what is new
kanera card upload-link MKT-42 test-run.log # a one-time URL; then curl -fsS -T ./test-run.log "<uploadUrl>"
kanera card attachment MKT-42 "$ATTACHMENT" # an attachment's text, or an image's details
カード引数は次のようなカード キーを受け入れます。 MKT-42、カード ID、または正規のカード URL など、目の前にあるものを何でも貼り付けることができます。日付引数を受け入れます YYYY-MM-DD または次のようなフレーズ "tomorrow 1pm" または "next friday"、プロフィールのタイムゾーンを読み取ります。 kanera card update MKT-42 --changes.dueDateLocalDate "friday 3pm".
kanera commands CLI で実行できるすべての機能をリストし、ログインする前に動作します。 kanera commands --json エージェントが残りを検出するために使用する機械可読カタログです。
ツール表面全体
上記の名前付きコマンドは、Kanera の MCP ツール レイヤー上の人間工学に基づいたショートカットです。これは、AI エージェントが MCP 上で認識するのと同じツールです。ショートカットのないものには引き続きアクセスできます。
kanera call cards.bulk_move --boardId "$BOARD" --cardIds[] MKT-42 --cardIds[] MKT-43 --listId "$LIST"
kanera help cards.bulk_move
CLI はパブリック API を再実装するのではなく、ツール層を直接読み取るため、そのコマンド サーフェスがエージェントに表示される内容から逸脱することはなく、新しく追加されたツールは出荷されたその日からシェルから呼び出すことができます。
基板セパレーター
タイトルを付け、必要に応じて色の付いた区切り線を作成し、カードまたは別の区切り線を基準にして配置します。
kanera separator create "$BOARD" "$LIST" "This week" --color blue \
--anchor.side before --anchor.item.type card --anchor.item.id "$CARD"
kanera separator move "$SEPARATOR" "$LIST" \
--anchor.side after --anchor.item.type separator --anchor.item.id "$OTHER_SEPARATOR"
kanera separator update "$SEPARATOR" --title "Next up" --color green
kanera separator delete "$SEPARATOR"
リストのエッジの場合は、次のように渡します。 --anchor.side after --anchor.item null 上部または --anchor.side before --anchor.item null 底部用。セパレータを削除してもカードは変更されません。 kanera card move は同じ型のアンカーを受け入れるため、カードをセパレータの直前または直後に配置できます。
カード関係
これらのコマンドは左から右に読み取られます。最初のカードは 2 番目のカードをブロックします。両方が同じワークスペースに属している必要があります。
kanera card block MKT-42 WEB-18 # MKT-42 blocks WEB-18
kanera card unblock MKT-42 WEB-18 # remove that dependency
kanera card relate MKT-42 WEB-18 # connect them without a required order
kanera card WEB-18 # full detail includes relationships
kanera work --filters.blockedOnly true # find waiting work
kanera work --filters.atRiskOnly true # blocker overdue or due after the card
逆方向または複数のターゲットの場合は、基礎となるツールを使用します。
kanera call cards.set_relations --cardId WEB-18 --direction blocked_by \
--otherCardIds[] MKT-42 --otherCardIds[] MKT-43
パス --remove true 選択した関係を削除します。次を確認してください: failed そして notAttemptedCardIds 部分的な結果の場合: 別のターゲットが拒否された場合でも、成功した追加は保存されたままになります。結果 relationsUnavailable 書き込みが成功した名前 addedCardIds または removedCardIds 最後の読み取りに失敗した場合です。削除の成功は、カードごとの拒否と併せて報告されます。参照: カードの関係とブロック 権限、ハンドオフ、完了の警告について。
依存関係グラフ
使用する kanera deps 1回の呼び出しで前提作業と後続作業を読み取ります:
kanera deps MKT-42 # one card's blocking neighbourhood
kanera deps --boardId "$BOARD" # chains touching a board
kanera deps --workspaceId "$WORKSPACE" # chains in a workspace
スコープを 1 つだけ渡します。カード引数は、そのキー、UUID、または正規 URL を受け入れます。カードスコープの出力の追加 focus 直接の blockedBy / blocks ID、推移的 upstream / downstream IDは近いものから順に、 relatedTo、そして onMap。カードには、読み取り可能なボード名とリスト名、アクティブ/マップ外のブロッカー数が含まれます。結果は 400 枚のカードとレポートに制限されます truncated。参照 MCPグラフリファレンス.
引数
フラグはツールの引数にマップされ、値の見た目ではなく、各ツール独自の JSON スキーマを使用して強制されます。カード キーは数値であり、ID はブール値である可能性があります。
kanera card update MKT-42 --changes.title "Revised" # dots nest
kanera work --scope.boardIds[] "$A" --scope.boardIds[] "$B" # repeat for arrays
kanera call cards.update --json-args '{"cardId":"MKT-42","changes":{"title":"Revised"}}'
配列引数は、オブジェクトのリストを渡す最も簡単な方法である 1 つの JSON 配列も受け入れます。これにより、1 回の呼び出しでチェックリスト、その項目、およびサブチェックリストが作成され、別の呼び出しで 2 つの項目が完了します。
kanera call checklists.create --cardId MKT-42 --title Launch \
--items '[{"text":"Prepare release","subChecklists":[{"title":"Verification","items":[{"text":"Run smoke tests"}]}]},{"text":"Announce launch"}]'
kanera call checklists.update_items --cardId MKT-42 \
--updates '[{"itemId":"<itemId>","changes":{"completed":true}},{"itemId":"<itemId>","changes":{"completed":true}}]'
不明なフラグ、必要な引数の欠落、不正な形式 --json-args、および余分な位置引数は使用上のエラーです。 CLI はオペランドを黙って破棄することはありません。
出力
| 旗 | 出力 |
|---|---|
| (なし) | 人間が読める表と概要 |
--json | あ { ok, tool, data } 封筒 |
--quiet | にパイプするための裸の結果 jq |
失敗はいつもこうなる 標準エラー、でも --json モードなので、stdout をファイルにリダイレクトしても、呼び出し元が結果データと信じているものにエラー エンベロープが混入することはありません。
レート制限された一時的な障害には次のものがあります。 retryable そしてKaneraがそれを提供すると、 retryAfter.
終了コード
| コード | 意味 |
|---|---|
0 | 成功 |
1 | リクエストは失敗しました |
2 | 悪い使い方 |
3 | 有効な資格情報がありません |
4 | 禁止 — 多くの場合、読み取り専用の資格情報であるか、ボード上で編集者の役割がありません |
5 | 見つかりません |
6 | レート制限あり |
4 ~とは意図的に区別されています 1。読み取りスコープのキーを保持しているエージェントは、「これは機能しませんでした」とは別に「これは実行できないかもしれない」と伝え、再試行するのではなく停止する必要があります。
資格情報とプロファイル
解決順序: --api-key、その後 KANERA_API_KEY、次に保存されたプロファイル。ブラウザーのサインインまたは API キーのいずれかを保持します。明示的なキーが常に優先されるため、CI ジョブが開発者の個人サインインを通じて実行されることはありません。
プロファイルが存在する ~/.config/kanera/config.json、モードで書かれています 600。名前付きプロファイルを使用すると、1 台のマシンに複数の ID を保持できます。
kanera auth login --profile agent --api-key "kanera_u_live_..."
kanera --profile agent work --json
| コマンド | 目的 |
|---|---|
kanera auth login | ブラウザ経由でサインインします (--with-api-key または --api-key 鍵の場合) |
kanera auth status | アクティブな認証情報とその範囲を表示します |
kanera auth list | 保存されているプロファイルを一覧表示する |
kanera auth token | アクティブな API キーを出力します。 KANERA_API_KEY=$(kanera auth token)。ブラウザーのサインインには、印刷するキーがありません。 |
kanera auth logout | 保存されているプロファイルを削除し、サーバー上のブラウザーのサインインを終了します。 |
リポジトリは、シークレットを保持せずにプロファイルを選択できます。 .kanera/config.json:
{ "profile": "agent" }
そのファイルでは API オリジンを設定できません。オリジンはベアラー資格情報を受け取るため、チェックアウトされたリポジトリがベアラー資格情報をリダイレクトできてはなりません。使用する --url, KANERA_PUBLIC_API_URL、または作成中にプロファイルとともに保存された原点 auth login。非ループバックオリジンは HTTPS を使用する必要があります。
アップデート
CLI は、npm に新しいリリースがあるかどうかを最大 1 日に 1 回チェックします。見つかった場合は、コマンドの終了後に次のように尋ねられます。
A new Kanera CLI is available: 1.7.0 → 1.8.0
Update now? [y/N]
答え y 実行します: npm install --global @kanera/cli@<version>。それ以外の回答は更新をスキップします。 CLI は 1 日を再度尋ねることはなく、後で更新できるようにコマンドを出力します。
CLI は、ユーザーが対話型端末を使用しているかどうかを尋ねるだけです。チェックインしたり質問したりすることはありません --json または --quiet モード、入力または出力が端末 (エージェント、スクリプト、パイプを含む) でない場合、 CI 設定されているか、実行すると npx、それ自体のコピーをフェッチします。セット KANERA_NO_UPDATE_CHECK=1 チェックを完全に無効にします。
セルフホストのKanera
ブラウザーのサインインは展開の MCP アドレスに関連付けられているため、ログイン時にそれを渡します。
kanera auth login --mcp-url https://your-kanera.example/mcp
または設定します KANERA_MCP_URL。 CLI は MCP サーバーの OAuth メタデータを読み取り、Kanera サインイン ページを見つけるため、他に何も設定する必要はありません。
API キーの場合は、代わりに CLI でパブリック API を指定すると、プロファイルとともに保存されます。
kanera auth login --with-api-key --url https://api.your-kanera.example
CLI は、API オリジンからセルフホスト Web アプリがどこに存在するかを判断できないため、API キーを使用してもブラウザーを開きません。 Kanera Web アプリでキーを作成します。 設定 -> API キーをクリックし、プロンプトに貼り付けます。
または設定します KANERA_PUBLIC_API_URL コマンドごとに。 kanera doctor 解決されたエンドポイントを報告します。これは通常、構成が間違っているオリジンを見つける最も速い方法です。
AIエージェントから利用する
2 つの方法があり、それらは補完的です。
シェルツールとして。 CLI をインストールし、エージェントに読み取り専用キーを与えて、コマンドを実行できるようにします。 kanera setup エージェントに必要な手順を書きます:
kanera setup claude # writes .claude/skills/kanera/SKILL.md
kanera setup codex # appends Kanera instructions to AGENTS.md
kanera skill # prints the portable Agent Skill document for any other harness
kanera setup codex は冪等であるため、アップグレード後に再実行しても、手動で編集したファイルに重複したセクションがスタックされることはありません。追加 --global 次へ: setup claude プロジェクト単位ではなく、自分のアカウントにインストールします。
エージェントがすでにKanera MCP ツールに接続している場合は、CLI の代わりにそれらを使用します。どちらのトランスポートでも、Kanera には Web インターフェイスがあるという理由だけで、サポートされているカードの読み取りと更新をブラウザの自動化にフォールバックすべきではありません。
MCPサーバーとして。 kanera mcp すでに保存されている認証情報を使用して、stdio MCP 経由で同じツールを提供します。
{
"mcpServers": {
"kanera": {
"command": "kanera",
"args": ["mcp"]
}
}
}
これは 1 つを意味します kanera auth login 2 番目の場所で構成された 2 番目の資格情報の代わりに、端末と MCP クライアントの両方をカバーします。ブラウザでサインインすると、 kanera mcp Kanera MCP サーバーを中継し、実行中にトークンを更新します。現在の MCP プロトコルと以前のリビジョンの両方を話すため、どの MCP ホストでも起動できます。 イベントのサブスクリプション ローカル ホストには配信先のホストされたコールバックがないため、標準入出力では提供されません。クライアントが OAuth 自体を使用したリモート MCP をサポートしている場合は、直接接続することもできます。参照してください Kanera を AI エージェントに接続する.
プランの要件
ブラウザーのサインインと個人 API キーは、無料を含むすべてのホスト型プランで機能し、セルフホスト型の Kanera にはプランのチェックがありません。ワークスペースとボードの API キーが必要です Pro またはプロトライアル。ホストされている組織が無料に移行すると、その組織は取り消されます。 kanera 1 つを使用したコマンドは終了コードで失敗します 3 または 4 プランが復旧するまで。リクエストには次が適用されます: API レート制限 CLI はボードの組織を一時的に超えると待機して再試行します。