Manage spaces.
A space is an isolated collection of memories with its own roster, groups, and access grants. It is identified by an immutable 12-character slug (also the X-Me-Space header value) and a renamable display name. Your active space is the one carried on every memory command; set it with me space use (or me login <space>).
These commands require an authenticated credential. Invitations operate on the active space.
- me space list -- list the spaces you belong to
- me space members -- list users in the active space
- me space use -- set the active space
- me space create -- create a space
- me space rename -- rename a space
- me space delete -- delete a space
- me space remove-member -- remove a member from the space (admin)
- me space leave -- remove yourself from the space
- me space invite -- invite a user (and manage invitations)
List the spaces you belong to. The active space is marked. Alias: me space ls.
me space list
List members of the active space. Available to any space member — this is how
you discover who you can add to a group (me group add) or grant a path to
(me access grant). By default it lists human users only; use --kind to
list service accounts, or all for every member kind. Groups are
never listed (a group is a roster entry, not a member), and pending
invitations are not included (see me space invite list).
me space members [--kind <kind>]
| Option | Description |
|---|---|
--kind |
Member kind to list: u/user (default), s/service (service-account), or all. all adds a kind column. |
Set the active space (the X-Me-Space context used by other commands).
me space use [space]
| Argument | Required | Description |
|---|---|---|
space |
no | Space slug or name. Prompts interactively if omitted. |
The active space is saved as the per-server active_space in your global
~/.config/me/config.yaml. It applies to the resolved server (the --server
flag or ME_SERVER, else your default server).
Note that ME_SPACE, when set, still overrides the saved active space.
Create a new space and make it active. As the creator you always become a space admin (so you can reshape access however you like); the flags below only set the space's default access. With no flags you get today's conventions: owner@home + owner@share (not owner@root), joining users automatically get owner@~, and a default team group is created with read@/share + write@/share/projects.
me space create <name> [--no-home-grants] [--default-group <name>]
[--no-default-group-grants] [--no-default-group]
| Argument | Required | Description |
|---|---|---|
name |
yes | Display name for the space. |
| Option | Description |
|---|---|
--no-home-grants |
Joining users get no owner@~. You (the creator) get god mode instead: admin + owner@/ (the whole space). |
--default-group <name> |
Name the default/invite group (default team). |
--no-default-group-grants |
Create the default group without read@/share + write@/share/projects — a grantless group you configure by hand. |
--no-default-group |
Don't create a default group at all. |
The name, grants, and existence of the default group are independent axes, so --default-group team behaves exactly like the bare default. A fully manual, god-mode space is just --no-home-grants --no-default-group. Conflicting combinations error (for example, --no-default-group with --no-default-group-grants).
Note: in a space where members get no automatic access (
--no-home-grantsand no granted default group), a fresh joiner holds zero grants and is locked out until you grant them access — grant a default groupread@/shareonce and invite through it (seeme space invite) so joiners land read-only.
Rename a space's display name. The slug is immutable (it's the schema name and routing key), so this changes only the label.
me space rename <space> <new-name>
| Argument | Required | Description |
|---|---|---|
space |
yes | Space slug or name. |
new-name |
yes | New display name. |
Permanently delete a space and all its data — memories, grants, groups, invitations. Irreversible. Alias: me space rm.
me space delete <space> [--force]
| Argument | Required | Description |
|---|---|---|
space |
yes | Space slug or name. |
| Option | Description |
|---|---|
--force |
Skip the confirmation prompt. |
Remove a user or service account from the active space's roster, scrubbing their access grants and group memberships in that space. Admin only.
me space remove-member <principal> [-y]
| Argument | Required | Description |
|---|---|---|
principal |
yes | User or service-account id or name to remove. |
| Option | Description |
|---|---|
-y, --yes |
Skip the confirmation prompt. |
A group cannot be removed this way — a group leaves a space only by being deleted (me group delete). Use me service delete when you also want to delete a service account and its keys. Passing a group name errors clearly. Removing the space's sole admin is rejected (LAST_ADMIN) — promote another admin first. To remove yourself, use me space leave.
Remove yourself from the active space — no admin required. Your access grants and group memberships in the space are scrubbed. On success the active-space pointer is cleared.
me space leave [-y]
| Option | Description |
|---|---|
-y, --yes |
Skip the confirmation prompt. |
Only user principals can leave; service accounts must be removed by an admin or deleted. If you are the space's sole admin, the leave is rejected (LAST_ADMIN) — promote another admin before leaving so the space keeps at least one.
Invite someone to the active space, or create an open shareable link. Every invite adds its redeemer to one or more groups — the union of those groups' grants becomes the joiner's shared access. When --group is omitted it defaults to the space's own default group (usually team, but a custom space may have renamed it or have none — then --group is required). Every invite is pending until the invitee accepts (email invite) or redeems the link; nothing auto-enrolls. Admin only.
me space invite --email <addr> [--admin] [--group <name-or-id> ...]
me space invite --anyone [--admin] [--group <name-or-id> ...] [--expires <dur>] [--max-uses <n>]
| Option | Description |
|---|---|
--email <addr> |
Invite a specific email (only they can join; single-use). |
--anyone |
Create an open link anyone signed-in can use to join (multi-use). |
--admin |
Make the joiner a space admin (structural authority). |
--group <name-or-id> |
A group the joiner is added to; its grants are their shared access. Repeatable — pass --group multiple times to add to several. Default: team. |
--expires <duration> |
Open-link expiry, e.g. 7d, 24h, 30m. |
--max-uses <n> |
Max redemptions for an open link. |
Example — invite into two groups:
me space invite --email alice@example.com --group team --group backend
Exactly one of --email or --anyone is required. Unless the space was created with --no-home-grants, a joining user receives owner@home (their private root). Their shared access comes from the group they join. See Access Control for changing defaults.
List pending invitations for the active space. Alias: me space invite ls.
me space invite list
Revoke a pending invitation by its email or an open-link invitation by ID.
me space invite revoke <id-or-email>
| Argument | Required | Description |
|---|---|---|
id-or-email |
yes | The invited email or open-link invitation ID to revoke. |
- Access Control -- principals, the two axes of authority, and tree-access grants.
me access-- grant read/write/owner access on tree paths.me group-- bundle members for shared grants.