Access checklist
Never give the same credentials to both personal sessions and automated jobs. Create a dedicated, revocable account first, then connect the Runner.
First decide whether your task needs the command line, a graphical desktop, or unattended execution. Then verify credentials, the toolchain, and permissions for the relevant path. VMRunner provides a dedicated Apple Silicon physical node, not a virtual machine; use the connection details shown for your delivered order in the portal.
Never give the same credentials to both personal sessions and automated jobs. Create a dedicated, revocable account first, then connect the Runner.
The command line is best for frequent, scriptable operations; use graphical sessions for tools that require interaction; assign continuous jobs to a dedicated Runner. Clearer boundaries make connection issues easier to isolate.
Ideal for Git operations, dependency installation, log inspection, scripts, and builds. It uses less bandwidth and is easier to recover after an interruption.
Use it for Xcode UI debugging, simulator checks, audio/video projects, and tasks that require observing window state. Higher resolutions require a stronger local network.
Use it for testing, archiving, signing, and artifact delivery. The Runner uses a dedicated account, with environment variables injected per job; do not share credentials with a personal desktop session.
When troubleshooting remote access, the biggest time sink is usually not a complex failure but uncertainty about the node address, account purpose, or local network baseline. Record the items below before your first connection so you can identify which layer changed.
Order ID, node city, node address, account purpose, host-fingerprint verification result, and the time of the first successful connection. Keep private keys only on controlled devices; never place them in tickets, chat logs, or code repositories.
Check the order status and connection details in the portal. Before delivery is complete, do not try to connect using an old address or someone else’s records.
Use revocable accounts or keys for personal work, automated jobs, and temporary collaboration. Do not share one long-lived credential set.
Record latency, packet loss, and stability on wired and wireless networks. When a graphical session lags, compare it with this baseline first.
Give development accounts only the permissions required for the working directory. Runner accounts should access only build directories, caches, and required signing resources.
The goal of the first connection is not to dismiss warnings quickly, but to confirm that the current address matches the delivered node. After verifying the fingerprint, set up an alias, keepalive settings, and a least-privilege account.
ssh-keyscan -t ed25519 NODE_ADDRESS
ssh USER@NODE_ADDRESS
Compare the first fingerprint you read with the delivery details in the portal. If the fingerprint changes after an address change or system reinstall, confirm the reason before continuing; do not simply clear local records.
ssh-keygen -t ed25519 -a 64
ssh-copy-id USER@NODE_ADDRESS
Generate a separate key for the VMRunner node. Protect the private key with a local passphrase, never commit it to a repository, and do not reuse the Runner deployment key.
Host vmrunner-build
HostName NODE_ADDRESS
User ACCOUNT_NAME
IdentityFile ~/.ssh/vmrunner_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
An alias reduces address-copying errors. Keepalive settings only detect a lost connection; they do not resume an interrupted process. Hand long-running tasks to a task manager or CI Runner.
Do not make administrator access the daily default. Separate dependency installation, system configuration, and pipeline execution by account. Return to regular privileges immediately after temporary elevation and record the changes.
Use a remote desktop for tasks that must display Xcode, a simulator, or a timeline interface; it should not replace every background job. Start with a lower resolution to establish a stable session, then increase quality gradually.
Choose the lowest setting that fully displays the tool windows, then observe input latency and screen refresh.
When the network fluctuates, reduce visual effects and prioritize bandwidth for interaction feedback and file synchronization.
Test common shortcuts in a low-risk text window before performing signing, deletion, or publishing operations.
After an interruption, confirm the state of the old session first to avoid restarting tools or using the same working directory twice.
Do not move all code, certificates, caches, and pipelines at once. Keep verifiable output at every stage and proceed only after the previous stage passes.
Start by syncing repositories, lock files, required assets, and build scripts. Large caches and dependencies that can be downloaded again are not first-round migration targets.
Verify Xcode, command-line tools, package managers, certificates, and provisioning profiles. Run a small test target first rather than the full release pipeline.
Create a dedicated Runner account, limit the scope of environment-variable access, run one rollback-friendly test job, and return the artifact.
The same code can behave differently on two Macs because of differences in tool versions, paths, caches, or permissions. Record each item below before the first production build.
xcodebuild -version
Versions match the project baseline
xcode-select -p
Path points to the target Xcode
The Runner should not reuse a developer’s desktop account. A separate identity makes it easier to revoke access, clean caches, identify file-ownership issues, and reduce interference from personal sessions.
CI troubleshootingThe account should access only the repository workspace, dependency cache, build directory, and required signing resources. Do not grant routine administrator access.
Use the pipeline platform’s registration flow to bind the Runner to the current node. Add labels that identify the chip, system, and job type.
Configure variables by repository, environment, and job scope. Hide sensitive values in logs and never print the complete configuration file in build records.
Start with a target that has few dependencies and a short runtime. Check the exit code, test results, cache hits, and working-directory cleanup.
Record the artifact name, source commit, checksum, and storage location. After confirming successful delivery, expand to the full pipeline.
Before production use, check credentials, sharing scope, backups, and recovery information once more. The goal is to ensure every account, session, and automated job can be revoked independently.
After the first verification, replace the initial password or key, remove temporary authorizations no longer needed, and record each credential’s purpose and owner.
Every user and Runner should use a separate identity. When permissions change, revoke only the relevant account without affecting other workloads.
Keep code primarily in a remote repository. Back up signing materials, project assets, and important artifacts according to your team’s policy, and regularly verify recovery procedures.
Lock and close graphical sessions that are no longer in use, stop temporary services, and check that background jobs still have a clear owner.
Record the order ID, node city, account purpose, tool versions, and most recent successful build so support can locate issues quickly.
Provide the order ID, node city, time of occurrence, reproduction steps, redacted logs, and expected result. Do not send private keys, complete access tokens, certificate passwords, or unredacted configuration files.
Complete credential verification, tool-version recording, and test-artifact delivery before moving the production project to a dedicated Apple Silicon physical node.