Developer support

Find an answer, then get in touch

Check connection details, your environment and billing before submitting a reproducible issue. These steps apply to dedicated physical Macs. Use the signed-in portal as the source of truth for instance IPs, connection credentials and order status.

Still choosing a machine? Check the memory, storage and billing period before placing your order.

Getting connected

Start with these three checks

Use the instance details in the portal as your source of truth. Don't copy an IP from an old log or store passwords or private keys in a public repository.

Find your Mac's IP and credentials

Sign in to the portal and open the relevant order or instance details. Check the model, location, IP address, username and connection port, then confirm the instance has been delivered before connecting. If your team has several machines, use the instance ID to tell them apart.

Connection details are sensitive. When reporting an issue to an engineer, provide the instance ID only. Don't include full credentials in an email.

Prepare to connect

Connect with SSH for the first time

Use the address and port shown in your instance details to start an SSH session. When you see a host key fingerprint for the first time, verify where it came from. If the system was reinstalled, the old fingerprint may no longer match. Don't dismiss the warning until you know why.

Once connected, check your current user and working directory before setting up key-based login. Keep your current session open until you've confirmed that a new session works, so you don't lock yourself out.

SSH connection steps

Connect to the macOS desktop

Enter the VNC connection details from your instance in a compatible client. Start with a lower resolution to confirm the connection, then increase the image quality as needed. A laggy desktop doesn't necessarily mean builds are slow.

On a slow network, lower the colour depth and turn off dynamic wallpapers. For tests or log checks, use SSH where possible to avoid waiting for desktop images to transfer.

Desktop connection and tuning
Key terms

Eight terms to help you understand your Mac and connection

Know the difference between physical resources, remote access protocols and development tools. Identifying where an issue occurs helps you troubleshoot faster.

Physical node
The location where a Mac is deployed. MetalVNC has four Asia-Pacific locations: Singapore, Tokyo, Seoul and Hong Kong. Choose based on your network route; a shorter geographic distance doesn't guarantee lower latency on every route.
Dedicated physical Mac
You have exclusive use of the machine's CPU, memory and storage for the rental period. The host is not shared with other tenants. If your team runs multiple tasks on the Mac, they still compete for the same resources, so you'll need to manage concurrency.
Non-virtual machine
Your environment runs on a physical Mac rather than a virtual instance on a shared host. You have access to the full macOS desktop and command line. Build performance still depends on project size, toolchain, cache and concurrent tasks.
VNC
A remote access method that streams the desktop and sends keyboard and mouse input. It's useful for graphical debugging and checking interfaces, but it isn't a file sync tool. Transfer large source files and build artefacts separately using an appropriate workflow.
SSH key-based login
Authentication using a public and private key pair. Add the public key to the remote authorised keys list, and keep the private key on a managed local device or in your CI secrets store. Never commit a private key to a repository or send it in a support ticket.
Self-hosted runner
An execution environment that you manage to run continuous integration jobs. You can run builds and tests on a dedicated node, but your team is responsible for runner tokens, job permissions, workspace cleanup and toolchain versions.
Code-signing certificates and provisioning profiles
Sensitive development assets used in build signing, not remote login credentials. Check their purpose and permissions before use, import them according to your team's security practices, restrict access and remove materials you no longer need after the task.
Thunderbolt 5 daisy-chaining
An optional connection capability for working across multiple machines. It does not combine their memory into a single shared pool. Before ordering, tell us how many machines you need and describe your data flow and storage requirements. Check the configuration page for available options.
Environment and lifecycle

Know the limits before changing your setup

These answers cover setup, macOS, development tools and data. Back up your files and check the terms that apply to your order before reinstalling, changing plans or dealing with an expired instance.

When can I connect after placing an order?

Check the payment and order status in the portal first, then see whether the instance has been delivered. Once it's ready, connection details will appear in the instance page. A payment confirmation page is not a substitute for connection credentials.

Check the portal for the latest setup status; we don't promise a fixed number of minutes here. If your payment is confirmed but the instance hasn't been delivered, submit the order ID and a screenshot of its status so an engineer can investigate.

What should I do before reinstalling macOS?

Export your source code, build artefacts and any required configuration, and make sure you can restore the backup elsewhere. Reinstallation may affect system disk contents, connection credentials, host fingerprints and installed tools. It's not the first step for a routine connection issue.

Open a support ticket in the portal with the instance ID, reason for reinstalling and required development environment. Confirm which macOS options are supported, how data will be handled and how the work will be scheduled before proceeding. This page does not promise a reinstall button or a fixed completion time.

How do I check or switch Xcode versions?

Check the selected developer directory and tool version, then confirm which SDK and simulator runtime your project needs. If you have multiple versions installed, you can specify a developer directory for a single build without changing other running tasks.

xcode-select -p
xcodebuild -version
DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" xcodebuild -version

The final path is an example. Replace it with the path to an Xcode installation that exists on your Mac. Changing the developer directory doesn't install missing SDKs or runtimes. Run a small test before starting a production pipeline.

Can I add storage if my disk is full?

Available add-ons are a +1TB SSD and a +2TB SSD. The +1TB SSD costs $2.4/day, $6.5/week, $12.1/month or $32.9/quarter. The +2TB SSD costs $4.8/day, $13/week, $24.2/month or $65.8/quarter.

These are add-on prices and don't include the machine rental. Choose an add-on on the configuration page when placing a new order. For an instance that's already been delivered, submit a support ticket to confirm the available option, mount path and data migration steps. Adding capacity won't automatically move your existing working directory, so back up your data first.

How long is data kept after an instance expires?

Don't rely on post-expiry data retention as a backup. Renew or export your data before expiry, especially unpushed source code, test results and configuration stored only on the remote machine.

Retention and deletion periods are governed by the terms that apply to your order and notices in the portal; this page does not set a separate number of days. If your instance has expired, open a ticket under the original order right away to confirm its status. Don't assume the data can still be recovered.

What billing documents can I use for team reimbursement?

Start by checking the billing record for the order in the portal. If you need to confirm the document format or billing details, include the order ID, required fields and purpose in a support ticket. Never send your full card number.

Check before paying whether we can provide documents that meet your local tax requirements. A USD billing record is not necessarily an invoice for local tax purposes, and the two should not be treated as equivalent.

Service availability commitment

Understand the commitment and how it's measured

Our nodes operate year-round, 365 days a year. This page describes our service commitment; it doesn't present monitoring data that isn't available as a historical track record.

Monthly availability target

99.9%

If monthly availability falls below 99.9%, we'll credit service time at 10 times the duration of the outage.

Calculated monthly. This is not a build success rate or a measure of VNC desktop performance. Exclusions such as force majeure and user actions are assessed under the applicable service terms.

Monitoring data for the past 90 days

Public monitoring data is not yet available, so we don't show uptime days, historical availability rates or day-by-day status. The notice below describes the data status; it does not indicate a node outage.

Historical status not yet verifiable

If you suspect an outage, record the start time and time zone, connection method and error details as soon as possible, then submit a support ticket through the portal. A one-off issue with your local network isn't enough to calculate monthly node availability; our engineers need to check the instance-side records as well.

Report an outage
Payments and billing

Check the network and amount before paying

All charges are in US dollars (USD). Payment gateway availability is determined by the response from the checkout service.

USDT-TRC20

Use only the TRC20 network, payment address and amount shown at checkout. Don't reuse payment details from another order or assume a transfer screenshot means your order has been paid.

Payment confirmation depends on on-chain confirmations and a response from the payment gateway. Processing time varies with network and payment service conditions; there's no fixed number of minutes. If you've sent payment but the status hasn't updated, save the transaction hash and submit the order ID and network in a support ticket. Don't pay again until you've checked.

Confirmation: order payment status

Visa / Mastercard / Amex

Card payments are processed by Stripe. The amount and payment status shown at checkout are the source of truth. If your card issuer asks you to verify the payment, complete the steps and then check the billing status in the portal.

If a payment fails, note the error message and order ID. Don't make repeated attempts in quick succession. In a support ticket, tell us the card type and where the payment failed; never send your full card number, security code or verification details.

Currency: USD

Check two things before renewing

Confirm you're renewing the right instance, then check the billing period and any add-ons. You can pay by the day, week, month or quarter, but prices for different periods aren't directly comparable. Check the updated expiry time in the portal after payment.

Contact an engineer

Include the details needed to reproduce the issue

For an issue with an existing instance, submit a ticket through the portal so we can link it to your order. For pre-sales questions or if you can't sign in, email support@metalvnc.com.

  1. 01

    Identify the instance

    Include the order or instance ID, location and connection method. Don't share passwords, private keys or full payment credentials. Redact sensitive details in screenshots.

  2. 02

    Describe what happened

    Note the time and time zone, the last action that worked and the current impact. Be specific: “VNC is lagging”, “SSH won't connect” or “the build command returns an error”.

  3. 03

    Give us the steps to reproduce

    List the commands you ran in order, the expected result and a summary of any errors. Mention if you changed your local network, modified a port or switched toolchains. You don't need to upload the whole project.

How we route requests and what to expect
Issue typeWhat to includeResponse expectations
General questionPlan selection, billing details or toolchain configuration; tell us what you're trying to do.We'll confirm the expected response time in your ticket. This page does not promise a fixed number of hours.
Instance issueConnection problems or unusual behaviour; include when it started, what's affected and what you've checked.We'll prioritise based on business impact and our findings on the instance. An initial reply doesn't mean the issue is resolved; follow progress in the original ticket.
Can't find your answer?

Tell us where you're stuck

For plan questions, tell us what you need the Mac for. For connection issues, include the error message. If you've already opened a ticket, reply in the same thread so we have the full context.