# CLI

> Nodaro CLI を npm またはスタンドアロンのバイナリでインストールし、インスタンスごとに 1 回ログインして、ターミナルや CI ジョブからワークフロー、アプリ、単一ノードを実行します。

Source: https://nodaro.ai/ja/docs/developers/cli

**Nodaro CLI**（`@nodaro/cli`）は、Nodaro のコマンドラインクライアントです。ワークフローの一覧表示と実行、公開済みアプリの実行、ワークフローなしでの単一ノードの実行ができ、各実行を終了まで追跡します。複数のログイン済みプロファイルを並べて管理でき、スクリプト向けに JSON を出力するので、ターミナルでの作業、cron ジョブ、CI パイプラインに向いています。

CLI は、[TypeScript SDK](https://nodaro.ai/docs/developers/sdk) の薄いラッパーです。コードで書く連携には、SDK を直接使ってください。

## インストール
**npm**

npm パッケージは、macOS、Linux、Windows で動作します。Node.js 20 以降が必要です。

```bash
npm install -g @nodaro/cli
nodaro --version
```

パッケージをインストールせずに 1 つのコマンドを実行するには、`npx` を使います。

```bash
npx @nodaro/cli projects list
```

**macOS and Linux binary**

スタンドアロンのバイナリは、約 60 MB の単一ファイルです。Node.js は不要で、起動には約 10 ms かかります。

CLI のリリースには、パブリックリポジトリで `cli-vX.Y.Z` というタグが付けられます。リポジトリの「latest」リリースはアプリのものであり、CLI のものではないため、`releases/latest/download/...` のリンクでは CLI のバイナリを取得できません。まず最新の `cli-v` タグを見つけ、そこからダウンロードします。

```bash
# 1. The newest CLI version
NODARO_CLI_VERSION=$(curl -fsSL "https://api.github.com/repos/nodaroai/app.nodaro.ai/git/matching-refs/tags/cli-v?per_page=100" \
| grep -o '"refs/tags/cli-v[0-9][0-9.]*"' | tr -d '"' | sed 's#refs/tags/cli-v##' \
| sort -t. -k1,1n -k2,2n -k3,3n | tail -n 1)
echo "Installing @nodaro/cli $NODARO_CLI_VERSION"

# 2. Your platform: darwin-arm64 (Apple silicon), darwin-x64 (Intel Mac), linux-x64 or linux-arm64
NODARO_CLI_PLATFORM=darwin-arm64

# 3. Download. -f fails on an HTTP error instead of saving the error page as the binary.
curl -fL "https://github.com/nodaroai/app.nodaro.ai/releases/download/cli-v$NODARO_CLI_VERSION/nodaro-$NODARO_CLI_PLATFORM" \
  -o /usr/local/bin/nodaro && chmod +x /usr/local/bin/nodaro
nodaro --version
```

**Windows binary**

PowerShell で、最新の `cli-v` タグを見つけ、`nodaro-windows-x64.exe` をダウンロードします。

```powershell
$v = (Invoke-RestMethod "https://api.github.com/repos/nodaroai/app.nodaro.ai/git/matching-refs/tags/cli-v?per_page=100") |
ForEach-Object { $_.ref -replace '^refs/tags/cli-v', '' } |
Where-Object { $_ -match '^\d+\.\d+\.\d+$' } |
Sort-Object { [version]$_ } | Select-Object -Last 1
Invoke-WebRequest "https://github.com/nodaroai/app.nodaro.ai/releases/download/cli-v$v/nodaro-windows-x64.exe" -OutFile nodaro.exe
.\nodaro.exe --version
```

バージョンを固定するには、最初の手順を省略して、自分でバージョンを設定します。CLI のすべてのリリースとそのバイナリは、パブリックリポジトリの [cli-v リリース](https://github.com/nodaroai/app.nodaro.ai/releases?q=cli-v)に一覧表示されています。

## ログイン
CLI は、個人用 API トークンで認証し、プロファイルに保存します。

### ブラウザーでのログインを開始する
`nodaro auth login` を実行します。CLI が、Nodaro インスタンスの **Nodaro CLI を承認**ページをブラウザーで開きます。

### CLI を承認する
必要であればログインし、**承認**をクリックします。Nodaro が、あなたのデバイス名を付けた個人用 API トークンを作成し、ターミナルに返します。

### プロファイルを確認する
`nodaro auth status` を実行します。プロファイル名、インスタンスのアドレス、マスクされたトークンが表示されます。

ブラウザーでの認証がうまくいかない場合、CLI は代わりにトークンを貼り付けるよう求めます。自分でトークンを作成するには、Nodaro で**設定 › APIトークン**を開き、**トークンを作成**をクリックします。トークン全体が表示されるのは 1 回だけです。個人用 API トークンは、Nodaro Cloud と Business エディションの環境で使えます。トークンの仕組みについては、[認証](https://nodaro.ai/docs/developers/api/authentication)を参照してください。

```bash
nodaro auth login                                   # browser sign-in
nodaro auth login --no-browser                      # paste a token instead
nodaro auth login --token "$NODARO_TOKEN"           # non-interactive, for CI
nodaro auth status [--profile <name>] [--json]      # show a profile, token masked
nodaro auth logout [--profile <name>]               # delete a saved profile
```

| `auth login` のオプション | 内容 |
| --- | --- |
| `--profile <name>` | 保存するプロファイルです。デフォルトは `production` です。 |
| `--token <token>` | ブラウザーを開いたり、入力を求めたりせずに、このトークンを保存します。 |
| `--base-url <url>` | Nodaro のインスタンスです。デフォルトは `https://app.nodaro.ai` です。 |
| `--no-browser` | ブラウザーを使わず、代わりにトークンを貼り付けます。 |

CLI は、プロファイルを `~/.config/nodaro/config.json` に、自分のユーザーだけが読み取れる状態（ファイルモード `0600`）で保存します。別のフォルダーに保存するには、`NODARO_CONFIG_DIR` を設定します。

## 複数のインスタンスにプロファイルを使う
**プロファイル**は、保存されたインスタンスのアドレスとトークンです。Nodaro Cloud、ステージング環境、ローカル環境など、インスタンスごとに 1 つのプロファイルを作成します。その後、すべてのコマンドが受け付ける `--profile` で、使うプロファイルを選びます。

```bash
nodaro auth login --profile prod    --base-url https://app.nodaro.ai
nodaro auth login --profile staging --base-url https://staging.example.com
nodaro auth login --profile local   --base-url http://localhost:3000

nodaro projects list --profile staging
```

`--profile` を付けないコマンドは、デフォルトのプロファイルを使います。プロファイルを保存するまでのデフォルトは `production` で、最初に保存したプロファイルがデフォルトになります。そのため、ほとんどの人には、フラグなしの `nodaro auth login` を 1 回実行するだけで十分です。

## ワークスペースを選ぶ
組織機能のあるインスタンスでは、作業は**ワークスペース**の中で行われます。1 つのコマンドだけで選ぶには `--workspace <id>` を、シェルや CI ジョブで選ぶには `NODARO_WORKSPACE` を使い、プロファイルに保存するには `nodaro workspace use <id>` を使います。どれも設定しない場合、作業は個人スペースで行われます。[ワークスペースと組織](https://nodaro.ai/docs/developers/cli/workspaces)を参照してください。

## 実行する 3 つの方法
CLI は、Nodaro が作業を実行する 3 つの方法をすべて扱います。作ったものに合う方法を選んでください。

| 目的 | コマンド |
| --- | --- |
| 保存したワークフローを実行する | `nodaro workflows run <workflowId>` |
| 公開済みのアプリを、そのために整えられた入力と出力で実行する | `nodaro apps run <slug> --input key=value` |
| ワークフローなしで、単一ノードを直接実行する | `nodaro nodes run <type> --param key=value` |

`nodaro nodes run` は、[MCP サーバー](https://nodaro.ai/docs/mcp/tools)の `generate_image` や `generate_video` のような、操作を直接実行するツールに相当する CLI コマンドです。生成系のノードはすべて `POST /v1/<type>` で応答するので、`nodaro nodes list` に表示されるノードは、どれも `nodaro nodes run` で実行できます。REST 側については、[単一ノードの実行](https://nodaro.ai/docs/developers/api/nodes)を参照してください。

実行が終わるまで待つには、`--watch` を付けます。

```bash
nodaro nodes run generate-image \
  --param prompt="a snow leopard on a mountain ridge, cinematic" \
  --param provider=flux \
  --watch
```

`--param` の書式については[パラメーターと入力ファイル](https://nodaro.ai/docs/developers/cli/params)を、CLI をスクリプト化する前には[出力と終了コード](https://nodaro.ai/docs/developers/cli/output)を参照してください。

## CLI が扱わないもの
CLI は、クレジット、開発者アプリ、OAuth、パイプライン、Reduce、アップロード用のヘルパーを扱いません。これらには、[SDK](https://nodaro.ai/docs/developers/sdk) または [REST API](https://nodaro.ai/docs/developers/api) を使ってください。

CLI からコードへの移行は、すぐに済みます。次は、`nodaro workflows run wf_abc` に相当する SDK のコードです。

```ts

const nodaro = createClient({
baseUrl: "https://app.nodaro.ai",
auth: new StaticTokenAuth(process.env.NODARO_TOKEN!),
})

const run = await nodaro.workflows.run("wf_abc")
```

## 次のステップ
  - [コマンド](https://nodaro.ai/docs/developers/cli/commands): 
プロジェクト、ワークフロー、アプリ、ノード、モデル、ピッカー、実行、ジョブなど、すべてのコアコマンドです。
  
  - [パラメーターと入力ファイル](https://nodaro.ai/docs/developers/cli/params): 
    --param、--input、--params-file が、テキストをどのようにリクエストボディへ変換するかです。
  
  - [出力と終了コード](https://nodaro.ai/docs/developers/cli/output): 
JSON 出力、--watch、そしてスクリプトで分岐させるための終了コードです。
  
  - [例](https://nodaro.ai/docs/developers/cli/examples): 
cron ジョブ、CI ゲート、文字起こしからの字幕、プロンプトウィザードのレシピです。

## Frequently asked questions

### Nodaro CLI をインストールするには、どうすればよいですか？

Node.js 20 以降で、npm install -g @nodaro/cli を実行します。Node.js がない場合は、パブリック GitHub リポジトリの cli-v リリースから、macOS、Linux、Windows 用のスタンドアロンのバイナリをダウンロードします。インストールの確認は、nodaro --version で行います。

### Nodaro CLI にログインするには、どうすればよいですか？

nodaro auth login を実行します。ブラウザーで「Nodaro CLI を承認」ページが開き、「承認」をクリックすると、CLI が個人用 API トークンを受け取ります。CI ジョブでは、nodaro auth login --token でトークンを直接渡します。

### Nodaro CLI は、トークンをどこに保存しますか？

~/.config/nodaro/config.json に、自分のユーザーだけが読み取れるファイル権限で保存します。別のフォルダーに保存したい場合は、環境変数 NODARO_CONFIG_DIR を設定します。

### セルフホスティングの Nodaro でも CLI を使えますか？

使えます。--base-url に自分の環境のアドレスを設定してプロファイルを保存します。たとえば nodaro auth login --profile local --base-url http://localhost:3000 のようにし、その後コマンドに --profile local を付けます。

### CLI と SDK は、どちらを使うべきですか？

ターミナルでの作業、cron ジョブ、CI パイプライン、簡単な確認には CLI を使います。コードで書く連携には、TypeScript SDK を使います。CLI は SDK の薄いラッパーなので、CLI でできることは、SDK でもすべてできます。
