React voice agent UI
- Voice agent UI
that feels alive.
- Expressive themes, realtime voice states, and provider adapters that all end at one React component.
-
-
- npm install orb-ui
- Read the docs →
-
- Native paths
- Vapi
- ElevenLabs
- LiveKit
- Pipecat
- OpenAI
- Gemini
-
-
-
-
-
- SimulationSpeaking0.72
-
+
+
diff --git a/assets/social/homepage-orb.png b/assets/social/homepage-orb.png
new file mode 100644
index 0000000..e54e0b3
Binary files /dev/null and b/assets/social/homepage-orb.png differ
diff --git a/assets/social/homepage-social.png b/assets/social/homepage-social.png
new file mode 100644
index 0000000..17ad4c0
Binary files /dev/null and b/assets/social/homepage-social.png differ
diff --git a/demo/index.html b/demo/index.html
index eb1314a..4916034 100644
--- a/demo/index.html
+++ b/demo/index.html
@@ -24,13 +24,13 @@
property="og:description"
content="React components for voice agent UIs. Add animated voice orbs, audio-reactive themes, and provider adapters for Vapi, ElevenLabs, and custom realtime voice AI apps."
/>
-
-
+
+
@@ -40,10 +40,10 @@
name="twitter:description"
content="React components for voice agent UIs. Add animated voice orbs, audio-reactive themes, and provider adapters for Vapi, ElevenLabs, and custom realtime voice AI apps."
/>
-
+
diff --git a/demo/public/og-image-v3.png b/demo/public/og-image-v3.png
new file mode 100644
index 0000000..17ad4c0
Binary files /dev/null and b/demo/public/og-image-v3.png differ
diff --git a/docs/docs.json b/docs/docs.json
index 19f6f73..1ca6157 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -48,10 +48,10 @@
},
"seo": {
"metatags": {
- "og:image": "https://orb-ui.com/og-image-v2.jpg",
- "og:image:alt": "orb-ui — Voice agent UI that feels alive, with a blue animated voice orb.",
- "twitter:image": "https://orb-ui.com/og-image-v2.jpg",
- "twitter:image:alt": "orb-ui — Voice agent UI that feels alive, with a blue animated voice orb."
+ "og:image": "https://orb-ui.com/og-image-v3.png",
+ "og:image:alt": "orb-ui — Voice agent UI that feels alive, with its blue cloud orb.",
+ "twitter:image": "https://orb-ui.com/og-image-v3.png",
+ "twitter:image:alt": "orb-ui — Voice agent UI that feels alive, with its blue cloud orb."
}
},
"integrations": {
diff --git a/scripts/generate-og-image.mjs b/scripts/generate-og-image.mjs
index 972e98c..401a85d 100644
--- a/scripts/generate-og-image.mjs
+++ b/scripts/generate-og-image.mjs
@@ -1,415 +1,12 @@
-import { chromium } from '@playwright/test'
-import { existsSync } from 'node:fs'
+import { copyFile } from 'node:fs/promises'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
const root = resolve(dirname(fileURLToPath(import.meta.url)), '..')
-const outputPath = resolve(root, 'demo/public/og-image-v2.jpg')
-const browser = await chromium.launch({
- ...(existsSync(chromium.executablePath()) ? {} : { channel: 'chrome' }),
- headless: true,
-})
-const page = await browser.newPage({
- viewport: { width: 1200, height: 630 },
- deviceScaleFactor: 1,
-})
-
-await page.setContent(`
-
-
-
-
-
-
-
-