diff --git a/web-admin/src/features/projects/settings/ProjectDevSlotsSettings.svelte b/web-admin/src/features/projects/settings/ProjectDevSlotsSettings.svelte
new file mode 100644
index 00000000000..c99325b35a3
--- /dev/null
+++ b/web-admin/src/features/projects/settings/ProjectDevSlotsSettings.svelte
@@ -0,0 +1,201 @@
+
+
+
+
+ Sets the default cluster size allocated to new development deployments.
+ Development deployments are ephemeral — they spin up when a user opens a
+ branch editor and expire after 6 hours of inactivity.
+
+
+
+
+
Default cluster size
+
+
+
+
+
+ 1 Compute unit = 4 GiB RAM, 1 vCPU
+
+
+
+
+
+ {#if $updateProjectMutation.isPending}
+ Updating…
+ {:else if current}
+ {current.units}
+ —
+ {current.instance}
+ {:else}
+ Not set
+ {/if}
+
+
+
+
+ Select cluster size
+ {#if dropdownOpen}
+
+ {:else}
+
+ {/if}
+
+
+ {#each slotOptions as slots (slots)}
+ {@const opt = formatSize(slots)}
+ handleSelect(slots)}
+ >
+
+ {opt.units}
+
+
+ {opt.instance}
+
+
+ {/each}
+
+
+
+
+
+
+
diff --git a/web-admin/src/routes/[organization]/[project]/-/settings/+page.svelte b/web-admin/src/routes/[organization]/[project]/-/settings/+page.svelte
index d736d6b4a14..23839d6bda9 100644
--- a/web-admin/src/routes/[organization]/[project]/-/settings/+page.svelte
+++ b/web-admin/src/routes/[organization]/[project]/-/settings/+page.svelte
@@ -7,6 +7,7 @@
import DangerZone from "@rilldata/web-admin/components/settings/DangerZone.svelte";
import DeleteProject from "@rilldata/web-admin/features/projects/settings/DeleteProject.svelte";
import HibernateProject from "@rilldata/web-admin/features/projects/settings/HibernateProject.svelte";
+ import ProjectDevSlotsSettings from "@rilldata/web-admin/features/projects/settings/ProjectDevSlotsSettings.svelte";
import ProjectNameSettings from "@rilldata/web-admin/features/projects/settings/ProjectNameSettings.svelte";
import ProjectVisibilitySettings from "@rilldata/web-admin/features/projects/settings/ProjectVisibilitySettings.svelte";
@@ -34,6 +35,8 @@
+
+
Danger Zone