Wrenn Admin — Capsules

Capsules

Launch temporary capsules to build and snapshot platform templates.

{#if !loading && runningCount > 0}
{runningCount} running
{/if}
{filteredCapsules.length} capsule{filteredCapsules.length !== 1 ? 's' : ''}
{#if error}
{error}. Try refreshing the page.
{/if}
ID
{@render sortableHeader('Template', 'template')} {@render sortableHeader('CPU', 'vcpus')} {@render sortableHeader('Memory', 'memory_mb')} {@render sortableHeader('Started', 'started_at')} {@render sortableHeader('Status', 'status')}
Actions
{#if loading && capsules.length === 0}
Loading capsules...
{:else if filteredCapsules.length === 0 && searchQuery}

No matching capsules

No capsules match "{searchQuery}".

{:else if filteredCapsules.length === 0}

No capsules

Launch a capsule, configure it interactively, then snapshot it as a platform template.

{:else} {#each filteredCapsules as capsule, i (capsule.id)} {@const stripeColor = capsule.status === 'running' ? 'bg-[var(--color-accent)]' : capsule.status === 'paused' ? 'bg-[var(--color-amber)]' : capsule.status === 'error' ? 'bg-[var(--color-red)]' : 'bg-[var(--color-text-muted)]'}
{#if capsule.status === 'running'} {:else if capsule.status === 'paused'} {:else if capsule.status === 'error'} {:else} {/if} {#if searchQuery && capsule.id.toLowerCase().includes(searchQuery.toLowerCase())} {@const matchIdx = capsule.id.toLowerCase().indexOf(searchQuery.toLowerCase())} {capsule.id.slice(0, matchIdx)}{capsule.id.slice(matchIdx, matchIdx + searchQuery.length)}{capsule.id.slice(matchIdx + searchQuery.length)} {:else} {capsule.id} {/if}
{capsule.template}
{capsule.vcpus}
{capsule.memory_mb}MB
{formatTime(capsule.started_at)} {#if capsule.last_active_at} active {timeAgo(capsule.last_active_at)} {/if}
{capsule.status}
{#if capsule.status === 'running' || capsule.status === 'paused'} {/if}
{/each} {/if}
{ showCreateDialog = false; }} oncreated={handleCreated} templateSource="platform" /> {#if destroyTarget} { destroyTarget = null; }} ondestroyed={handleDestroyed} destroyFn={destroyAdminCapsule} /> {/if} {#snippet sortableHeader(label: string, key: SortKey)} {/snippet}