Hiraiship · edge hosting
From a folder to a live URL in one command
Push a Vite, Rasengan.js, Astro or Next.js app. Hiraiship detects the framework, builds it in a sandbox and serves it from Cloudflare's global network.
npx hiraiship deploy- Packing 214 files · 1.8 MB
- Framework vite, detected
- Install pnpm install · 6.2s
- Build vite build · 4.1s
- Package 32 assets · 3 changed · 0.9s
- Publish production · 1.3s
- Ready → https://storefront.hiraiship.app

Terminal boot
A terminal types your install command, prints its output line by line, and your product rises from it when it is done. The command can be copied.
Use when: Developer tools, CLIs, SDKs and frameworks: products whose first step really is a command.
Engine: DOM (HTML, SVG, CSS 3D), every browser
Render: …
npx shadcn@latest add @sharingan/terminal-bootFirst time? Add the @sharingan registry to your project: getting started.
Add ?motion=final to the address for the repeatable still frame, or ?motion=off for the reduced-motion version.
Props
content what the hero says, real text in the DOM
| Name | Type | Default | Description |
|---|---|---|---|
| eyebrow | string (≤ 48 chars) | — | A short kicker above the headline. |
| headline * | string (8–70 chars) | — | The promise in one line, 4–9 words. |
| subheadline | string (≤ 180 chars) | — | One or two sentences under the headline. |
| primaryCta | object | — | |
| label * | string (2–28 chars) | — | Action verb first, 1–4 words. |
| href * | string (≥ 1 chars) | — | |
| secondaryCta | object | — | |
| label * | string (2–28 chars) | — | Action verb first, 1–4 words. |
| href * | string (≥ 1 chars) | — | |
| terminal * | object | — | |
| title | string (≤ 32 chars) | "~/projects" | The window's title. |
| command * | string (2–64 chars) | — | The real command people should run. A copy button copies it. |
| output * | object[] (1–8) | — | What the command prints, line by line. |
| text * | string (1–72 chars) | — | |
| status | "ok" | "info" | "warn" | "muted" | "ok" | `ok` lines spin, then tick. |
| done | string (≤ 72 chars) | — | The last line, e.g. where the app is running. |
| media | object | — | The product, revealed when the command has finished. |
| src * | string (≥ 1 chars) | — | |
| alt * | string (4–200 chars) | — | |
| address | string (≤ 48 chars) | — | Shown in the window's address bar, e.g. your-app.example.com. |
config how it looks and moves; attributes on the Web Component
| Name | Type | Default | Description |
|---|---|---|---|
| speed | number (5–80) | 24 | Characters typed per second. |
| accent | string | "var(--brand, oklch(0.68 0.17 262))" | The prompt and the links in the output. |
| loop | boolean | false | Run the whole sequence again a few seconds after it ends. |
| copy | boolean | true | Show a button that copies the command. |
The same hero as a Web Component
Web Component · no framework
<sg-terminal-boot>
The same engine, driven by attributes: a warmer prompt, faster hands, and it starts again by itself.
npx shadcn@latest add @sharingan/terminal-boot- Checked components.json
- Added lib/sharingan and heroes/terminal-boot
- No canvas, no WebGPU: runs in every browser
- Done. Import TerminalBootHero.