diff --git a/repos/os/src/init/config.xsd b/repos/os/src/init/config.xsd
index 015e2d6f8f..71338e701c 100644
--- a/repos/os/src/init/config.xsd
+++ b/repos/os/src/init/config.xsd
@@ -108,6 +108,7 @@
     <xs:element name="default">
      <xs:complexType>
       <xs:attribute name="caps" type="xs:int" />
+      <xs:attribute name="ram"  type="Number_of_bytes" />
      </xs:complexType>
     </xs:element> <!-- "default" -->
 
@@ -200,6 +201,7 @@
       <xs:attribute name="name"            type="xs:string" />
       <xs:attribute name="ld"              type="Boolean" />
       <xs:attribute name="caps"            type="xs:int" />
+      <xs:attribute name="ram"             type="Number_of_bytes" />
       <xs:attribute name="priority"        type="xs:int" />
       <xs:attribute name="managing_system" type="Boolean" />
      </xs:complexType>
diff --git a/repos/os/src/lib/sandbox/child.cc b/repos/os/src/lib/sandbox/child.cc
index 2b2a8b5fa3..8efd49c88c 100644
--- a/repos/os/src/lib/sandbox/child.cc
+++ b/repos/os/src/lib/sandbox/child.cc
@@ -196,11 +196,19 @@ void Sandbox::Child::evaluate_dependencies()
 
 Sandbox::Ram_quota Sandbox::Child::_configured_ram_quota() const
 {
-	size_t assigned = 0;
+	Xml_node const &xml = _start_node->xml();
 
-	_start_node->xml().for_each_sub_node("resource", [&] (Xml_node resource) {
-		if (resource.attribute_value("name", String<8>()) == "RAM")
-			assigned = resource.attribute_value("quantum", Number_of_bytes()); });
+	Number_of_bytes const default_ram { _default_quota_accessor.default_ram().value };
+
+	size_t assigned = xml.attribute_value("ram", default_ram);
+
+	xml.for_each_sub_node("resource", [&] (Xml_node resource) {
+		if (resource.attribute_value("name", String<8>()) == "RAM") {
+			if (assigned)
+				warning(name(), ": ambigious RAM-quota definition");
+			assigned = resource.attribute_value("quantum", Number_of_bytes());
+		}
+	});
 
 	return Ram_quota { assigned };
 }
@@ -208,7 +216,7 @@ Sandbox::Ram_quota Sandbox::Child::_configured_ram_quota() const
 
 Sandbox::Cap_quota Sandbox::Child::_configured_cap_quota() const
 {
-	size_t const default_caps = _default_caps_accessor.default_caps().value;
+	size_t const default_caps = _default_quota_accessor.default_caps().value;
 
 	return Cap_quota { _start_node->xml().attribute_value("caps", default_caps) };
 }
@@ -742,7 +750,7 @@ Sandbox::Child::Child(Env                      &env,
                       Report_update_trigger    &report_update_trigger,
                       Xml_node                  start_node,
                       Default_route_accessor   &default_route_accessor,
-                      Default_caps_accessor    &default_caps_accessor,
+                      Default_quota_accessor   &default_quota_accessor,
                       Name_registry            &name_registry,
                       Ram_limit_accessor       &ram_limit_accessor,
                       Cap_limit_accessor       &cap_limit_accessor,
@@ -760,7 +768,7 @@ Sandbox::Child::Child(Env                      &env,
 	_list_element(this),
 	_start_node(_alloc, start_node),
 	_default_route_accessor(default_route_accessor),
-	_default_caps_accessor(default_caps_accessor),
+	_default_quota_accessor(default_quota_accessor),
 	_ram_limit_accessor(ram_limit_accessor),
 	_cap_limit_accessor(cap_limit_accessor),
 	_cpu_limit_accessor(cpu_limit_accessor),
@@ -768,7 +776,8 @@ Sandbox::Child::Child(Env                      &env,
 	_name_registry(name_registry),
 	_heartbeat_enabled(start_node.has_sub_node("heartbeat")),
 	_resources(_resources_from_start_node(start_node, prio_levels, affinity_space,
-	                                      default_caps_accessor.default_caps())),
+	                                      default_quota_accessor.default_caps(),
+	                                      default_quota_accessor.default_ram())),
 	_pd_intrinsics(pd_intrinsics),
 	_parent_services(parent_services),
 	_child_services(child_services),
diff --git a/repos/os/src/lib/sandbox/child.h b/repos/os/src/lib/sandbox/child.h
index 9af64ff87b..17695068fc 100644
--- a/repos/os/src/lib/sandbox/child.h
+++ b/repos/os/src/lib/sandbox/child.h
@@ -62,9 +62,10 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup
 			}
 		};
 
-		struct Default_caps_accessor : Interface
+		struct Default_quota_accessor : Interface
 		{
 			virtual Cap_quota default_caps() = 0;
+			virtual Ram_quota default_ram()  = 0;
 		};
 
 		template <typename QUOTA>
@@ -173,7 +174,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup
 		bool const _use_ld = _start_node->xml().attribute_value("ld", true);
 
 		Default_route_accessor &_default_route_accessor;
-		Default_caps_accessor  &_default_caps_accessor;
+		Default_quota_accessor &_default_quota_accessor;
 		Ram_limit_accessor     &_ram_limit_accessor;
 		Cap_limit_accessor     &_cap_limit_accessor;
 		Cpu_limit_accessor     &_cpu_limit_accessor;
@@ -271,33 +272,32 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup
 		static
 		Resources _resources_from_start_node(Xml_node start_node, Prio_levels prio_levels,
 		                                     Affinity::Space const &affinity_space,
-		                                     Cap_quota default_cap_quota)
+		                                     Cap_quota default_cap_quota,
+		                                     Ram_quota default_ram_quota)
 		{
-			unsigned cpu_percent = 0;
-			Number_of_bytes ram_bytes = 0;
+			Number_of_bytes const default_ram { default_ram_quota.value };
 
-			size_t caps = start_node.attribute_value("caps", default_cap_quota.value);
+			Number_of_bytes ram { start_node.attribute_value("ram", default_ram) };
+
+			size_t caps { start_node.attribute_value("caps", default_cap_quota.value) };
+
+			unsigned cpu_percent = 0;
 
 			start_node.for_each_sub_node("resource", [&] (Xml_node rsc) {
 
 				using Name = String<8>;
 				Name const name = rsc.attribute_value("name", Name());
 
-				if (name == "RAM")
-					ram_bytes = rsc.attribute_value("quantum", ram_bytes);
-
-				if (name == "CPU")
-					cpu_percent = rsc.attribute_value("quantum", 0U);
-
-				if (name == "CAP")
-					caps = rsc.attribute_value("quantum", 0UL);
+				if (name == "RAM") ram         = rsc.attribute_value("quantum", ram);
+				if (name == "CPU") cpu_percent = rsc.attribute_value("quantum", 0U);
+				if (name == "CAP") caps        = rsc.attribute_value("quantum", 0UL);
 			});
 
 			return Resources { log2(prio_levels.value),
 			                   priority_from_xml(start_node, prio_levels),
 			                   Affinity(affinity_space,
 			                            affinity_location_from_xml(affinity_space, start_node)),
-			                   Ram_quota { ram_bytes },
+			                   Ram_quota { ram },
 			                   Cap_quota { caps },
 			                   Cpu_quota { cpu_percent } };
 		}
@@ -583,7 +583,7 @@ class Sandbox::Child : Child_policy, Routed_service::Wakeup
 		      Report_update_trigger    &report_update_trigger,
 		      Xml_node                  start_node,
 		      Default_route_accessor   &default_route_accessor,
-		      Default_caps_accessor    &default_caps_accessor,
+		      Default_quota_accessor   &default_quota_accessor,
 		      Name_registry            &name_registry,
 		      Ram_limit_accessor       &ram_limit_accessor,
 		      Cap_limit_accessor       &cap_limit_accessor,
diff --git a/repos/os/src/lib/sandbox/config_model.cc b/repos/os/src/lib/sandbox/config_model.cc
index 57ef127cce..9b457e7e41 100644
--- a/repos/os/src/lib/sandbox/config_model.cc
+++ b/repos/os/src/lib/sandbox/config_model.cc
@@ -87,14 +87,17 @@ struct Config_model::Default_node : Node
 	}
 
 	Cap_quota &_default_caps;
+	Ram_quota &_default_ram;
 
-	Default_node(Cap_quota &default_caps) : _default_caps(default_caps) { }
+	Default_node(Cap_quota &default_caps, Ram_quota &default_ram)
+	: _default_caps(default_caps), _default_ram(default_ram) { }
 
 	bool matches(Xml_node const &xml) const override { return type_matches(xml); }
 
 	void update(Xml_node const &xml) override
 	{
 		_default_caps = Cap_quota { xml.attribute_value("caps", 0UL) };
+		_default_ram  = Ram_quota { xml.attribute_value("ram", Number_of_bytes()) };
 	}
 };
 
@@ -325,6 +328,7 @@ void Config_model::update_from_xml(Xml_node                 const &xml,
                                    Preservation                   &preservation,
                                    Constructible<Buffered_xml>    &default_route,
                                    Cap_quota                      &default_caps,
+                                   Ram_quota                      &default_ram,
                                    Prio_levels                    &prio_levels,
                                    Constructible<Affinity::Space> &affinity_space,
                                    Start_model::Factory           &child_factory,
@@ -358,7 +362,7 @@ void Config_model::update_from_xml(Xml_node                 const &xml,
 			return *new (alloc) Default_route_node(alloc, default_route);
 
 		if (Default_node::type_matches(xml))
-			return *new (alloc) Default_node(default_caps);
+			return *new (alloc) Default_node(default_caps, default_ram);
 
 		if (Start_node::type_matches(xml))
 			return *new (alloc) Start_node(child_factory, xml);
diff --git a/repos/os/src/lib/sandbox/config_model.h b/repos/os/src/lib/sandbox/config_model.h
index 0d32a9018c..3dc5ec284f 100644
--- a/repos/os/src/lib/sandbox/config_model.h
+++ b/repos/os/src/lib/sandbox/config_model.h
@@ -273,6 +273,7 @@ class Sandbox::Config_model : Noncopyable
 		                     Preservation                   &,
 		                     Constructible<Buffered_xml>    &,
 		                     Cap_quota                      &,
+		                     Ram_quota                      &,
 		                     Prio_levels                    &,
 		                     Constructible<Affinity::Space> &,
 		                     Start_model::Factory           &,
diff --git a/repos/os/src/lib/sandbox/library.cc b/repos/os/src/lib/sandbox/library.cc
index 06f863f680..21bbf69d8a 100644
--- a/repos/os/src/lib/sandbox/library.cc
+++ b/repos/os/src/lib/sandbox/library.cc
@@ -24,7 +24,7 @@
 
 struct Genode::Sandbox::Library : ::Sandbox::State_reporter::Producer,
                                   ::Sandbox::Child::Default_route_accessor,
-                                  ::Sandbox::Child::Default_caps_accessor,
+                                  ::Sandbox::Child::Default_quota_accessor,
                                   ::Sandbox::Child::Ram_limit_accessor,
                                   ::Sandbox::Child::Cap_limit_accessor,
                                   ::Sandbox::Child::Cpu_limit_accessor,
@@ -68,6 +68,7 @@ struct Genode::Sandbox::Library : ::Sandbox::State_reporter::Producer,
 	Config_model::Version          _version        { };
 	Constructible<Buffered_xml>    _default_route  { };
 	Cap_quota                      _default_caps   { 0 };
+	Ram_quota                      _default_ram    { 0 };
 	Prio_levels                    _prio_levels    { };
 	Constructible<Affinity::Space> _affinity_space { };
 	Preservation                   _preservation   { };
@@ -196,9 +197,10 @@ struct Genode::Sandbox::Library : ::Sandbox::State_reporter::Producer,
 	}
 
 	/**
-	 * Default_caps_accessor interface
+	 * Default_quota_accessor interface
 	 */
 	Cap_quota default_caps() override { return _default_caps; }
+	Ram_quota default_ram()  override { return _default_ram;  }
 
 	void _update_aliases_from_config(Xml_node const &);
 	void _update_parent_services_from_config(Xml_node const &);
@@ -442,6 +444,7 @@ void Genode::Sandbox::Library::apply_config(Xml_node const &config)
 	                              _preservation,
 	                              _default_route,
 	                              _default_caps,
+	                              _default_ram,
 	                              _prio_levels,
 	                              _affinity_space,
 	                              *this, *this, _server,