# Managing Namespaces

> **ℹ️ Info:**
> Open source Temporal
>
> This page covers namespace operations for **open source Temporal**. For core namespace concepts, see
> [Temporal Namespace](/namespaces). For Temporal Cloud, see [Temporal Cloud Namespaces](/cloud/namespaces).
>

A [Namespace](/namespaces) is a unit of isolation within the Temporal Platform. Before you can run Workflows, you must
register at least one Namespace with your Temporal Service.

## Create a Namespace

Registering a Namespace creates it on the Temporal Service. When you register a Namespace, you must set a
[Retention Period](/temporal-service/temporal-server#retention-period) that determines how long closed Workflow
execution history is kept.

You can create Namespaces using:

- **Temporal CLI** (recommended): [`temporal operator namespace create`](/cli/command-reference/operator#create)
- **Go SDK**: [`RegisterNamespace`](/develop/go/client/namespaces#register-namespace)
- **Java SDK**: [`RegisterNamespace`](/develop/java/client/namespaces#register-namespace)
- **TypeScript SDK**: [Namespace management](/develop/typescript/client/namespaces#register-namespace)

### The default Namespace

If no Namespace is specified, SDKs and CLI use the `default` Namespace. You must register this Namespace before using
it.

For local development, the [`temporal server start-dev`](/cli/command-reference/server#start-dev) command automatically creates the
`default` Namespace.

For all other deployment methods, create the `default` Namespace manually using the Temporal CLI:

```bash
temporal operator namespace create --namespace default
```

Namespace registration takes up to 15 seconds to complete. Wait for this process to finish before making calls to the
Namespace.

## Manage Namespaces

Common namespace management operations:

| Operation | CLI Command                                                                        | Description                         |
| --------- | ---------------------------------------------------------------------------------- | ----------------------------------- |
| List      | [`temporal operator namespace list`](/cli/command-reference/operator#list)         | List all registered Namespaces      |
| Describe  | [`temporal operator namespace describe`](/cli/command-reference/operator#describe) | Get details for a Namespace         |
| Update    | [`temporal operator namespace update`](/cli/command-reference/operator#update)     | Update Namespace configuration      |
| Delete    | [`temporal operator namespace delete`](/cli/command-reference/operator#delete)     | Delete a Namespace and all its data |

For SDK-based namespace management:

- [Go SDK namespace management](/develop/go/client/namespaces#manage-namespaces)
- [Java SDK namespace management](/develop/java/client/namespaces#manage-namespaces)
- [TypeScript SDK namespace management](/develop/typescript/client/namespaces#manage-namespaces)

### Deprecate vs Delete

- **Deprecate**: Prevents new Workflow Executions from starting, but existing Workflows continue to run.
- **Delete**: Removes the Namespace and all Workflow Executions. This is irreversible.

## Security

Use a custom [Authorizer](/self-hosted-guide/security#authorizer-plugin) on your Frontend Service to control who can
create, update, or deprecate Namespaces.

Without an Authorizer configured, Temporal uses the `nopAuthority` authorizer that allows all API calls unconditionally.

For Temporal Cloud, [role-based access controls](/cloud/manage-access/roles-and-permissions#namespace-level-permissions) provide namespace-level authorization without custom configuration.

## Best practices

For namespace naming conventions, organizational patterns, and production safeguards, see
[Namespace Best Practices](/best-practices/managing-namespace).
