# Projects & Roles

TeraSwitch uses a hierarchical structure of organizations, projects, and roles to help you organize resources and manage team access.

### Organization Structure

```
Organization (Account)
├── Project A
│   ├── Metal Services
│   ├── Cloud Instances
│   └── IP Blocks
├── Project B
│   ├── Metal Services
│   └── Cloud Instances
└── Project C
    └── ...
```

#### Organizations

Your **organization** (also called account) is the top-level entity that:

* Contains all your projects
* Manages billing and payments
* Controls organization-wide settings
* Maintains the member list

#### Projects

**Projects** are containers for resources that help you:

* Organize infrastructure by environment (production, staging, development)
* Separate resources by team or department
* Control access to specific resources
* Track costs per project

Each project has its own:

* Metal services
* Cloud instances
* IP blocks
* API tokens
* SSH keys

### Roles

Roles determine what actions a user can perform within the organization or project.

#### Organization Roles

| Role       | Permissions                                                              |
| ---------- | ------------------------------------------------------------------------ |
| **Owner**  | Full access to everything, including billing and organization deletion   |
| **Admin**  | Manage all resources, users, and settings (except billing owner changes) |
| **Member** | View organization details, access assigned projects                      |

#### Project Roles

| Role       | Permissions                                                   |
| ---------- | ------------------------------------------------------------- |
| **Admin**  | Full access to project resources, can manage project settings |
| **Member** | Create and manage resources within the project                |
| **Viewer** | Read-only access to project resources                         |

### Managing Projects

#### Viewing Your Projects

From the Dashboard, the **Your Projects & Roles** section shows:

* All projects you have access to
* Your role in each project
* Project description
* Quick access to switch projects

#### Switching Projects

1. Click the **Project Selector** dropdown in the sidebar
2. Select the project you want to work in
3. The sidebar will update to show resources in that project

#### Creating a New Project

Organization Admins can create new projects:

1. Go to **Settings** > **Organization**
2. Navigate to project management
3. Click **Create Project**
4. Enter a name and description
5. Assign initial members

### Managing Members

#### Viewing Organization Members

1. Go to **Settings** > **Organization** > **Organization Members**
2. View all members with their:
   * Username and email
   * Account role (Admin/Member)
   * Authentication methods (Email/Password, Google)
   * Projects assigned
   * Join date

#### Adding Members

Organization Admins can invite new members:

1. Go to **Settings** > **Organization**
2. Click **Invite Member**
3. Enter the email address
4. Select the role and projects
5. Send the invitation

#### Modifying Access

Use the **Actions** menu on each member to:

* Change their organization role
* Add or remove project access
* Remove from organization

### Best Practices

#### Project Organization

* **By Environment**: Create separate projects for production, staging, and development
* **By Team**: Give each team their own project to manage
* **By Client**: For agencies, separate client resources into projects

#### Access Control

* **Principle of Least Privilege**: Give users only the access they need
* **Use Project Roles**: Assign project-specific roles rather than organization-wide admin
* **Regular Audits**: Review member access periodically using the Audit History

#### API Tokens

Each project has its own API tokens. This allows you to:

* Create tokens scoped to specific projects
* Revoke access to one project without affecting others
* Track API usage per project

See [API Tokens](/account/api-tokens.md) for more details.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.teraswitch.com/getting-started/projects-and-roles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
