Restore your workflow

Find the problem in order, from connection checks to build logs

A troubleshooting guide for iOS, macOS, CI/CD, and Apple Silicon workloads. Confirm the node and network first, then check the toolchain and job logs without changing multiple variables at once.

5 connection checks
4 build issue categories
6 available node locations
Runbook Preserve the state first, then eliminate issues one by one
READY
A01
Confirm node details Region, host address, connection method, order status
01
A02
Verify the local path DNS, ports, firewall, packet loss, and jitter
02
A03
Narrow the toolchain scope Xcode, SDKs, dependencies, signing, and tests
03
A04
Submit the minimum evidence set Time, reproduction steps, logs, and impact
04
Do not send passwords, private keys, or recovery codes SUPPORT / NODE
First connection

Complete your first connection in four steps

The console shows the node details for your current order. Preserve the original format when copying fields; do not guess the address, username, or port.

  1. 01

    Read the node fields

    Log in to the console and verify the order, region, host address, username, and permitted connection methods. The node is in Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, the US East, or the US West.

  2. 02

    Check the local network

    Confirm that your office network does not block the target port, disable temporary proxies that rewrite routes, and record connection results separately for wired, wireless, and other networks.

  3. 03

    Choose a connection method

    Use SSH first for command-line access, file synchronization, and automation; use VNC when you need the macOS graphical interface. Establish only one connection during the first test to avoid interference between results.

  4. 04

    Complete baseline validation

    After logging in, record the system version, available disk space, Xcode path, and current network time. Run a minimal project first, then move the full project and build cache.

Use the first login only to verify the basic connection path

Do not upload projects in bulk, change system settings, or register a CI runner before confirming a stable connection. Preserve a reproducible baseline first.

Connection diagnostics

Troubleshoot SSH and VNC in a fixed order

When a connection fails, move outward from identity information to the network. Change only one condition at a time, and preserve command output or error messages.

01

Do the credentials match the current node?

Confirm that the username, key, or connection password comes from the current order; do not reuse connection details from a completed order. Check key-file permissions and make sure copying did not add spaces or line breaks.

02

Is the port reachable from the local network?

Run a connectivity test using the port shown in the console. A timeout usually points to the network path; an immediate refusal usually means the target is reachable but the service or port does not match.

03

Is the local firewall blocking access?

Check endpoint security software, corporate egress policies, and router rules. Retest on another known-working network to quickly distinguish local restrictions from node-side issues.

04

Is the network path stable?

Record latency, jitter, and packet loss rather than relying on a single ping. VNC is more sensitive to sustained jitter, and SSH builds can also stop when download connections reset.

05

Is the node healthy?

Return to the console and verify the instance and order status. If the node is unreachable from multiple networks and the credentials are correct, preserve the time and original error text, then submit a node issue ticket.

Toolchain checks

For Xcode issues, check version selection before the project

The same commit can produce different results with different toolchains. Validate the system environment and project dependencies separately to determine whether the issue is with the node, toolchain, or repository configuration.

Version and path

  • Run xcodebuild -version, and record the Xcode and build versions.
  • Run xcode-select -p, and confirm that Command Line Tools points to the expected directory.
  • Check whether the script hard-codes a path to an older Xcode version.

SDKs and dependencies

  • Confirm that the scheme, destination, and SDK name exist.
  • Resolve Swift Package, CocoaPods, or other project dependencies again.
  • Compare lock files, dependency sources, and the specific types of addresses where downloads failed.

Signing environment

  • Verify that the signing variables read by the build configuration exist.
  • Confirm that the CI process can access the required materials without writing their contents to logs.
  • Rerun signing and compilation failures separately, and record the exit code.
BASELINE

Recommended minimum environment snapshot

sw_vers xcodebuild -version xcode-select -p df -h
Automation setup

Treat the self-hosted runner as a controlled executor

A successful runner registration does not mean the workflow is secure and reproducible. Define the execution scope, working directory, credentials, and concurrency strategy together.

REGISTER

Register and label the executor

Use short-lived registration details provided by the project or organization, and set labels that describe the chip, region, and purpose. Delete local temporary command history after registration.

Deliverable: runner name and label list
SCOPE

Limit the execution scope

Allow nodes to be called only by trusted repositories, protected branches, and explicitly defined workflows. Review tasks triggered by external contributions; do not give unknown scripts direct node access.

Deliverable: repository and branch authorization rules
CLEAN

Clean the working directory

Handle temporary files, derived data, and invalid caches before and after each job. If caches are retained, record their keys, sources, and invalidation conditions to prevent stale artifacts from contaminating new builds.

Deliverable: cleanup script and cache policy
ROTATE

Rotate access credentials

Put tokens, SSH keys, and signing materials under a controlled secrets process. Revoke and reissue them immediately when a team member leaves, repository permissions change, or anomalous logs appear.

Deliverable: credential owner and rotation record
Log routing

Classify build failures from the first meaningful error

Do not capture only the generic exit code at the end of the log. Save the complete log and read upward from the first error to capture the target, command, and dependency context.

How to identify and prioritize common xcodebuild and fastlane failures
Failure category Common log signals Check first Include in the ticket
Dependency resolution Package version conflicts, repository fetch failures, inconsistent lock files Lock files, dependency sources, cache keys, and network download results Dependency management method, failed package name, first error section
Signing configuration Certificate mismatch, unavailable permissions, missing configuration variables Scheme, build configuration, and secret injection process Redacted original error and build target
Test failure Assertion failure, simulator differences, test timeout Failed test, destination, parallelization parameters, and retry results Test name, exit code, reproducible command
Network download Connection reset, resolution failure, download timeout Repeated requests to the same address, DNS, proxy, and egress path Time, target type, and network test results
01

Preserve the complete original log

02

Locate the first meaningful error

03

Reproduce independently with a minimal command

04

Remove credentials before submitting excerpts

Data operations

Manage projects, caches, and attached SSD storage separately

More capacity does not replace data classification and backups. Define what must be retained first, then choose how to synchronize, cache, and move it.

PROJECT

Project synchronization

Prefer syncing source code through version control, and place large binaries and private dependencies in a controlled storage workflow. After the initial migration, compare the commit hash, submodules, and lock files.

  • Verify source code and configuration separately
  • Record how large files are synchronized
  • Run a minimal build after migration
CACHE

Cache cleanup

DerivedData, package caches, and the runner working directory can all affect reproducibility. Before deletion, record directory sizes and cache keys; afterward, compare build times and error changes.

  • Check available disk space first
  • Clean only content that can be regenerated
  • Prevent concurrent jobs from modifying the cache
ADD-ON

Attached SSD boundaries

Use attached SSD storage for projects, caches, or datasets that need more workspace. Confirm the mount point, read/write paths, and job permissions before putting it into production use.

  • Define where data is stored
  • Monitor growth rate and remaining capacity
  • Verify file integrity before moving data out
Retain necessary copies before migration

Back up project data, signing materials, credentials, and build artifacts according to your team policy. Move data out and verify that copies are readable before the rental period ends; do not treat a single copy on the node as a long-term archive.

Ticket evidence set

The information needed to start troubleshooting in one submission

The more specific your support request, the faster it can move into reproduction and diagnosis. State the impact first, then provide a timeline and minimal logs—never send secret values.

Request template Copy the fields and fill in the facts
CASE
Node region
Singapore, Japan (Tokyo), South Korea (Seoul), Hong Kong, US East, or US West
Time of occurrence
State the local time and time zone, and indicate whether the issue is continuous or intermittent
Reproduction steps
List the actual sequence from login and command execution to the error
Log excerpt
Include the first meaningful error, exit code, and necessary surrounding context
Impact scope
A single job, a single member, all builds, or connection to the entire node
Checks completed
List actions already taken, such as changing networks, retrying commands, or clearing caches, along with the results

Do not submit these items

Passwords, private keys, recovery codes, complete tokens, signing materials, or complete payment credentials. If logs contain secret values, delete them or replace them with clear redaction markers first.

Escalation paths

Enter the right queue for your issue type

Connection interruptions, node issues, and billing questions require different evidence. Choose the correct category and add materials in the same conversation to keep the context together.

Connection interruption

SSH or VNC cannot be established despite correct credentials

Include the local network type, target-port test, original error, and time of occurrence. If switching networks restored access, describe the difference between both tests.

Category: Connection & Access
Node issue

Multiple jobs fail at once or the node status is abnormal

State the impact, last known normal time, instance status, and minimal reproduction command. Do not overwrite the original state with repeated restarts or bulk configuration changes.

Category: Node Operations
Billing question

Order period, add-ons, or payment records need verification

Provide the order ID, billing period, relevant add-ons, and issue description. All orders are billed in US dollars (USD); do not send complete payment credentials in a ticket.

Category: Orders & Billing
Keep tracking the same conversation

Update progress, follow-up questions, and the final resolution in the corresponding console ticket. When adding new logs, state the collection time and changes made so results can be compared.

Open the console to track the ticket

Gather node details before starting a reproducible investigation

New orders can choose from two configurations and six node locations; for existing-order issues, log in to the console and submit a linked ticket.