Frayme API — generative UI for your agents

Give your AI a real interface.

Your agent calls one API. Frayme streams back live, interactive UI — validated before it renders, on an open standard.

Read the docsLaunching August 24
189 open-source componentsvalidated every timeUI, woven live
your agentfrayme api

ask

real json-render ops · rendered live by the open-source SDK · not a video

the model

A model that composes interfaces.

Everything else here rests on this: Frayme runs its own model, purpose-trained to turn intent into a real, valid interface. That is why you get a component tree instead of a paragraph describing one.

  • Trained for one job

    Hundreds of millions of tokens of interface composition — not a general model asked nicely to output JSON.

  • Speaks the format natively

    It emits json-render operations directly, so the interface streams in as it thinks rather than after.

  • Knows the whole catalog

    Every one of the 189 components, their props and their events — checked against the catalog before anything renders.

from intent to interface

One call. A living interface.

your agent

ask

Show me last quarter’s pipeline.

POST /v1/compose

Your agent keeps the brain and sends one plain-language intent — no layout code, no component names to memorise.

← event · markClosedWon

frayme · json-render ops
  • {"op":"add", "path":"/root", "page"}
  • {"op":"add", "path":"/elements/header", "PageHeader"}
  • {"op":"add", "path":"/elements/stats", "StatGroup"}
  • {"op":"add", "path":"/elements/chart", "Candlestick"}
  • {"op":"add", "path":"/elements/table", "DataTable"}
  • {"op":"add", "path":"/elements/action", "Button"}

Every operation is checked against the component catalog before it reaches the browser — an invalid interface never renders.

your app

£1.4M

47

32%

Real components, not markdown. When someone clicks, the interaction returns to your agent as a structured event.

for developers

You keep the brain. Frayme is the hands.

'use client';
import { useEffect } from 'react';
import { FraymeRenderer, useFraymeCompose } from '@frayme/runtime/react';
import '@frayme/runtime/styles.css';

export function AgentAnswer({ prompt }: { prompt: string }) {
  const { compose, spec, restartKey } = useFraymeCompose();
  useEffect(() => { void compose({ prompt }); }, [compose, prompt]);

  return <FraymeRenderer spec={spec} restartKey={restartKey} />;
}
One hook, one renderer. The interface streams in as it composes.npm i @frayme/api @frayme/runtime

The spec is portable json-render, rendered by an MIT runtime — it drops into the agent framework you already use.

From intent to interface.

The Frayme API opens to everyone on August 24.

Launching August 24
Read the docsPlayground · Aug 24API keys · Aug 24