diff --git a/docs/site/content/docs/remote-servers.mdx b/docs/site/content/docs/remote-servers.mdx
index e5aeced46fe..63f94e35af8 100644
--- a/docs/site/content/docs/remote-servers.mdx
+++ b/docs/site/content/docs/remote-servers.mdx
@@ -89,6 +89,11 @@ On the computer you want to use as the client:
caption="On the client: name the server, paste its access link, and add it. The pairing code is redacted in this example."
/>
+
+
Adding a server saves it without forcing every new project onto it. Open **Advanced → Active Server** only when you want server-routed projects, terminals, provider checks, and browser or mobile handoff to use that server by default.
## Use the remote server
diff --git a/docs/site/content/docs/review/annotate-ai-diff.mdx b/docs/site/content/docs/review/annotate-ai-diff.mdx
index e1a406e3e6c..6ac3fe4e6a1 100644
--- a/docs/site/content/docs/review/annotate-ai-diff.mdx
+++ b/docs/site/content/docs/review/annotate-ai-diff.mdx
@@ -2,8 +2,12 @@
title: Annotate AI Diff
---
+import { ImagePlaceholder } from '@/components/docs/prose';
+
Annotate AI Diff is Orca's inline review loop for agent-generated code. You leave comments on any line of any AI-generated hunk, then send them back to the agent as a single batch for revision — no copying line numbers, no context-switching.
+
+
## Leave a comment
1. Hover any line in the diff. A **+** appears in the gutter.
diff --git a/docs/site/content/docs/ways-to-run.mdx b/docs/site/content/docs/ways-to-run.mdx
index 7c8e9bbd1c1..1a9c44ba1d1 100644
--- a/docs/site/content/docs/ways-to-run.mdx
+++ b/docs/site/content/docs/ways-to-run.mdx
@@ -82,6 +82,11 @@ Providers people wire today include Vercel Sandbox, Fly, Modal, plain SSH hosts,
caption="Settings → Experimental → Cloud VM — enable the skill, then have an agent set up a recipe for the repo."
/>
+
+
**Good fit when:** you want clean isolation per task, disposable compute, or a standard environment every agent boots into.
**Setup sketch:**
diff --git a/docs/site/public/docs/annotate-ai-diff.gif b/docs/site/public/docs/annotate-ai-diff.gif
new file mode 100644
index 00000000000..015d63c849b
Binary files /dev/null and b/docs/site/public/docs/annotate-ai-diff.gif differ
diff --git a/docs/site/public/docs/posters/annotate-ai-diff.jpg b/docs/site/public/docs/posters/annotate-ai-diff.jpg
new file mode 100644
index 00000000000..fae7fc7ac1a
Binary files /dev/null and b/docs/site/public/docs/posters/annotate-ai-diff.jpg differ
diff --git a/docs/site/public/docs/posters/file-drag.jpg b/docs/site/public/docs/posters/file-drag.jpg
new file mode 100644
index 00000000000..6c28a080571
Binary files /dev/null and b/docs/site/public/docs/posters/file-drag.jpg differ
diff --git a/docs/site/public/docs/posters/orca-split-screen.jpg b/docs/site/public/docs/posters/orca-split-screen.jpg
new file mode 100644
index 00000000000..467bb382b85
Binary files /dev/null and b/docs/site/public/docs/posters/orca-split-screen.jpg differ
diff --git a/docs/site/public/docs/remote-server-share-desktop.png b/docs/site/public/docs/remote-server-share-desktop.png
new file mode 100644
index 00000000000..1453d01df6a
Binary files /dev/null and b/docs/site/public/docs/remote-server-share-desktop.png differ
diff --git a/docs/site/public/docs/ways-to-run-local-sidebar.png b/docs/site/public/docs/ways-to-run-local-sidebar.png
new file mode 100644
index 00000000000..8a748e4a1ad
Binary files /dev/null and b/docs/site/public/docs/ways-to-run-local-sidebar.png differ
diff --git a/docs/site/public/docs/ways-to-run-run-on.png b/docs/site/public/docs/ways-to-run-run-on.png
new file mode 100644
index 00000000000..e406171a169
Binary files /dev/null and b/docs/site/public/docs/ways-to-run-run-on.png differ
diff --git a/docs/site/src/app/docs/sitemap.ts b/docs/site/src/app/docs/sitemap.ts
new file mode 100644
index 00000000000..9c0b53561b1
--- /dev/null
+++ b/docs/site/src/app/docs/sitemap.ts
@@ -0,0 +1,13 @@
+import type { MetadataRoute } from 'next'
+import { source } from '@/lib/source'
+
+const siteUrl = 'https://www.onorca.dev'
+
+export default function sitemap(): MetadataRoute.Sitemap {
+ return source.getPages().map((page) => ({
+ url: `${siteUrl}${page.url}`,
+ lastModified: new Date(),
+ changeFrequency: 'weekly',
+ priority: page.url === '/docs' ? 0.9 : 0.7
+ }))
+}
diff --git a/docs/site/src/app/layout.tsx b/docs/site/src/app/layout.tsx
index b89f8a15f84..5aa94fb9a7e 100644
--- a/docs/site/src/app/layout.tsx
+++ b/docs/site/src/app/layout.tsx
@@ -44,7 +44,9 @@ export default function RootLayout({
return (
- {children}
+
+ {children}
+
)
diff --git a/docs/site/src/components/layout/DocsFooter.tsx b/docs/site/src/components/layout/DocsFooter.tsx
index c1f52c4029c..e8aed683f5e 100644
--- a/docs/site/src/components/layout/DocsFooter.tsx
+++ b/docs/site/src/components/layout/DocsFooter.tsx
@@ -62,6 +62,16 @@ export function DocsFooter() {
Discord
+
+
+ X
+
+
diff --git a/docs/site/src/components/layout/DocsHeader.tsx b/docs/site/src/components/layout/DocsHeader.tsx
index 71ef6f58f57..b4cd54b488f 100644
--- a/docs/site/src/components/layout/DocsHeader.tsx
+++ b/docs/site/src/components/layout/DocsHeader.tsx
@@ -1,9 +1,32 @@
import Link from 'next/link'
import Image from 'next/image'
-import { GitBranch, MessageCircle, X } from 'lucide-react'
+import { MessageCircle, Star } from 'lucide-react'
import { ThemeSwitch } from 'fumadocs-ui/layouts/shared/slots/theme-switch'
-export function DocsHeader() {
+async function getGithubStars(): Promise {
+ try {
+ const response = await fetch('https://api.github.com/repos/stablyai/orca', {
+ headers: { Accept: 'application/vnd.github+json' },
+ next: { revalidate: 3600 }
+ })
+ if (!response.ok) {
+ return undefined
+ }
+ const payload = (await response.json()) as { stargazers_count?: unknown }
+ return typeof payload.stargazers_count === 'number' ? payload.stargazers_count : undefined
+ } catch {
+ return undefined
+ }
+}
+
+function formatStars(stars: number): string {
+ return stars >= 1000 ? `${(stars / 1000).toFixed(1).replace(/\.0$/, '')}k` : String(stars)
+}
+
+export async function DocsHeader() {
+ const stars = await getGithubStars()
+ const formattedStars = stars === undefined ? undefined : formatStars(stars)
+
return (