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

# Organizations, projects, environments

> How tenancy, production gating, and per-env defaults work.

## Overview

Maya's login lands in org `fieldkit`, project `web-app`, environment `production`. Those three scopes show up on management keys, SDK keys, and every `shipd` command.

## Hierarchy

```text theme={null}
organization  fieldkit
  └── project  web-app
        ├── environment  production   (isProduction: true)
        └── environment  staging
```

At most one live production environment per project. The slug can be `production`, `canary`, or `production-eu` — protection is the `isProduction` flag, not the name.

## What is global vs per env

|                                                 | Project-global              | Per environment        |
| ----------------------------------------------- | --------------------------- | ---------------------- |
| Flag key, type, variants, tags, lifecycle       | yes                         |                        |
| Default / fallthrough, targeting rules, enabled |                             | yes                    |
| SDK key                                         |                             | yes (bound to one env) |
| Management API key                              | org + project + **one env** |                        |

Changing a definition (type, variants, …) applies to **all** environments. `shipd push` warns. Applying it requires `flag.production.toggle` even if `--env staging`.

Default-only updates on non-production use `flag.state.update`.

## Keys

| Kind       | Prefix              | Used by       |
| ---------- | ------------------- | ------------- |
| Management | `shipd_mgmt_`       | CLI, CI       |
| Server SDK | `shipd_sdk_server_` | Node, workers |
| Client SDK | `shipd_sdk_client_` | browsers      |

`shipd login` is device auth: you pick org → project → env, and the CLI stores a **management** key, not a user session.

## Next

* [Define flags](/guides/define-flags)
* [CLI reference](/reference/cli)
