---
title: Spaces
category: concept
slug: spaces
summary: "Organizational containers for Droplets — bind access policies, group related work, give teams a shared home."
---
# Spaces

Organizational containers for Droplets — bind access policies, group related work, give teams a shared home.

A Space groups Droplets that belong together — a team's workspace, a project's home, a long-running initiative. Each Space has a **join policy** that decides who can be a member and an **access policy** that decides what members can see.

Spaces are the second core object in Drop after Droplets. Most Droplets live inside a Space; the few that don't are personal scratch space.

## Join policies

Three policies decide who can join a Space without being explicitly invited:

- **INVITE_ONLY** — only owners and admins add members. Default for sensitive projects.
- **ANYONE_HIMARLEY** — any @himarley.com employee can self-join.
- **EVERYONE_AUTOMEMBER** — all employees auto-join at creation and going forward. Used for company-wide Spaces.

Changing the policy to `EVERYONE_AUTOMEMBER` triggers a one-time backfill that adds every existing employee as a member.

## Access on Droplets inside a Space

When a Droplet lives in a Space, its access mode can be set to `SPACE` — meaning "the current members of this Space, live." Adding someone to the Space immediately grants them access; removing them revokes it. No separate per-Droplet grant list to maintain.

A Droplet can also explicitly use `EVERYONE` or `SPECIFIC` access even inside an invite-only Space; the access panel shows the **effective audience** when the literal mode is wider than the Space's policy.

## Roles

Each member has one of three roles:

- **OWNER** — full control, including managing members, Space settings, and deleting the Space
- **EDITOR** — read access plus the ability to add and edit Droplets in the Space. This is the default role when a member is added or self-joins.
- **READ_ONLY** — read access to Space-mode Droplets, no edit rights


## Operations

### Create a Space

Owners create Spaces; the creator becomes the first `OWNER`. Pick a slug that's short and memorable — it appears in URLs and `@`-mentions.

**CLI**

```bash
drop spaces create "team-projects" \
  --description "Shared workspace for the platform team" \
  --join-policy anyone-himarley
```

**MCP**

```json
{
  "tool": "drop_create_space",
  "arguments": {
    "name": "team-projects",
    "description": "Shared workspace for the platform team",
    "joinPolicy": "ANYONE_HIMARLEY"
  }
}
```

**HTTP**

```bash
curl -X POST https://drop.himarley.ai/api/spaces \
  -H "Authorization: Bearer $DROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "team-projects",
    "description": "Shared workspace for the platform team",
    "joinPolicy": "ANYONE_HIMARLEY"
  }'
```

### Add members

Bulk-add by email. The default role is `EDITOR`; pass `READ_ONLY` for view-only access. Owners can change roles later.

**CLI**

```bash
drop spaces members add team-projects \
  jane@himarley.com kai@himarley.com \
  --role EDITOR
```

**MCP**

```json
{
  "tool": "drop_space_add_members",
  "arguments": {
    "spaceSlug": "team-projects",
    "emails": ["jane@himarley.com", "kai@himarley.com"],
    "role": "EDITOR"
  }
}
```

**HTTP**

```bash
curl -X POST https://drop.himarley.ai/api/spaces/team-projects/members \
  -H "Authorization: Bearer $DROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["jane@himarley.com", "kai@himarley.com"], "role": "EDITOR"}'
```

### Move a Droplet into a Space

Flips the Droplet's access mode to `SPACE` (members-only). Pre-existing `SPECIFIC` grants are preserved as supplemental rows — you can move out of the Space later and recover the original access list.

**CLI**

```bash
drop spaces add team-projects my-droplet
```

**MCP**

```json
{
  "tool": "drop_app_move",
  "arguments": {
    "slug": "my-droplet",
    "targetSpaceSlug": "team-projects"
  }
}
```

**HTTP**

```bash
curl -X POST https://drop.himarley.ai/api/apps/my-droplet/move \
  -H "Authorization: Bearer $DROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"targetSpaceSlug": "team-projects"}'
```

