Skip to content

Remote hosts ​

Use dots remote to manage one server from your local project:

sh
dots remote root@example.com check
dots remote root@example.com apply

Dots uses the ssh and rsync commands already installed on your machine. The remote host must also have dots and rsync installed. SSH aliases, keys, ports, jump hosts, and host-key checking come from your normal SSH configuration.

Use --ssh-config when the project has its own OpenSSH configuration:

sh
dots remote --ssh-config infra/machines/ssh.config app-server apply

Relative paths start from the project root. Dots uses this configuration for both SSH and rsync.

Pass a profile when the server needs one:

sh
dots remote app-server --profile production check
dots remote app-server --profile production apply

Without --profile, dots selects the profile on the remote host rather than using the local machine's hostname.

Project and state ​

Before each command, dots transfers the project to a managed working directory on the server. Files removed from the local project are also removed from that working directory.

State stays on the server and is preserved between runs. It is never replaced with state from your local machine.

.dotsignore works like a .gitignore for remote projects. Dots does not sync matching files and directories to the server:

text
.dots/
.git/
node_modules/
target/

check updates this project mirror but does not apply machine changes. apply runs normally on the server, including confirmation and sudo authentication. To skip dots' confirmation, use:

sh
dots remote app-server apply --auto-approve

Remote execution manages one host per command. It does not install dots, bootstrap SSH access, store secrets, or run a fleet in parallel.