# CLI

手元の道具は `aikagi` という実行ファイル 1 つです。常駐しません。

## インストール

macOS と Linux は次の 1 行です。`~/.local/bin` に置きます。管理者権限は要りません。

```sh
curl -fsSL https://aikagi.dev/install.sh | sh
```

置き場所を変えたいときは `AIKAGI_INSTALL_DIR` を指定してください。Windows では WSL2 の中で同じ 1 行を実行します。シェルのフックも、エージェントへの受け渡しも WSL2 の側で動きます。

## 新しくする

```sh
aikagi upgrade
```

自分自身を最新の版に入れ替えます。新しい版が出ていれば、コマンドの終わりに 1 日 1 度だけ 1 行でお知らせします。知らせが要らないときは `AIKAGI_NO_UPDATE_CHECK=1` を設定してください。CI で確かめるだけなら `aikagi upgrade --check` です（新しい版があるときだけ終了コード 10 を返します）。

## 最初の 3 つ

```sh
aikagi login
aikagi init
aikagi hook install
```

`login` はブラウザを開いて端末を承認します（[端末](https://aikagi.dev/guide/devices.md)）。`init` はいま居るリポジトリを場所に結びつけ、`.aikagi.toml` を書きます。`hook install` は AI エージェントの起動に aikagi を挟みます（[AI エージェントとの接続](https://aikagi.dev/guide/agents.md)）。

`init` は対話です。リポジトリの名前から場所を推し量って提案するので、そのままで良ければ Enter だけで進めます。プロジェクトが無ければその場で作れます。

## 鍵を出し入れする

- **`aikagi ls [フォルダ]`**: 名前を並べます。値は出しません。`--recursive` で下まで。
- **`aikagi get 名前`**: 値を 1 つだけ標準出力に出します。
- **`aikagi set 名前`**: 値を預けます。値は標準入力から渡してください。`--comment` で覚書を添えられます。
- **`aikagi rm 名前`**: 消します。履歴もいっしょに消えます。
- **`aikagi history 名前`**: 版の一覧。値は出ません。
- **`aikagi rollback 名前 --version N`**: その版の値で新しい版を作ります。
- **`aikagi export`**: いまの場所の鍵をまとめて出します。`--format json` も選べます。
- **`aikagi import FILE`**: `.env` 形式をまとめて読み込みます。[他のサービスからの移行](https://aikagi.dev/guide/import.md)。

値を引数に書くとシェルの履歴に残ります。`set` は標準入力から渡してください。

```sh
printf %s "$VALUE" | aikagi set openai/api_key
```

## どの場所を指しているか

場所は、指定 → 環境変数 → `.aikagi.toml` の順で決まります。指定はどのコマンドにも付けられます。

- **`-w` / `--workspace`**: ワークスペース。
- **`-p` / `--project`**: プロジェクト。
- **`-e` / `--env`**: 環境。
- **`--personal`**: 個人の保管庫。ほかの指定とは併用できません。

いまどこを指しているかは `aikagi status` で分かります。

## .aikagi.toml

リポジトリの根に置くファイルです。**秘密は入りません。**そのままリポジトリに入れて、チームで共有してください。

```sh
workspace   = "acme"
project     = "web-app"
environment = "development"

[branches]
main    = "production"
release = "staging"

[commands.claude]
[commands.codex]
```

`[branches]` を書くと、git のブランチから環境が決まります。当てはまるものが無ければ `environment` の値です。`[commands.…]` に書いたコマンドが、起動のときに鍵を受け取ります。

**資格情報のことは何も書きません。**誰として動くかは、手元のログインか、エージェントの鍵（`AIKAGI_TOKEN`）が決めます。

## チームを扱う

```sh
aikagi workspace create acme
aikagi project create acme/web-app
aikagi env add qa -w acme -p web-app
aikagi share acme/web-app teammate@example.com --role editor
aikagi promote openai/api_key --to acme/web-app/production/openai/api_key
aikagi agent create --name "GitHub Actions" --slug github-actions -w acme -p web-app --role viewer
aikagi token create --name ci -w acme -p web-app --agent github-actions
aikagi audit --since 24h
```

## どのコマンドにも付くもの

- **`--json`**: 機械で読める形にします。スクリプトから呼ぶときに。
- **`-q` / `--quiet`**: 補足の出力を止めます。
- **`-y` / `--yes`**: 確認に答えます。対話でないときの削除には必須です。

終了コードで失敗の種類が分かります。正常が 0、その他の失敗が 1、指定の誤りが 2、認証が 3、権限が 4、見つからないが 5、通信できないが 6 です。

## 調子を見る

```sh
aikagi doctor
```

資格情報の出所、PATH の中の並び、シェルの設定、サーバへ届くかどうかを順に見て、直し方を 1 行ずつ出します。サーバに触らずに見たいときは `--offline` を付けてください。

---

出典: https://aikagi.dev/guide/cli/
