All configuration of an Infinite Mac session is URL-driven. TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/mihaip/infinite-mac/llms.txt
Use this file to discover all available pages before exploring further.
runDefFromUrl function in src/defs/run-def.ts parses every supported parameter from the URL and assembles a RunDef object that drives the emulator. The inverse, runDefToUrl, serialises a RunDef back to a URL — both functions are the authoritative source of truth for the parameter names and their accepted values documented on this page.
URL patterns
Infinite Mac recognises two URL shapes. Year-path URLs select a pre-bundled system disk by year and name:https://infinitemac.org/1991/System%207.0
With year-path URLs, infinite_hd and saved_hd both default to true; pass false explicitly to disable them.
Custom-run and embed URLs allow full configuration via query parameters:
/embed variant activates embed-specific behaviour (screen fills the iframe, library drawer is hidden, default EmulatorSettings are applied). Every parameter below works with either path unless noted otherwise.
Disk Selection
The
displayName of a built-in system disk to include (e.g. "System 7.5",
"Mac OS 9.0.4"). May be repeated to include multiple disks. The first disk
determines the preferred machine if machine is not also specified.URL of an external disk image to mount. May be repeated for multiple external
disks. The image must be reachable from the emulator’s origin, so CORS
headers are required for cross-origin URLs.
Comma-separated list of chunk indices to prefetch for the corresponding
external disk, e.g.
"0,1,2". Position-matched with disk_url — the first
disk_prefetch applies to the first disk_url, the second to the second,
and so on. May be repeated.Machine
The exact
name of a MachineDef to use, overriding the disk’s preferred
machine. Examples: "Quadra 650", "Power Macintosh G3 (Beige)",
"Mac Plus". Setting this parameter also marks the run as custom.RAM size override for the selected machine. The value must be one of the sizes
listed in that machine’s
ramSizes array. Examples: "128K", "8M",
"32M", "256M". If the value is not present in the machine’s supported
sizes it is silently ignored.Screen
Controls how the emulated screen is sized. Accepted values:
When embedding, the iframe’s own
| Value | Behaviour |
|---|---|
auto | Default for /run URLs. The screen adapts to the window. |
window | Screen fills a floating window within the page. |
fullscreen | Screen expands to fill the browser viewport. |
embed | Set automatically for /embed URLs; fills the iframe dimensions. |
WxH | Fixed resolution, e.g. "800x600" or "1024x768". |
width and height attributes determine
the emulated screen resolution unless you specify an explicit WxH value.Pixel scale factor applied to the emulated display, e.g.
2 for 2× integer
scaling. At scale 2 you should also double the iframe’s width and
height so that the logical resolution remains unchanged while the rendered
output is crisper. Also accepted as screenScale (camelCase).Storage
Whether to mount the Infinite HD virtual hard disk, which contains
thousands of classic Mac applications drawn from the Macintosh Garden archive.
Defaults to
true for year-path URLs and false for /run//embed URLs.
Pass "true" or "false" explicitly to override.Whether to mount the Saved HD persistent disk whose contents survive
across sessions in the browser’s local storage. Defaults to
true for
year-path URLs and false for /run//embed URLs.Whether to show the Macintosh Garden library drawer that lets users browse and
load software at runtime. Defaults to
true; pass "false" to hide it. The
drawer is always hidden in embed mode (/embed URLs).URL of a Macintosh Garden library item to pre-download when the session
starts. The item will be available in the library drawer immediately without
requiring the user to initiate a download. May be repeated.
CD-ROMs
URL of a CD-ROM disk image to mount. Also accepted as
cdrom_url. May be
repeated to mount multiple CD-ROMs.Alias for
cdrom. Both parameter names are collected and merged into a single
list of CD-ROM URLs.Comma-separated list of chunk indices to prefetch for the corresponding
CD-ROM image, e.g.
"0,1,2,3". Position-matched with the merged list of
cdrom/cdrom_url values. May be repeated.CD-ROM mounting is not supported by DingusPPC or PearPC. It is also
unavailable on Snow-backed machines that lack SCSI support, and on
sessions using a disk with an MFS (Macintosh File System) subset.
Networking
AppleTalk zone name for local networking via the Cloudflare Worker ethernet
provider. All sessions that share the same zone name can communicate with each
other over a virtual LocalTalk network.
Set to
"true" to use the BroadcastChannel API for local networking
instead of the Cloudflare Worker provider. This keeps traffic entirely within
the browser and is useful for connecting multiple tabs or iframes on the same
origin without a server.Playback
Set to
"true" to start the emulator in a paused state. The machine will not
execute until an emulator_unpause control event is received, or the user
manually resumes it.Set to
"true" to automatically pause the emulator when it scrolls out of
the browser viewport and resume it when it scrolls back in. Useful for
reducing CPU usage on long pages that contain multiple embedded instances.Embed-specific
Set to
"true" on /embed URLs to enable emulator_screen postMessage
notifications. When active, the emulator posts a message to the parent page
containing raw RGBA pixel data each time the screen changes. See
Notification Events for details on
how to receive and render these frames.Debug
Override the emulated machine’s clock with a specific date. The value is
parsed by the
fromDateString helper in src/lib/dates.ts. Useful for
reproducing date-sensitive bugs or testing software that behaves differently
on specific calendar dates.Set to
"true" to force the non-SharedArrayBuffer fallback execution mode,
even when SharedArrayBuffer is available. This replicates the degraded
performance environment seen by users whose hosting environment does not set
the required Cross-Origin-Embedder-Policy header.Set to
"true" to enable verbose audio debug logging in the browser console.Set to
"true" to enable verbose emulator-level logging in the browser
console. Effective for DingusPPC, Previous, and PearPC; has no
effect on other emulator backends.Set to
"true" to start with the emulator’s main loop paused at the very
first iteration, before any machine code has executed. Unlike the paused
parameter (which pauses after the machine is running), this halts execution
at the lowest level before the emulator loop begins.Set to
"true" to enable the trackpad debug overlay, which renders a visual
indicator of pointer position and touch state on top of the emulated screen.Set to
"true" to enable BlueSCSI support for the
DingusPPC emulator. Only recognised when the active emulator backend
supports optional BlueSCSI (emulatorHasOptionalBlueSCSI returns true).A JSON-encoded Example value:
EmulatorSettings object that overrides the default emulator
settings. Unrecognised keys are ignored; recognised keys are merged over the
defaults. The EmulatorSettings type is defined in
src/emulator/ui/settings.ts:{"swapControlAndCommand":true,"speed":0}Set to
"true" to open the custom configuration dialog pre-populated with the
parameters from the current URL. Also marks the run as custom (isCustom: true), which switches the URL display to the /run?... form.Example URL
The following embed URL starts a Quadra 650 running System 7.5, mounts the Infinite HD, pre-downloads a Macintosh Garden item, enables persistent storage, starts paused, uses 2× pixel scaling, and enables screen frame notifications:<iframe src="..."> attribute):