RackML Documentation

Rack Markup Language (RML) is an XML-based format for describing data center racks, equipment, and connections with precision and flexibility.

Quickstart

A minimal valid RackML document:

<rack name="my-rack" height="42">
    <appliance name="server1" y="1u" type="server" />
</rack>

This creates a 42U rack with a server appliance positioned at 1U from the bottom.

Dimensional Units

RackML supports multiple unit types for positions and sizes. All measurements can be specified with explicit units:

  • mm - Millimeters (e.g., "450mm")
  • m - Meters (e.g., "1m")
  • u - Rack units (e.g., "2u", where 1U = 44.45mm)

Examples:

  • size_x="440mm" - Width in millimeters
  • size_y="2u" - Height in rack units
  • y="10u" - Position 10 rack units from bottom

Common Attributes

Most RML elements inherit a common set of attributes for identification, sizing, and positioning. These attributes are available on <rack>, <appliance>, <slot>, <component>, <port>, <connection>, and <conduit> elements.

Identification & Metadata

Attribute Type Required Description
id string No Document-unique identifier (XML ID type)
name string No Human-readable label for the object
sku string No Part number or stock-keeping unit identifier
weight number No Weight in kilograms

Size & Position

Attribute Type Required Description
size_x dimension No Width of the object
size_y dimension No Height of the object
size_z dimension No Depth of the object
x dimension No X position relative to parent
y dimension No Y position relative to parent
z dimension No Z position relative to parent

Bounding Box

Attribute Type Required Description
Bd dimension No Bounding-box depth
Bw dimension No Bounding-box width

Rack Element

The <rack> element is the root element of an RML document, representing the entire rack enclosure.

Attributes

Attribute Type Required Description
version string No RML schema version (e.g., "1.0.0")
height string Yes Number of rack units (e.g., "42")
A dimension No Horizontal distance between inner edge of posts
B dimension No Horizontal distance between center of holes
C dimension No Horizontal distance between outer edges of posts
D dimension No Rack depth or other specification measurement
U dimension No Physical size of each rack unit (default: "44.45mm")

Child Elements

  • <appliance>
  • <conduit>
  • <connection>
  • <annotation>

Example

<rack name="datacenter-rack-01" height="42" 
      A="450mm" B="465mm" C="483.4mm" D="1m" U="44.45mm">
    <!-- Appliances go here -->
</rack>

Appliance Element

The <appliance> element represents a piece of equipment installed in the rack (servers, switches, storage units, etc.).

Attributes

Attribute Type Required Default Description
version string No - RML schema version for this appliance definition
type string Yes - Appliance type classification
anchor string No "front" Mounting reference point (front/rear)
position string No "mounted" Installation position type
rot_x decimal No 0 Rotation around X-axis in degrees
rot_y decimal No 0 Rotation around Y-axis in degrees
rot_z decimal No 0 Rotation around Z-axis in degrees
_manufacturer string No - User-defined manufacturer name (e.g., "Dell", "HP")
_model string No - User-defined model identifier (e.g., "R740", "ProLiant DL380")
_description string No - User-defined description or notes about the appliance

Child Elements

  • <slot>
  • <port>
  • <annotation>

Example

<appliance name="web-server-01" y="1u" 
           type="server" _manufacturer="Dell" _model="R740"
           size_x="440mm" size_y="2u" size_z="800mm">
    <port name="eth1" type="rj45" x="50mm" y="0" face="front" />
    <port name="power1" type="c14" x="10mm" y="0" face="rear" />
</appliance>

Slot Element

The <slot> element defines an expansion slot or modular bay within an appliance that can accept components.

Attributes

Attribute Type Required Default Description
accepts string Yes - Type of component this slot accepts
face string Yes - Which face of the appliance (front/rear)
rotation decimal No 0 Rotation in degrees around Z-axis

Child Elements

  • <component> (0 or 1)

Example

<slot name="psu-slot-1" accepts="psu" face="rear" 
      x="10mm" y="10mm" size_x="100mm" size_y="50mm">
    <component type="psu" name="750w-psu">
        <port name="power-in" type="c14" x="10mm" y="10mm" />
    </component>
</slot>

Component Element

The <component> element represents a modular component installed in a slot (power supplies, line cards, etc.).

Attributes

Attribute Type Required Description
type string Yes Component type classification

Child Elements

  • <port>

Example

<component type="linecard" name="48-port-ethernet">
    <port name="eth1" type="rj45" x="10mm" y="10mm" />
    <port name="eth2" type="rj45" x="20mm" y="10mm" />
</component>

Port Element

The <port> element defines a connection point (network, power, console, etc.) on an appliance or component.

Attributes

Attribute Type Required Default Description
type string Yes - Port type (rj45, sfp+, c14, etc.)
face string No - Which face the port is on (front/rear)
rotation decimal No 0 Rotation in degrees around Z-axis

Common Port Types

  • rj45 - Ethernet port
  • sfp+ - 10G fiber port
  • c14 - IEC power inlet
  • c13 - IEC power outlet
  • usb - USB port

Example

<port name="mgmt-port" type="rj45" x="380mm" y="0" face="front" />
<port name="power-in-1" type="c14" x="50mm" y="0" face="rear" />

Connection Element

The <connection> element defines a cable or logical connection between two ports.

Attributes

Attribute Type Required Description
from string No Source port name or path
to string No Destination port name or path
cable-type string No Cable or medium type (e.g. "Cat6", "OM4", "Direct", "DAC")

Child Elements

  • <via> - Intermediate waypoints for cable routing
Via Element Attributes
Attribute Type Required Description
name string No Label for this waypoint (e.g., "cable-tray", "patch-panel-a")
path string No Comma-separated 3-D coordinate path through this waypoint (e.g., "0.5m,1.5m,0.2m")

Example

<connection name="uplink-1" 
            from="server-01/eth1" 
            to="switch-01/port24">
    <via name="cable-tray" path="0.5m,1.5m,0.2m" />
</connection>

Conduit Element

The <conduit> element defines cable management infrastructure like trays, raceways, or conduits.

Attributes

Attribute Type Required Description
type string No Conduit type (tray, raceway, etc.)
start string No Starting position or reference
end string No Ending position or reference
join-type string No How conduit segments join

Example

<conduit name="overhead-tray" type="cable-tray"
         start="0,42u,0" end="0,42u,1m"
         size_x="100mm" size_y="50mm" />

Annotation Element

The <annotation> element allows you to attach user-authored notes to a rack or appliance. Annotations are displayed in the properties panel when the parent object is selected.

Attributes

Attribute Type Required Description
id string No Document-unique identifier for this annotation
text string Yes The annotation body text (plain text, no markup)
author string No Name or identifier of the person who wrote the annotation
date string No ISO 8601 timestamp when the annotation was created (e.g., "2026-03-15T14:30:00Z")

Example

<rack name="prod-rack-01" height="42">
    <annotation text="Primary production rack for web services" 
                author="jsmith" date="2024-01-15T10:30:00Z" />
    <appliance name="web-server" y="1u" type="server">
        <annotation text="Scheduled for replacement Q2 2024" author="ops-team" />
    </appliance>
</rack>

Complete Examples

Simple Server Rack

<rack name="server-rack-01" height="42" A="450mm" B="465mm" C="483.4mm" D="1m">
    <appliance name="switch-01" y="1u" type="switch" 
               size_x="440mm" size_y="1u" size_z="300mm">
        <port name="port1" type="rj45" x="50mm" y="0" face="front" />
        <port name="port2" type="rj45" x="80mm" y="0" face="front" />
        <port name="power" type="c14" x="20mm" y="0" face="rear" />
    </appliance>
    
    <appliance name="server-01" y="3u" type="server"
               size_x="440mm" size_y="2u" size_z="800mm">
        <port name="eth1" type="rj45" x="300mm" y="0" face="front" />
        <port name="power-1" type="c14" x="50mm" y="0" face="rear" />
        <port name="power-2" type="c14" x="100mm" y="0" face="rear" />
    </appliance>
    
    <connection name="uplink" from="server-01/eth1" to="switch-01/port1" />
</rack>

Modular Switch with Slots

<rack name="datacenter-rack" height="42">
    <appliance name="modular-switch" y="1u" type="switch"
               size_x="440mm" size_y="2u" size_z="800mm">
        <slot name="linecard-1" accepts="linecard" face="front"
              x="50mm" y="20mm" size_x="200mm" size_y="80mm">
            <component type="linecard" name="48-port-ethernet">
                <port name="eth1" type="rj45" x="10mm" y="10mm" />
                <port name="eth2" type="rj45" x="20mm" y="10mm" />
            </component>
        </slot>
        
        <slot name="psu-1" accepts="psu" face="rear"
              x="10mm" y="10mm" size_x="100mm" size_y="50mm">
            <component type="psu" name="750w-supply">
                <port name="power-in" type="c14" x="10mm" y="10mm" />
            </component>
        </slot>
    </appliance>
</rack>
OpenRack Logo

© 2026 Logistic Support Alliance, LLC. All rights reserved.