Start with the symptoms

Pinpoint the issue before taking the next step

Enter an error message, tool name, or connection method. Instead of generic explanations, this page lists device status checks, log locations, verification commands, and the information needed to escalate to human support—in order.

First connection

Narrow connection issues with five checkpoints

Connection issues usually occur at one layer: status, credentials, network, or client configuration. Following the checks in order helps prevent mistaking a network issue for a device issue.

01

Confirm device status

Sign in to the console first to check whether the instance is available, then verify the device name and node linked to the order. If the console shows the device as available but both connection methods fail, continue with network checks; do not change system settings first.

  • Verify the order number, device identifier, and node.
  • Make sure you are not connecting to an address from an old record.
  • Record the status shown in the console and the check time.
02

Verify access credentials

Distinguish the system username, initial password, and SSH key. When copying credentials, check for leading or trailing spaces. If key authentication fails, first confirm the correct private key and username; do not repeatedly try different combinations.

  • Confirm username capitalization and input method state.
  • Check that the private key file permissions are not too permissive.
  • Submit a support ticket through the console if the credentials appear incorrect.
03

Test the local network

Retest on another trusted network and temporarily rule out corporate proxies, VPNs, egress firewalls, and security software rules. Record the destination address, port, time, and timeout text.

  • Test DNS resolution and the destination port separately.
  • Compare results on home and corporate networks.
  • Do not submit only “connection failed.”
04

Check Remote Desktop

Confirm that the address, username, and display settings saved by the client still match the current device. If the screen opens but input lags, lower the resolution and color quality first, then check for local network jitter.

  • Delete the old connection record in the client and recreate it.
  • Capture the error text without submitting sensitive credentials.
  • Check whether SSH connects independently.
05

Check SSH configuration

Use verbose output to determine whether the failure occurs during resolution, the handshake, or authentication. If the handshake succeeds but authentication fails, focus on the username, private key, and authorized file. If the connection times out immediately, return to the network path.

ssh -vvv user@host
chmod 600 ~/.ssh/id_ed25519
ssh-add -l
Security boundary

Do not submit passwords, private keys, recovery codes, complete payment credentials, or unredacted certificates in support requests. When showing configuration, include only fields relevant to the issue.

Xcode and signing

Validate version, signing, and archive issues separately

Do not use one full release job to validate every layer at once. Confirm the toolchain version first, validate signing with a test project, then return to the real project and inspect the archive log.

Check Verification result
XCODE Version matches the command-line tools

Confirm that the version selected in the GUI, the command-line path, and the project requirements match. After switching versions, reopen the terminal and build process.

xcode-select -p
CERT Certificate is readable by the current user

Confirm that the required certificate and its private key are fully imported and accessible in the current login session. Seeing the certificate name alone does not confirm a successful import.

security find-identity -v -p codesigning
PROFILE Provisioning profile matches the target

Verify the app identifier, team, capabilities, and validity scope. Save an inventory before removing old profiles so you can roll back.

~/Library/MobileDevice/Provisioning Profiles
KEYCHAIN Non-interactive jobs have access

If archiving works in the GUI but fails in CI, check the Keychain used by the Runner session, the unlock flow, and access controls.

security list-keychains
ARCHIVE Preserve the first root-cause error

Find the earliest failure in the archive log rather than copying only the final summary. Record the target, configuration, SDK, and command used.

xcodebuild -showBuildSettings

CI/CD troubleshooting guide

When a job does not run, check the Runner first, then the job

Break CI issues into four layers: scheduling, execution environment, resources, and scripts. Re-running immediately only overwrites the evidence; it does not prove recovery.

CI/CD symptoms, check order, and recovery criteria
Symptom Check first Order of operations Recovery criteria
Runner offline Process, network, registration, execution user Confirm the device is reachable, then read service logs; verify registration scope and startup user. Do not re-register first. The Runner remains online and successfully picks up a minimal test job.
Job queued for too long Tags, concurrency limit, existing jobs Confirm the job tags match the Runner; check for unfinished processes or occupied execution slots. A new job is picked up in the expected queue, and old jobs have a clear exit state.
Cache restore failed Cache key, directory permissions, free disk space Compare cache keys between successful and failed jobs; verify directory ownership, then clear rebuildable caches. Dependencies restore successfully, and the next job reuses the same cache rules.
Script permission error Execute bit, interpreter, working directory Confirm the script is committed to the repository with its execute bit preserved; check the interpreter on the first line and relative paths. The script runs successfully in the Runner user’s non-interactive session.
Build timeout Last active stage, CPU, memory, disk Find the last valid log entry first, then determine whether the process is blocked, resources are insufficient, or a network dependency is pending. The same commit completes repeatedly, with duration close to baseline and no leftover processes.
RUNNER BASELINE

Keep one minimal health-check job

The health check should verify the working directory, disk, toolchain path, and one short test. It should not contain release credentials or depend on a large cache.

whoami
pwd
df -h
xcodebuild -version
git --version

Performance and storage

Use three sets of evidence to determine why a job slowed down

One slow job is not enough to justify a larger configuration. Check Activity Monitor, disk capacity, and build logs together, and compare them with the normal baseline for the same project.

CPU and memory

Observe the entire job cycle rather than a single moment. CPU at full utilization for a sustained period while the job progresses indicates compute load. Sustained memory pressure with heavy swapping indicates that concurrency or project size may exceed the current configuration.

Record
Peak, duration, concurrent job count
Rule out
Orphaned simulators and compiler processes that did not exit

Disk and cache

First measure usage from the project, dependencies, simulators, archives, and rebuildable caches. When disk space approaches its capacity limit, dependency extraction, archiving, and log writes may all fail. Distinguish artifacts from rebuildable data before cleaning.

Check
DerivedData, archives, simulators, package caches
Verify
Run the same commit again after cleanup

Build logs and toolchain

If resource curves look normal but the job stops at the same script, dependency download, or compile stage, check version changes, network dependencies, and script wait conditions. Comparing a successful log is faster than looking only at total duration.

Compare
Same commit, same toolchain, same command
Locate
The first stage that clearly diverges from baseline
A Resources remain saturated

Retest with lower concurrency. If duration changes consistently with concurrency, evaluate a larger configuration.

B Disk is near its capacity limit

Clear rebuildable caches, archive old artifacts, and establish post-job cleanup rules.

C Resources are normal but a stage is stuck

Check scripts, dependency sources, toolchain versions, and non-interactive permissions.

Nodes and network

Four available nodes, one consistent network record format

NUMACS offers nodes in Singapore, Japan (Tokyo), South Korea (Seoul), and Hong Kong. All directory combinations can be ordered; actual availability is returned in real time by the console.

SGAvailable

Singapore

Suitable for access from Southeast Asia and nearby networks. During diagnosis, record the local carrier, destination address, connection method, and time.

Choose Singapore node
JPAvailable

Japan (Tokyo)

When connections are abnormal, test Remote Desktop and SSH separately, and note whether the issue occurs only on a specific local network.

Choose Japan node
KRAvailable

South Korea (Seoul)

For network issues, include the timeout or disconnection period and retest results from another network on the same device.

Choose South Korea node
HKAvailable

Hong Kong

If interactive latency changes suddenly, record the destination address, protocol, client version, and job running at the time.

Choose Hong Kong node
Network ticket details

What a reproducible network report should include

Provide the time and time zone, node, destination address, protocol, local network type, complete error text, and retest results after switching networks. If you run diagnostic commands, submit redacted text output rather than isolated numbers from a screenshot.

  • Time:Accurate to the minute, with time zone
  • Path:Local network, destination address, and port
  • Result:Timeout, refusal, authentication failure, or disconnection
  • Comparison:Result from another network or connection method

Billing and billing cycles

Check the order cycle first, then verify the payment record

Devices are available for daily, weekly, monthly, or quarterly rental. Orders are charged in US dollars (USD); the cycle and configuration are defined by the order record.

DAY

Daily

Suitable for short-term validation, temporary builds, or migration rehearsals. For billing questions, include the order start time and device identifier.

WEEK

Weekly

Suitable for a continuous sprint or release acceptance. Do not confuse a calendar week with the order’s actual cycle.

MONTH

Monthly

Suitable for stable development and continuous integration workflows. Export necessary data and confirm migration arrangements before upgrading the configuration.

QUARTER

Quarterly

Suitable for ongoing projects and dedicated Runners. Teams should document credential rotation, backups, and job handoff procedures in advance.

Review before submitting

Keep troubleshooting from starting over

The following details determine whether support staff can begin reproducing and locating the issue immediately instead of requesting basic information back and forth.

Remote Desktop and SSH both fail. What should I submit first?

Confirm the device status in the console, then submit the order number, node, time and time zone, destination address, complete errors from both connection methods, and retest results from another local network. Do not submit passwords or private keys.

Should I reinstall the toolchain immediately after an Xcode build failure?

No. First save the first root-cause error, Xcode version, command-line tools path, project configuration, and recent changes. Reinstallation changes the evidence and may remove version differences and logs that identify the issue.

Is re-registering the fastest solution when the Runner is offline?

First check device connectivity, the Runner process, execution user, and service logs. Re-register only after confirming that the registration information is damaged or expired. Otherwise, old and new Runner records may coexist and make scheduling issues harder to diagnose.

How should logs be redacted?

Keep timestamps, commands, error codes, tool versions, and path structure relevant to the issue. Replace usernames, repository addresses, access tokens, certificate contents, private keys, and business data. Read the redacted version once more to confirm the context is still sufficient for reproduction.

How can I get an urgent build issue investigated faster?

State that it is a build issue in the subject and provide the order number, node, time, reproducible steps, expected result, actual result, and redacted logs. Requests are queued based on the completeness of the information; fuller context means fewer follow-up questions.

Escalate to human support

Turn the incident details into an actionable ticket

Prepare the order number, node, time and time zone, reproduction steps, expected result, actual result, attempted actions, and redacted logs. For existing orders, submit a support ticket in the console. For presales guidance, node questions, and billing issues, email support@numacs.com.

  • Do not submit passwords, private keys, recovery codes, or complete payment credentials.
  • Urgent build issues must include reproducible evidence and the first root-cause error.
  • Describe the most recent successful run and configuration changes made before the issue.