
Two things that should have been true a while ago, and now are.
The Sora UI source is on GitHub: github.com/SoraLabsOSS/ui. MIT + Commons Clause, same terms that already applied to anything you installed from the registry. And the site has an Ask AI button that actually reads the docs before it talks — Cloudflare AI Search retrieves the matching pages, then a model answers from those excerpts.
Neither of these is a new product. They're the two doors that were missing: one for people who want to fork the thing, one for people who don't want to hunt through the sidebar for a prop name.
The repo, not just the copy-paste
Sora UI has always been a registry. You run npx shadcn add @soralabs/... (or sora-cli) and the source lands in your tree. That part didn't change. What changed is you can now see the tree we ship from.
The site, the registry items, the MCP server, the CLI docs — it's one Turborepo. If a primitive's reduced-motion fallback looks wrong, you don't have to reverse-engineer the installed file and guess how we meant it. You open the same index.tsx in apps/www/registry, patch it, send a PR. CONTRIBUTING.md is the actual map, not a placeholder.
A few things worth being precise about, because "open source" gets used as wallpaper:
- Use it in client work. That's the point. Commons Clause only blocks reselling the components as a kit.
- Bugs and "how do I" still go to the community repo. The source repo is for code. Mixing those two is how issue trackers die.
- Starring it helps more than a screenshot of the catalog. Registries don't show up in npm weekly downloads the way a package does. GitHub is the public number.
If you already have components installed, you don't need to reinstall anything. The files in your project were always yours. The missing piece was being able to see — and change — the upstream they came from.
Ask AI is retrieve, then a sentence. Not a tool loop.
There's an Ask AI control on docs, the catalog, the blog — anywhere you'd be reading instead of the home page, settings, or login. It looks like the Fumadocs chat, because it is. The thread lives in one root-layout instance, so changing pages doesn't wipe it. What we changed is how the answer gets made.
The first version let the model call a search tool, the way the Fumadocs template does. That works when the model actually speaks function-calling. Tiny free-tier models dump <tool_call> XML into the transcript and then stop. Five steps of "searching," zero sentences.
So we stopped asking it to search. The route retrieves, then generates.
That's Cloudflare AI Search against a crawler index of the live site — not the Flexsearch box behind ⌘K. The query gets rewritten into an English lookup with the real paths (/docs/icons/get-started, not a primitive that happens to have "icon" in the name), matching pages come back on the SSE chunks event, and Llama 3.1 8B answers from those pages. When the stream finishes, the retrieved URLs show up as source pills under the reply. No tools. No second round trip. One generation.
That's RAG in the boring sense: retrieve, then generate. The docs are a website, so the honest index is the website. Keyword search on the client is still what ⌘K does. Ask AI is a different door.
It will still be wrong sometimes. Follow the source pills, don't paste the answer into production because it sounded confident. The crawler sees rendered HTML, not every interactive tab, so a few install paths are pinned in the system prompt — there is no @sora-ui/components package, and icons are npx shadcn@latest add @soralabs/icons-[name]. That's cheaper than letting the model invent one.
This is not the MCP server
We already ship a docs MCP for agents: search_docs, get_page, list_sections, list_components, get_component_info, get_component_code. That's for Cursor / Claude Code / anything that speaks MCP. Ask AI is the version for a human who is already on the page and doesn't want to leave it.
They share the same content. They don't share a pipeline. MCP returns structured results and file bodies. Ask AI returns a paragraph plus the pages it used. If you're wiring an agent, use the MCP docs. If you're reading installation at 1am, use the button.
There's also llms.txt and per-page .md for anything that would rather fetch than chat. Ask AI doesn't replace that. It's the path that doesn't require you to be an agent.
What to do with this
- Star / fork the repo if you've been installing from the registry and wanted the other half.
- Open the docs, hit Ask AI, ask something you'd actually type —
How do I install Sora UI?,What is stagger button?,How do I add icons?. - If the answer cites the wrong page, that's useful. File it on the community repo. The index is only as good as the crawl.
The catalog didn't get a new primitive this week. The project got a public root, and the docs got a way to talk without hallucinating a prop we never shipped. That's enough for a Wednesday.