> ## Documentation Index
> Fetch the complete documentation index at: https://tbd-6fc993ce-hypeship-clarify-project-flag-resolution.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Projects

Manage [Projects](/info/projects) from the CLI and scope other commands to a specific project.

## Scoping commands to a project

Use the global `--project` flag (or the `KERNEL_PROJECT` environment variable) to scope any `kernel` command to a project. The flag value is forwarded verbatim as the `X-Kernel-Project-Id` header on every authenticated API request, so it must be a **project ID** — the CLI does not look up names for this flag.

```bash theme={null}
# Scope a single command
kernel browsers list --project proj_abc123

# Scope via environment variable
export KERNEL_PROJECT=proj_abc123
kernel apps list
```

Run `kernel projects list` to find the ID for a project by name.

OAuth-based logins (`kernel login`) remain org-wide by default, so this is the recommended way to target a single project when logged in with OAuth.

<Info>
  Project-scoped API keys are already bound to a project server-side, so you don't need `--project` when using them — but if you do pass it, it must match the key's project or the request is rejected.
</Info>

Name resolution **is** supported on the `projects` subcommand positional arguments (`kernel projects get <id-or-name>`, `delete`, `limits get`, `limits set`) — those commands list your projects and match case-insensitively before issuing the request.

## Commands

### `kernel projects list`

List all projects in the authenticated organization.

### `kernel projects create <name>`

Create a new project with the given name.

```bash theme={null}
kernel projects create staging
```

### `kernel projects get <id-or-name>`

Show details for a project by ID or name.

### `kernel projects delete <id-or-name>`

Delete a project. The project must be empty, and it can't be the last active project in the org.

## Project limits

Each project can have its own concurrency limit overrides that cap resource use below the org-wide limits.

### `kernel projects limits get <id-or-name>`

Show the per-project limit overrides. Fields show `unlimited` when no project-level cap is set (the org limit applies).

| Flag                       | Description             |
| -------------------------- | ----------------------- |
| `--output json`, `-o json` | Output raw JSON object. |

### `kernel projects limits set <id-or-name>`

Update per-project limit overrides. Pass `0` to a limit to remove the cap for that field.

| Flag                               | Description                                            |
| ---------------------------------- | ------------------------------------------------------ |
| `--max-concurrent-sessions <n>`    | Maximum concurrent browser sessions (0 to remove cap). |
| `--max-concurrent-invocations <n>` | Maximum concurrent app invocations (0 to remove cap).  |
| `--max-pooled-sessions <n>`        | Maximum pooled sessions capacity (0 to remove cap).    |
| `--output json`, `-o json`         | Output raw JSON object.                                |

```bash theme={null}
# Cap staging to 5 concurrent browser sessions
kernel projects limits set staging --max-concurrent-sessions 5

# Remove the cap
kernel projects limits set staging --max-concurrent-sessions 0
```
