Figment.so
Mac hostingWebsite hostingGuidesHow to usePricing

Teach macOS Development with Remote Desktops

The student-hardware problem in a macOS development course has a direct fix: rent the Macs on Figment and have each student connect to their own isolated environment. You provision identical tool sets before the first lecture, confirm parity, hand out credentials, and reset the fleet between cohorts. No student has to buy Apple hardware.

Picking the Right Figment Plan per Seat

Figment's $29 plan is a virtual Intel macOS environment (2 vCPU, 8 GiB RAM, 80 GiB disk) with no GPU acceleration and no audio; access is via the in-browser console, so students use a web browser rather than a desktop VNC client. It runs supported Intel macOS toolchains, including Xcode 26 or earlier, and can cross-compile and sign arm64 device archives and Universal macOS binaries. Executing ARM-only binaries natively, running Xcode 27, and building visionOS targets require an Apple-silicon Mac — see Apple's porting guidance which states developers should use Xcode 26 or earlier on Intel.

Course goalPlanMonthly per seatAccess
Swift/CLI basics, Intel Xcode 26 toolchain, simulator work supported on IntelVirtual Intel macOS$29Browser console
iOS/macOS course needing Screen Sharing/VNC or Apple Remote Desktop monitoringi3 Mac (physical)$49VNC/Screen Sharing (request-based)
Xcode 27, Apple-silicon-only execution, visionOS, GPU-accelerated toolsM-series Macfrom $95VNC/Screen Sharing (request-based)

Physical i3 and M-series inventory is currently request-based; the i3 $49 tier and the M-series from $95 collect requests until supply is confirmed. The specific M-series chip, RAM and disk at the $95 entry price are confirmed in the quote — do not assume a particular M4/16 GB configuration. Start a fleet request at /mac-hosting/start.

Xcode itself is not pre-installed. Students sign in with their own Apple ID and download Xcode from the Mac App Store or Apple Developer portal; the Apple Developer Program agreement governs any device-signing work they do during the course.

Cost Worksheet: 20 Seats, One Term

A 12-week term at monthly retail, before any quote-stage adjustment:

  • 20 × $29 × 3 months (virtual Intel macOS) = $1,740
  • 20 × $49 × 3 months (i3 Mac, if available) = $2,940
  • 20 × $95 × 3 months (M-series entry) = $5,700

A shared-host alternative (one physical M-series Mac with 20 student accounts on it) is cheaper on paper but is not recommended for live instruction: 20 concurrent Xcode users on one machine saturate CPU, RAM and disk, and Apple's licence terms restrict multi-user commercial reuse. Per-seat rentals keep each student's environment isolated and independently resettable. Request the plan that matches your syllabus at /mac-hosting/start.

Provisioning Identical Environments

Run the bootstrap below as an administrator on each student Mac before handing the account over. Create the student account first in System Settings > Users & Groups as a Standard user — Apple's guide notes that "Standard users are set up by an administrator. Standard users can install apps and change their own settings, but can't add other users or change other users' settings" (Apple — Set up users, guests, and groups).

#!/bin/bash
# mac-dev-bootstrap.sh — run as admin before handing the account to the student.
set -euo pipefail

COURSE_NODE_VERSION="20"
COURSE_PYTHON_VERSION="3.12"

if ! command -v brew >/dev/null 2>&1; then
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi

brew install git "node@${COURSE_NODE_VERSION}" "python@${COURSE_PYTHON_VERSION}" swiftformat
brew link --force --overwrite "node@${COURSE_NODE_VERSION}"

if xcode-select -p >/dev/null 2>&1; then
  sudo xcodebuild -license accept 2>/dev/null || true
fi

REPORT="/Users/Shared/env-parity.txt"
{
  echo "=== Environment Parity Report ==="
  echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
  sw_vers
  echo "Xcode CLT:   $(xcode-select -p 2>/dev/null || echo 'not installed')"
  echo "Git:         $(git --version)"
  echo "Node:        $(node --version)"
  echo "Python:      $(python3 --version)"
  echo "swiftformat: $(swiftformat --version)"
} > "${REPORT}"
echo "Bootstrap done. Parity report at ${REPORT}."

This is an example script, not a measured benchmark. Run it on a single seat first, read the resulting /Users/Shared/env-parity.txt, then roll it out. Compare the reports from every seat — they should match line-for-line except for the timestamp. If a version drifts, re-run brew upgrade <package> on that outlier.

Parity Checklist Before the First Lecture

ItemCheck commandExpected
macOS buildsw_vers -productVersionIdentical across seats
Xcode CLT pathxcode-select -p/Library/Developer/CommandLineTools
Xcode licensexcodebuild -license checkAccepted
Gitgit --versionMatch
Nodenode --versionv20.x match
Pythonpython3 --version3.12.x match
swiftformatswiftformat --versionMatch

Paste each seat's parity report into a shared spreadsheet and sort — mismatches become obvious at a glance.

Distributing Credentials Securely

Each student needs three things: the Mac's hostname (or browser-console URL for the $29 VM), their username, and their session password. Split the delivery so a single intercepted email can't hand over full access.

  • Channel A (LMS post or course email):

    Host: mac-student-07.figment.example · Username: student07

  • Channel B (1Password sharing link, Bitwarden Send, or encrypted email with a short expiry):

    Session password (link expires in 48 hours)

Rotate passwords between cohorts and confirm in the first five minutes of class that every student has a working session before you start teaching.

Monitoring a Live Class with Apple Remote Desktop

For physical i3 or M-series seats on a shared private network, Apple Remote Desktop (ARD) lets one instructor observe many student Macs at once. Apple's Remote Desktop User Guide documents a Multi-client observe window, Send UNIX Command, Lock Screen, and Copy Items — the four actions that matter most in a live lab:

  • Observe a tiled view of every student screen to spot who is stuck.
  • Send UNIX Command to push a one-line fix to every seat at once.
  • Lock Screen to freeze attention while you demonstrate.
  • Copy Items to hand out a starter project without each student downloading it.

ARD requires Screen Sharing/Remote Management enabled on each student Mac and network reachability from the instructor Mac. Confirm with your Figment quote whether your fleet sits on a shared private LAN or whether each seat needs an individual connection. ARD is a paid Apple app; buy it from the Mac App Store on the instructor's Mac. The $29 virtual Intel macOS seats are browser-console only, so ARD-style tiled observation applies to the physical i3/M-series tiers.

Resetting Between Cohorts

#!/bin/bash
# mac-dev-reset.sh — run as admin on a single Mac. Review before running.
set -euo pipefail

# Student accounts in this example were created with UIDs 1001-1099.
# Run `dscl . -list /Users UniqueID` and adjust the range to match your setup.
for username in $(dscl . -list /Users UniqueID | awk '$2 >= 1001 && $2 <= 1099 {print $1}'); do
  echo "Removing user: ${username}"
  sudo dscl . -delete "/Users/${username}"
  sudo rm -rf "/Users/${username}"
done

echo "Reset complete. Re-run mac-dev-bootstrap.sh and create fresh accounts."

Run this script per seat, not centrally, and inspect dscl . -list /Users UniqueID first — the UID range depends on how you created the accounts. Then re-run mac-dev-bootstrap.sh, create fresh Standard users, and generate new session passwords for the incoming cohort.

Ready to provision a class? Start your fleet request at /mac-hosting/start.


Subscribe for Figma design and website publishing guides.


Figment.so

Contact

Twitter

Website pricing

Compute index

About

Privacy

Terms