> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cli/reference/ai.md).

# norbix ai

LLM and MCP server integrations, AI service users, and coding-agent setup (ai init).

LLM and MCP server integrations, AI service users, and coding-agent setup (ai init).

21 commands (`@norbix.ai/cli` 1.16.0):

* [`norbix ai init`](#norbix-ai-init) — Set up this project so a coding agent uses the norbix CLI correctly.
* [`norbix ai llm`](#norbix-ai-llm) — Show one LLM integration
* [`norbix ai llm default`](#norbix-ai-llm-default) — Make an LLM integration the project default
* [`norbix ai llm delete`](#norbix-ai-llm-delete) — Delete an LLM integration
* [`norbix ai llm disable`](#norbix-ai-llm-disable) — Turn off an LLM integration
* [`norbix ai llm enable`](#norbix-ai-llm-enable) — Turn on an LLM integration
* [`norbix ai llm save`](#norbix-ai-llm-save) — Create or update an LLM integration
* [`norbix ai llm test`](#norbix-ai-llm-test) — Check that an LLM integration works: a live call to the provider
* [`norbix ai llms`](#norbix-ai-llms) — List the LLM integrations set up for this project
* [`norbix ai mcp`](#norbix-ai-mcp) — Show one MCP server integration
* [`norbix ai mcp delete`](#norbix-ai-mcp-delete) — Delete an MCP server integration
* [`norbix ai mcp disable`](#norbix-ai-mcp-disable) — Turn off an MCP server integration
* [`norbix ai mcp enable`](#norbix-ai-mcp-enable) — Turn on an MCP server integration
* [`norbix ai mcp save`](#norbix-ai-mcp-save) — Create or update an MCP server integration
* [`norbix ai mcp test`](#norbix-ai-mcp-test) — Check that an MCP server integration works: connect to the server
* [`norbix ai mcps`](#norbix-ai-mcps) — List the MCP server integrations set up for this project
* [`norbix ai service-user create`](#norbix-ai-service-user-create) — Create an AI service user and print its first API key
* [`norbix ai service-user delete`](#norbix-ai-service-user-delete) — Delete an AI service user; its keys stop working at once
* [`norbix ai service-user revoke-key`](#norbix-ai-service-user-revoke-key) — Revoke one API key of an AI service user; it stops working at once
* [`norbix ai service-user rotate-key`](#norbix-ai-service-user-rotate-key) — Issue a new API key for an AI service user
* [`norbix ai service-users`](#norbix-ai-service-users) — List the account's AI service users

## `norbix ai init`

Set up this project so a coding agent uses the norbix CLI correctly.

```
Writes, into the current folder:
  claude   .claude/skills/norbix/SKILL.md (a Claude Code skill) and a short
           block in CLAUDE.md
  agents   the same block in AGENTS.md (Codex, OpenCode, Cursor and others
           read it)
  cursor   .cursor/rules/norbix.mdc
  all      all of the above

The files are short on purpose: `norbix schema --json` and `--help` are the
source of truth. An existing file is never overwritten without --force; a
block that is already present is left alone. --dry-run lists what would be
written.
```

```sh
norbix ai init [flags]
```

| Flag                       | Description                                                                                 |
| -------------------------- | ------------------------------------------------------------------------------------------- |
| `--dry-run`                | Resolve context and print the request that would be sent; send nothing                      |
| `-t`, `--target` `<value>` | Which agent files to write — one of: `claude`, `agents`, `cursor`, `all`; default: `claude` |
| `--force`                  | Overwrite an existing skill / rule file and rewrite an existing block                       |
| `--dir` `<value>`          | Project folder (default: current folder)                                                    |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai init
norbix ai init --dry-run
norbix ai init --target all
norbix ai init --target agents --force
```

## `norbix ai llm`

Show one LLM integration

```sh
norbix ai llm ID
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm 66b2f0a1c3d4e5f6a7b8c9d0
```

## `norbix ai llm default`

Make an LLM integration the project default

```sh
norbix ai llm default ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag        | Description                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm default 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai llm default 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai llm delete`

Delete an LLM integration

```sh
norbix ai llm delete ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm delete 66b2f0a1c3d4e5f6a7b8c9d0 --yes
norbix ai llm delete 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai llm disable`

Turn off an LLM integration

```sh
norbix ai llm disable ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm disable 66b2f0a1c3d4e5f6a7b8c9d0 --yes
norbix ai llm disable 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai llm enable`

Turn on an LLM integration

```sh
norbix ai llm enable ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag        | Description                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm enable 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai llm enable 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai llm save`

Create or update an LLM integration

```
--provider picks the body shape. The hosted providers need their API key: put
the provider-specific fields (apiKey, models, …) in --config as a JSON object
(inline, @file.json, or - for stdin). Ollama needs --endpoint. Pass --id to
update an existing integration.
```

```sh
norbix ai llm save [flags]
```

| Flag                   | Description                                                                                                                         |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `--dry-run`            | Resolve context and print the request that would be sent; send nothing                                                              |
| `--provider` `<value>` | LLM provider — required; one of: `OpenAI`, `Anthropic`, `Ollama`, `Groq`, `Google`, `Mistral`, `OpenRouter`, `Grok`, `NorbixHosted` |
| `--name` `<value>`     | Integration name — required                                                                                                         |
| `--id` `<value>`       | Integration ID — set it to update instead of create                                                                                 |
| `--endpoint` `<value>` | Provider address (self-hosted providers such as Ollama)                                                                             |
| `--model` `<value>`    | Default model                                                                                                                       |
| `--default`            | Make it the project default LLM                                                                                                     |
| `--disabled`           | Save it turned off                                                                                                                  |
| `--config` `<value>`   | Provider-specific fields as a JSON object, @file or -                                                                               |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm save --provider OpenAI --name OpenAI --model gpt-4o-mini --config @openai.json
norbix ai llm save --provider Ollama --name Local --endpoint http://localhost:11434 --model llama3
norbix ai llm save --provider OpenAI --name OpenAI --model gpt-4o-mini --config @openai.json --dry-run
```

## `norbix ai llm test`

Check that an LLM integration works: a live call to the provider

```sh
norbix ai llm test ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag        | Description                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llm test 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai llm test 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai llms`

List the LLM integrations set up for this project

```sh
norbix ai llms [flags]
```

| Flag                    | Description                            |
| ----------------------- | -------------------------------------- |
| `--page-size` `<value>` | Records per page                       |
| `--after` `<value>`     | Cursor: fetch the page after this item |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai llms --page-size 50
```

## `norbix ai mcp`

Show one MCP server integration

```sh
norbix ai mcp ID
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp 66b2f0a1c3d4e5f6a7b8c9d0
```

## `norbix ai mcp delete`

Delete an MCP server integration

```sh
norbix ai mcp delete ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp delete 66b2f0a1c3d4e5f6a7b8c9d0 --yes
norbix ai mcp delete 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai mcp disable`

Turn off an MCP server integration

```sh
norbix ai mcp disable ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp disable 66b2f0a1c3d4e5f6a7b8c9d0 --yes
norbix ai mcp disable 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai mcp enable`

Turn on an MCP server integration

```sh
norbix ai mcp enable ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag        | Description                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp enable 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai mcp enable 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai mcp save`

Create or update an MCP server integration

```
--provider picks the server and how the gateway talks to it. Every MCP
integration carries a short card — --server-name, --category, --description and
--icon are all required. Put the provider-specific fields (serverUrl, a token,
command, …) in --config as a JSON object (inline, @file.json, or - for stdin).
Pass --id to update an existing integration.
```

```sh
norbix ai mcp save [flags]
```

| Flag                      | Description                                                                                                    |
| ------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `--dry-run`               | Resolve context and print the request that would be sent; send nothing                                         |
| `--provider` `<value>`    | MCP server provider — required; one of: `GitHub`, `Stripe`, `MongoDb`, `Playwright`, `BraveSearch`, `Obsidian` |
| `--name` `<value>`        | Integration name — required                                                                                    |
| `--id` `<value>`          | Integration ID — set it to update instead of create                                                            |
| `--server-name` `<value>` | Name shown on the tool card                                                                                    |
| `--category` `<value>`    | Category shown on the tool card                                                                                |
| `--description` `<value>` | What the server does, shown on the tool card                                                                   |
| `--icon` `<value>`        | Icon name shown on the tool card                                                                               |
| `--disabled`              | Save it turned off                                                                                             |
| `--config` `<value>`      | Provider-specific fields as a JSON object, @file or -                                                          |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp save --provider GitHub --name GitHub --server-name GitHub --category Code --description "Issues and pull requests" --icon github --config @github.json
norbix ai mcp save --provider GitHub --name GitHub --server-name GitHub --category Code --description "Issues and pull requests" --icon github --config @github.json --dry-run
```

## `norbix ai mcp test`

Check that an MCP server integration works: connect to the server

```sh
norbix ai mcp test ID [flags]
```

| Argument | Required | Description    |
| -------- | -------- | -------------- |
| `ID`     | yes      | Integration ID |

| Flag        | Description                                                            |
| ----------- | ---------------------------------------------------------------------- |
| `--dry-run` | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcp test 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai mcp test 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai mcps`

List the MCP server integrations set up for this project

```sh
norbix ai mcps [flags]
```

| Flag                    | Description                            |
| ----------------------- | -------------------------------------- |
| `--page-size` `<value>` | Records per page                       |
| `--after` `<value>`     | Cursor: fetch the page after this item |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai mcps --page-size 50
```

## `norbix ai service-user create`

Create an AI service user and print its first API key

```
The key is shown once — store it now. --reach project limits the user to one
project (the configured one, or --project). --rights read can only read;
admin can change things. --env picks the environments (repeat the flag).
```

```sh
norbix ai service-user create [flags]
```

| Flag                 | Description                                                                      |
| -------------------- | -------------------------------------------------------------------------------- |
| `--env` `<value>`    | Environment it may use (repeat for several; default TEST) — repeat for several   |
| `--dry-run`          | Resolve context and print the request that would be sent; send nothing           |
| `--name` `<value>`   | A name people recognise — required                                               |
| `--reach` `<value>`  | Whole account, or one project — one of: `account`, `project`; default: `project` |
| `--rights` `<value>` | What it may do — one of: `read`, `admin`; default: `read`                        |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai service-user create --name "Claude Code on my laptop" --reach project --rights read --env TEST
norbix ai service-user create --name ci-bot --reach account --rights admin --env TEST --env PROD
norbix ai service-user create --name "Claude Code on my laptop" --reach project --rights read --env TEST --dry-run
```

## `norbix ai service-user delete`

Delete an AI service user; its keys stop working at once

```sh
norbix ai service-user delete ID [flags]
```

| Argument | Required | Description     |
| -------- | -------- | --------------- |
| `ID`     | yes      | Service user ID |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai service-user delete 66b2f0a1c3d4e5f6a7b8c9d0 --yes
norbix ai service-user delete 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai service-user revoke-key`

Revoke one API key of an AI service user; it stops working at once

```sh
norbix ai service-user revoke-key ID KEYID [flags]
```

| Argument | Required | Description                     |
| -------- | -------- | ------------------------------- |
| `ID`     | yes      | Service user ID                 |
| `KEYID`  | yes      | Key ID (see `ai service-users`) |

| Flag          | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `-y`, `--yes` | Skip the confirmation prompt (required in non-interactive shells)      |
| `--dry-run`   | Resolve context and print the request that would be sent; send nothing |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai service-user revoke-key 66b2f0a1c3d4e5f6a7b8c9d0 key_123 --yes
norbix ai service-user revoke-key 66b2f0a1c3d4e5f6a7b8c9d0 key_123 --dry-run
```

## `norbix ai service-user rotate-key`

Issue a new API key for an AI service user

```
The new key is shown once — store it now. The old keys keep working until you
revoke them; --revoke <keyId> revokes one in the same call.
```

```sh
norbix ai service-user rotate-key ID [flags]
```

| Argument | Required | Description     |
| -------- | -------- | --------------- |
| `ID`     | yes      | Service user ID |

| Flag                 | Description                                                            |
| -------------------- | ---------------------------------------------------------------------- |
| `--dry-run`          | Resolve context and print the request that would be sent; send nothing |
| `--revoke` `<value>` | Key ID to revoke at the same time                                      |

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai service-user rotate-key 66b2f0a1c3d4e5f6a7b8c9d0
norbix ai service-user rotate-key 66b2f0a1c3d4e5f6a7b8c9d0 --revoke key_123
norbix ai service-user rotate-key 66b2f0a1c3d4e5f6a7b8c9d0 --dry-run
```

## `norbix ai service-users`

List the account's AI service users

```
An AI service user is the identity an AI client (an MCP client with an API
key) acts under, with a fixed reach, rights and environments. Keys are shown as
an id and a short hint, never the key itself.
```

```sh
norbix ai service-users
```

Also takes the [global flags](/codemash/cli/reference.md#global-flags): `--json`, `--project`, `--env`, `--region`, `--api-key`, `--account`, `--profile`.

Examples:

```sh
norbix ai service-users
```
