Skip to content

Choose an AI runtime

Choose by your existing framework or by the work the interface needs to do.

Start with your application

A runtime owns conversation state and commands. A provider serves models. A protocol connects a server to a client. Ghost can sit at any of these integration edges without choosing a new state engine for your product. Its views remain React; its pure contracts and normalizers have no React dependency.

Already have messages? Start with plain data. Otherwise choose the state owner you want to keep. Complete its first integration before adding advanced commands. Runtime architecture, adapters, threads and stability explain the shared concepts.

By framework or protocol

Protocol bridges deliberately share one client and canonical views. A new package that merely renames that same bridge would add another upgrade surface without adding a capability. Direct native paths remain available when conversion would lose useful state. Checked versions and limits distinguish executable frontend evidence from application server setup.

By need

What Ghost adds

Ghost supplies canonical data/view contracts, optional current-context command guards, capability declarations and reusable React composition. Native clients keep their event reducers, stores and lifecycle. Callers keep transport configuration, persistence, application schema/policy and tool execution. You can use just the views, just a normalizer or the optional runtime binding.

Assistant UI offers managed runtimes, external-store integration and standalone elements. Its managed thread features may suit a new chat product; Ghost's integration edge fits an existing product that already owns state. shadcn offers copyable parts and SDK helpers. These are useful alternatives; SDK independence alone does not establish performance, bundle or whole-library superiority.

Continue to the interface

Use Message, Composer, Tool, Activity, Citation and Questionnaire for composition and styling. Runtime guides explain data and lifecycle; component pages own appearance. For a new runtime, begin at adapters, preserve native identities and prove the actual SDK path before listing it as supported.