diff --git a/frontend/src/routes/(root)/(logged)/projects/install/+page.svelte b/frontend/src/routes/(root)/(logged)/projects/install/+page.svelte
new file mode 100644
index 0000000000..6c8fafdf98
--- /dev/null
+++ b/frontend/src/routes/(root)/(logged)/projects/install/+page.svelte
@@ -0,0 +1,278 @@
+
+
+
+ {#if !slug}
+
Missing ?hub=<slug>.
+ {:else if loading}
+
+ Loading project…
+
+ {:else if loadError}
+
Failed to load project: {loadError}
+ {:else if data}
+
Add “{data.project.name}” to workspace
+
{data.project.summary}
+
+ Imported into {workspace} under
+ f/{data.project.slug}/.
+
+
+
+ {counts?.scripts} scripts
+ {counts?.flows} flows
+ {counts?.apps} apps
+ {counts?.resources} resources
+ {counts?.triggers} triggers
+
+
+
+ Resources are imported as empty stubs — set their values after import. Schedules are imported
+ disabled.
+
+
+
+
+ {#if done}
+
+ {/if}
+
+
+ {#if results.length}
+
+ {#each results as r}
+ -
+ {r.ok ? '✓' : '✗'}
+ {r.path}
+ {#if !r.ok}— {r.error}{/if}
+
+ {/each}
+
+ {/if}
+ {/if}
+