Skip to content

xvm

Launch and inspect policy-managed Turbo sessions on macOS. xvm is the macOS launch helper used by Turbo Launcher; it is distinct from the Windows /xvm system image and the turbo vm command.

Usage

text
xvm [options] -- <executable> [args...]
xvm [options] --image <path>
xvm --daemon-health [--json] [--require-managed-networking-ready]
xvm --list-session-details [--json]
xvm containers [--json]
xvm stop <session-id>
xvm rm [--force] <session-id>

Description

Turbo Launcher normally constructs the xvm invocation from the active policy and launch profile. Use the command directly for administration, validation, diagnostics, and controlled launch testing.

A direct launch connects to sandboxmanager only when you pass --sandbox-server. Network, clipboard, drag-drop, and per-path isolation overrides require that managed connection. Policy-managed production launches should place stable filesystem and networking rules in policy; command-line overrides are best suited to diagnostics and explicit one-off tests.

Managed Boundary

Omitting --sandbox-server creates a local launch without the daemon-managed session boundary. Do not use that form when validating policy enforcement. Disabling Seatbelt confinement also weakens defense in depth and should be limited to documented compatibility testing.

Options

Policy, Images, and Launch

FlagDescriptionNotes
--sandbox-serverConnect the launch to the sandboxmanager daemon.Required for a policy-managed session and the managed overrides described below.
--profile <id>Use a named launch profile from policy.The profile must exist and authorize the executable.
--session-id <id>Adopt a live, pre-created managed session.Requires --sandbox-server.
--image <path>Load a local Turbo .svm image layer.Repeatable.
--using <paths>Add local .svm dependency layers.Accepts comma- or semicolon-separated paths; image-name resolution is not currently available in xvm.
--env <KEY=value>Add or override an environment variable.Repeatable.
--mount <src>:<dst>Expose a host path inside the session as read-write.Also accepts [id:]<src>=<dst>. Prefer policy-defined mounts for stable deployments.
--sandbox-root <path>Override the sandbox root.Intended for controlled testing.
--cwd <path>Set the launched process working directory.--working-directory is an alias. Supports @SANDBOX_ROOT@ and @SANDBOX_HOME@.
--transientUse a session-local application profile.Requires --sandbox-server; the default profile persists per application.
--dry-runPrint the resolved manifest without launching.Useful for policy verification.

Isolation and Data Motion

The options in this section require --sandbox-server. Managed application-bundle launches isolate clipboard and drag-drop by default; the flags below override that posture for one launch.

FlagDescriptionNotes
--isolate <path[=mode]>Add a per-path isolation rule for the session home.Modes: merge, writeCopy (default), or full; optional modifiers: +readOnly, +hidden, +noSync. Repeatable.
--isolation-default <mode>Set the isolation mode for paths not covered by a rule.Use policy for stable application or agent-specific paths.
--virtualize-preferences[=off]Capture preference writes and isolate preference daemons.Pass =off to force-disable the behavior for a compatibility test.
--no-managed-keychainSkip managed-keychain provisioning.Intended for development or smoke tests that do not validate keychain isolation.
--clipboard-direction <mode>Set clipboard direction.bidirectional, inbound-only, outbound-only, or isolated.
--clipboard-mode <mode>Set clipboard direction using PC-compatible values.Bidirectional, InOnly, OutOnly, or Disabled.
--clipboard-size <bytes>Set the clipboard limit in both directions.0 is unlimited. Direction-specific flags override it.
--clipboard-size-inbound <bytes>Set the host-to-session clipboard limit.0 is unlimited.
--clipboard-size-outbound <bytes>Set the session-to-host clipboard limit.0 is unlimited.
--clipboard-image-max-pixels <count>Set the maximum clipboard image area.0 is unlimited.
--isolate-drag-dropUse a separate drag pasteboard realm.--share-drag-drop applies the opposite override.
--container-color <RRGGBB>Draw a colored border around managed windows.--skin-border-color is the PC-compatible alias and also accepts named colors.
--disable-seatbelt-confinementSkip the additional Turbo Seatbelt wrapper.The daemon policy remains active; use only for a known compatibility requirement.

Managed Networking

Managed-network overrides require --sandbox-server. Proxy launches fail closed: unmatched egress is denied, and a proxy failure does not fall back to a direct connection.

FlagDescriptionNotes
--disable-networkDeny outbound network access for the launch.
--route-add <spec>Add a direct route.Supports protocol, host, CIDR, IP-range, and PC-compatible TCP/UDP forms. The TCP/UDP forms match protocol and port on macOS; they do not publish or remap host ports.
--route-block <spec>Add a deny route.Repeatable.
--proxy <url>Proxy matching flows.Schemes: http, https, socks5.
--proxy-server <url[;url]>PC-compatible proxy alias.The first candidate is used.
--proxy-targets <spec>Select proxy destinations.Semicolon-separated hosts, CIDRs, or IP ranges.
--proxy-use-tlsWrap a SOCKS5 proxy connection in TLS.--proxy-tls is an alias.
--proxy-tls-skip-verifyDisable proxy TLS certificate verification.Use only on a trusted test network.

Instrumentation and Diagnostics

FlagDescriptionNotes
--instrument <list>Enable instrumentation adapters.Examples: node-electron, pty. Requires --sandbox-server.
--interpose <list>Enable concrete call interpositions.Requires --sandbox-server.
--interpose-rules <path>Load compiled JSON interposition rules.Requires --sandbox-server.
--diagnosticEmit launch progress to stderr and set TURBO_DIAGNOSTIC=1.--diag is an alias.
--log-path <dir>Write diagnostic output to xvm-<pid>.log.The directory must already exist; exports TURBO_LOG_PATH.
--help, -hShow built-in command help.

Daemon and Session Administration

These commands connect to sandboxmanager automatically and exit after returning the requested state or applying the operation.

Command or FlagDescriptionNotes
--daemon-health, --statusReport daemon health.Add --require-managed-networking-ready to exit nonzero unless managed networking is ready.
--list-session-detailsList active runtime session details.Supports --json.
containers, sessionsList durable managed sessions.--containers and --sessions are aliases. Supports --json.
stop <session-id>Stop a durable session without deleting it.
rm [--force] <session-id>Delete a durable session.--force stops a running session first.
--session-manifest <id>Print a managed session manifest.--manifest is an alias; supports --json.
--purge-session <id>Purge runtime state for a session.
--reset-session-storage <id>Reset runtime and persistent session state.--purge is a Windows-parity alias.
--print-net-configPrint a managed-networking configuration template.
--validate-net-config <path>Validate and normalize a managed-networking configuration file.
--jsonSelect machine-readable output.Applies to standalone daemon commands.

Examples

Verify Managed Runtime Readiness

bash
xvm --daemon-health --json --require-managed-networking-ready

Validate a Policy-Managed Launch

bash
xvm --sandbox-server \
  --profile <profile-id> \
  --dry-run \
  -- /usr/local/bin/example-agent

The named profile should own stable application-specific filesystem rules. For a one-off isolation test, use a generic path override rather than embedding a vendor path in a launcher script:

bash
xvm --sandbox-server \
  --isolation-default writeCopy \
  --isolate "Library/Application Support/ExampleAgent=full" \
  -- /usr/local/bin/example-agent

Inspect and Stop Sessions

bash
xvm containers --json
xvm --session-manifest <session-id> --json
xvm stop <session-id>

Output

Launches stream diagnostics to stderr only when --diagnostic is active. --dry-run prints the resolved session manifest. Standalone daemon commands emit human-readable text by default and machine-readable JSON when you pass --json.

Use process exit status as the readiness signal in automation. In particular, --daemon-health --require-managed-networking-ready exits nonzero when the daemon or required managed-networking components are not ready.

  • Turbo Launcher on macOS — Deployment, activation, and readiness guidance.
  • turbo vm — Inspect the Windows Turbo VM system image version.
  • turbo vms — List Windows Turbo VM system image releases.
  • turbo run — Launch Windows Turbo sessions from images.