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

# Terraform projects

> Manage a Fireweave project with fireweave_project: name, slug, description, status, and import by project id.

`fireweave_project` manages a Fireweave project in the organisation that owns your API key.

A project is the top-level container for environments, integrations, and rollouts. Terraform creates and updates it through `GET` / `POST /v1/projects` and `GET` / `PATCH` / `DELETE /v1/projects/{projectID}`.

Generated schema: [fireweave\_project on the Terraform Registry](https://registry.terraform.io/providers/FireWeave-HQ/fireweave/latest/docs/resources/project).

## Example

```hcl theme={null}
resource "fireweave_project" "app" {
  name        = "Payments Service"
  slug        = "payments"
  description = "Checkout and billing services"
  status      = "active"
}
```

`slug` must be unique within the organisation. Changing it forces a new resource.

## Arguments

| Name | Type | Required | Notes |
| - | - | - | - |
| `name` | String | Yes | Human-readable project name. Updates in place. |
| `slug` | String | Yes | URL-safe slug, unique within the organisation. **Forces replacement.** |
| `description` | String | No | Longer description. |
| `status` | String | No | `active` or `archived`. Optional + computed. Defaults to `active`. |

### Read-only

| Name | Type | Notes |
| - | - | - |
| `id` | String | Project identifier assigned by Fireweave. Use this for import. |

The API also returns `createdAt` and `updatedAt`. Those fields are not Terraform attributes.

## Status

Leave `status` unset and the provider defaults it to `active`. Set `archived` to archive the project.

On create, if you set a status other than the API create default, the provider creates the project and then `PATCH`es status.

## Import

Import by project id:

```bash theme={null}
terraform import fireweave_project.app <project_id>
```

After import, run `terraform plan` and align `name`, `slug`, `description`, and `status` with the remote project so the next apply is a no-op.

## Look up a project you do not manage

Use the `fireweave_project` or `fireweave_projects` data source when another workspace (or the console) already owns the project. See [Data sources](/infrastructure/terraform/data-sources).

## Next

<Columns cols={2}>
  <Card title="Environments" href="/infrastructure/terraform/environments" icon="layer-group">
    Attach `stage` and `prod` environments to `fireweave_project.app.id`.
  </Card>

  <Card title="Data sources" href="/infrastructure/terraform/data-sources" icon="magnifying-glass">
    Look up a project by `id` or `slug`.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.