Cloud-init provisioning

Updated Dec 26, 2025

Mriya can pass a cloud-init user-data payload through to the provider when creating the VM. This allows installation of system packages or other first-boot provisioning before the remote command starts.

Provide user-data either inline or via a local file:

mriya run --cloud-init-file ./cloud-init.yml -- jq --version

Or inline (handy for short scripts):

mriya run --cloud-init "#!/bin/sh\necho ready" -- sh -lc 'echo ok'

When cloud-init user-data is configured, Mriya:

  • syncs the workspace as usual
  • waits for cloud-init to finish (by checking /var/lib/cloud/instance/boot-finished)
  • only then executes the remote command

Cloud-init settings use ortho-config layering with the SCW_ prefix:

  • SCW_CLOUD_INIT_USER_DATA — cloud-init user-data content (optional).
  • SCW_CLOUD_INIT_USER_DATA_FILE — path to a file containing cloud-init user-data (optional).

In mriya.toml, configure one of the following under [scaleway]:

  • cloud_init_user_data = "..." (inline)
  • cloud_init_user_data_file = "./cloud-init.yml" (file-based)

Commands always execute from MRIYA_SYNC_REMOTE_PATH (default: /home/ubuntu/project) so mriya run -- cargo test mirrors running cargo test locally after syncing the workspace. Customize the remote user, working directory, or SSH flags via the MRIYA_SYNC_ variables described below.

Security: host key checking defaults to disabled (MRIYA_SYNC_SSH_STRICT_HOST_KEY_CHECKING=false) with MRIYA_SYNC_SSH_KNOWN_HOSTS_FILE=/dev/null to keep ephemeral VM setup friction low. This sacrifices MITM protection and is suitable only for trusted, short-lived environments. Enable strict checking and a real known hosts file when connecting to persistent or untrusted hosts.

Sync settings use ortho-config layering with the MRIYA_SYNC_ prefix:

  • MRIYA_SYNC_SSH_IDENTITY_FILE (required) — path to the SSH private key file for remote authentication. Supports tilde expansion (e.g., ~/.ssh/id_ed25519).
  • MRIYA_SYNC_RSYNC_BIN — path to the rsync executable (default: rsync).
  • MRIYA_SYNC_SSH_BIN — path to the ssh executable (default: ssh).
  • MRIYA_SYNC_SSH_USER — remote user for rsync and SSH (default: root).
  • MRIYA_SYNC_REMOTE_PATH — remote working directory (default: /home/ubuntu/project).
  • MRIYA_SYNC_SSH_BATCH_MODE — set to false to allow interactive SSH prompts (default: true).
  • MRIYA_SYNC_SSH_STRICT_HOST_KEY_CHECKING — set to true to enforce host key verification (default: false).
  • MRIYA_SYNC_SSH_KNOWN_HOSTS_FILE — path to a known hosts file (default: /dev/null when host key checking is disabled).
  • MRIYA_SYNC_VOLUME_MOUNT_PATH — mount path for the persistent cache volume (default: /mriya).
  • MRIYA_SYNC_ROUTE_BUILD_CACHES — set to false to disable automatic cache routing to the mounted volume (default: true).
  • MRIYA_SYNC_CREATE_CACHE_DIRECTORIES — set to false to disable automatic creation of cache subdirectories on the mounted volume (default: true).