Motion
Self-hosting

What the IDE can see

Control which files the workspace exposes with --root.

The daemon confines all file, terminal, and git access to its root — a hard security boundary. You choose that root at connect time.

Options

# Home directory (default)
curl -fsSL https://motionis.xyz/connect.sh | sh -s -- --host <token>

# A specific folder
... --host --root /srv/projects <token>

# The whole machine
... --host --root / <token>
# Isolated volume (default — no host files)
curl -fsSL https://motionis.xyz/connect.sh | sh -s -- <token>

# Bind-mount a host folder
... --root /srv/projects <token>

# Bind-mount the whole host
... --root / <token>
# A folder
... -Token <token> -Root C:\projects

# The whole drive
... -Token <token> -Root C:\

--root / exposes the entire machine. Anyone who can open the workspace gets read/write to those files and a shell. Only use it on a machine you fully control. The dashboard shows a warning when you pick "Whole server".

Daemon state stays out of your files

Whatever root you pick, the daemon keeps its own state (database, secrets, vault) in a separate directory (~/.motion/state), not inside the browsed root — so --root / works cleanly without scattering files into /.

The path shown in the IDE

The file browser shows the real path of the current folder. In Docker mode, the container mounts your chosen --root at the workspace root but the IDE displays the host path you mounted (e.g. /), not /workspace.