#me space
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.
#Commands
- 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)
#me space list
List the spaces you belong to. The active space is marked. Alias: me space ls.
me space list
#me space members
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. |
#me space use
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.
#me space create
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.
#me space rename
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. |
#me space delete
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. |
#me space remove-member
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.
#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.
#me space invite
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 [email protected] --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.
#me space invite list
List pending invitations for the active space. Alias: me space invite ls.
me space invite list
#me space invite revoke
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. |
#See also
- 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.