> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rafftechnologies.com/llms.txt
> Use this file to discover all available pages before exploring further.

# raff project

> Manage projects from the CLI — list, get, create, update, delete. Projects are the container for VMs, volumes, IPs, VPCs, buckets, and access control.

<sub>Updated May 10, 2026</sub>

The `raff project` command group manages projects — the access-control unit that owns every resource. See [Team & Projects — Projects](/products/manage/team-projects#projects--the-unit-of-access-control) for the model.

## Subcommand index

| Subcommand                                                                                                                            | What it does                      |
| ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| [`list`](#list)                                                                                                                       | List every project in the account |
| [`get`](#get)                                                                                                                         | Show details for one project      |
| [`create`](#create)                                                                                                                   | Create a new project              |
| [`update`](#update)                                                                                                                   | Rename or change description      |
| [`delete`](#delete)                                                                                                                   | Delete an empty project           |
| [`member list`](#member-list) / [`get`](#member-get) / [`add`](#member-add) / [`update`](#member-update) / [`remove`](#member-remove) | Manage project-scoped members     |

***

## list

```bash theme={null}
raff project list [--output table|json]
```

List every project the API key has visibility into. Owner-level keys see all; project-only keys see only their assigned projects.

## get

```bash theme={null}
raff project get <project-id> [--output table|json]
```

Show details for one project — name, description, default region, member count, created-at, the `Default` badge if applicable.

## create

```bash theme={null}
raff project create \
  --name <name> \
  [--description <text>] \
  [--default-region us-east]
```

Create a new project. Default region is `us-east` if omitted. Project names must be unique per account.

```bash theme={null}
raff project create --name "customer-acme" --description "ACME Corp's whitelabel deployment"
```

## update

```bash theme={null}
raff project update <project-id> [--name <new-name>] [--description <text>]
```

Rename or change the description. The project's identifier and slug stay stable; automation referencing the project by UUID is unaffected.

## delete

```bash theme={null}
raff project delete <project-id>
```

Delete an empty project. Fails if any resources still belong to it. The `Default` project cannot be deleted, ever — see [Edit or delete a project](/products/manage/team-projects/quickstart-guides/delete-a-project) for the rules.

## Member subcommands

`raff project member` manages project-scoped members. The project is taken from `--project-id` (global flag), `RAFF_PROJECT_ID`, or the active profile — same precedence as every other project-scoped command. Account Owners have implicit access via their account-level role and don't need to be added explicitly. Alias: `raff project members`.

### member list

```bash theme={null}
raff project member list [--status pending|active|suspended] [--output table|json]
```

List members of the current project. Output columns: `ID`, `EMAIL`, `STATUS`, `ROLE`.

### member get

```bash theme={null}
raff project member get <member-id>
```

### member add

```bash theme={null}
raff project member add --role-id <project-role-uuid> \
  ( --target-user-id <uuid> | --api-key-id <uuid> )
```

Add an existing account user (or API key) to the current project. Required: `--role-id` plus one of `--target-user-id` / `--api-key-id` (mutually exclusive). For brand-new users, send an account invitation first via [`raff invitation create-account`](/reference/cli/invitation#create-account), or invite directly to a project via [`raff invitation create-project`](/reference/cli/invitation#create-project).

### member update

```bash theme={null}
raff project member update <member-id> \
  [--role-id <uuid>] [--status active|suspended]
```

Update a project member's role or status. At least one flag must be provided.

### member remove

```bash theme={null}
raff project member remove <member-id> [--force]
```

Remove a member from the current project. Pass `--force` to skip the confirmation prompt. The member's account-level access is unaffected.

## Permission notes

| Command                                        | Required permission                                                                |
| ---------------------------------------------- | ---------------------------------------------------------------------------------- |
| `list`, `get`                                  | `account.projects.view` (Owner, Admin, Member all have it)                         |
| `create`                                       | `account.projects.create` (Owner, Admin)                                           |
| `update`                                       | `account.projects.manage` (Owner, Admin)                                           |
| `delete`                                       | `account.projects.delete` (**Owner only by default**; Admin does NOT include this) |
| `member list`, `member get`                    | `project.members.view` (project-scoped)                                            |
| `member add`, `member update`, `member remove` | `project.members.manage` (project-scoped — Project Admin)                          |

If you get `403 Forbidden`, the key's role doesn't include the permission for that action.

## Related

<CardGroup cols={3}>
  <Card title="VM commands" icon="server" href="/reference/cli/vm">
    Use --project-id to scope VM operations.
  </Card>

  <Card title="Roles, scopes, and the Owner" icon="lightbulb" href="/products/manage/team-projects/concepts/roles-and-api-keys">
    Why `delete` may 403 even on Admin keys.
  </Card>

  <Card title="Permissions matrix" icon="table" href="/products/manage/team-projects/details/permissions-matrix">
    Which role grants which `account.projects.*` permission.
  </Card>
</CardGroup>
