Render streaming LLM output as live UI in React, Vue or DOM — and a Claude Code / Codex plugin that lets the agent draw charts, 3D scenes and animated topologies.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/liliang-cn/aigui{
"mcpServers": {
"aigui": {
"command": "node",
"args": ["/path/to/aigui/dist/index.js"]
}
}
}MCP Servers overview
# AIGUI
[](https://www.npmjs.com/package/@ai-gui/core)
[](https://www.npmjs.com/package/@ai-gui/core)
[](https://github.com/liliang-cn/aigui/actions/workflows/ci.yml)
[](./LICENSE)
Render a streaming LLM answer as live UI — markdown, charts, diagrams, maths, 3D, topologies and app-defined cards — in React, Vue or plain DOM.

[**Live demos**](https://liliang-cn.github.io/aigui/) · **Use it from Claude Code or Codex** — the agent draws charts, diagrams, 3D and topologies for you, as pictures or a live page: [install the plugin](#in-claude-code-and-codex).
| | |
| --- | --- |
|  |  |
|  |  |
|  |  |

Every picture above was drawn by AIGUI from a fenced block a model wrote; the data is sample data.
## Install
```sh
pnpm add @ai-gui/core @ai-gui/react # or @ai-gui/vue, @ai-gui/vanilla
pnpm add @ai-gui/plugin-chart @ai-gui/plugin-mermaid @ai-gui/plugin-katex # any plugins
```
| Package | |
| --- | --- |
| [`@ai-gui/core`](https://www.npmjs.com/package/@ai-gui/core) | Headless streaming parser, card registry, plugin engine, sanitizer |
| [`@ai-gui/react`](https://www.npmjs.com/package/@ai-gui/react) · [`@ai-gui/vue`](https://www.npmjs.com/package/@ai-gui/vue) · [`@ai-gui/vanilla`](https://www.npmjs.com/package/@ai-gui/vanilla) | Framework adapters |
| [`@ai-gui/plugin-chart`](https://www.npmjs.com/package/@ai-gui/plugin-chart) · [`@ai-gui/plugin-bigscreen`](https://www.npmjs.com/package/@ai-gui/plugin-bigscreen) · [`@ai-gui/plugin-dashboard`](https://www.npmjs.com/package/@ai-gui/plugin-dashboard) | ECharts charts, animated data walls, table + chart panels |
| [`@ai-gui/plugin-mermaid`](https://www.npmjs.com/package/@ai-gui/plugin-mermaid) · [`@ai-gui/plugin-katex`](https://www.npmjs.com/package/@ai-gui/plugin-katex) · [`@ai-gui/plugin-highlight`](https://www.npmjs.com/package/@ai-gui/plugin-highlight) | Diagrams, maths, code |
| [`@ai-gui/plugin-topology`](https://www.npmjs.com/package/@ai-gui/plugin-topology) · [`@ai-gui/plugin-graph`](https://www.npmjs.com/package/@ai-gui/plugin-graph) | Infrastructure topologies with playable steps, knowledge graphs |
| [`@ai-gui/plugin-scene`](https://www.npmjs.com/package/@ai-gui/plugin-scene) · [`@ai-gui/plugin-molecule`](https://www.npmjs.com/package/@ai-gui/plugin-molecule) · [`@ai-gui/plugin-map`](https://www.npmjs.com/package/@ai-gui/plugin-map) | 3D scenes, molecules, maps |
| [`@ai-gui/plugin-gravity`](https://www.npmjs.com/package/@ai-gui/plugin-gravity) · [`@ai-gui/plugin-motion`](https://www.npmjs.com/package/@ai-gui/plugin-motion) · [`@ai-gui/plugin-optics`](https://www.npmjs.com/package/@ai-gui/plugin-optics) · [`@ai-gui/plugin-physics`](https://www.npmjs.com/package/@ai-gui/plugin-physics) | Physics figures computed from the conditions |
| [`@ai-gui/plugin-solid`](https://www.npmjs.com/package/@ai-gui/plugin-solid) · [`@ai-gui/plugin-function`](https://www.npmjs.com/package/@ai-gui/plugin-function) · [`@ai-gui/plugin-figure`](https://www.npmjs.com/package/@ai-gui/plugin-figure) · [`@ai-gui/plugin-quote`](https://www.npmjs.com/package/@ai-gui/plugin-quote) | Geometry, functions, labelled figures, candlesticks |
| [`@ai-gui/plugin-ui`](https://www.npmjs.com/package/@ai-gui/plugin-ui) · [`@ai-gui/plugin-form`](https://www.npmjs.com/package/@ai-gui/plugin-form) · [`@ai-gui/plugin-primitives`](https://www.npmjs.com/package/@ai-gui/plugin-primitives) · [`@ai-gui/plugin-progress`](https://www.npmjs.com/package/@ai-gui/plugin-progress) · [`@ai-gui/plugin-flashcard`](https://www.npmjs.com/package/@ai-gui/plugin-flashcard) | Generated UI, forms, lists and tables, progress, flashcards |
| [`@ai-gui/plugin-citation`](https://www.npmjs.com/package/@ai-gui/plugin-citation) · [`@ai-gui/plugin-artifact`](https://www.npmjs.com/package/@ai-gui/plugin-artifact) · [`@ai-gui/plugin-evidence`](https://www.npmjs.com/package/@ai-gui/plugin-evidence) · [`@ai-gui/plugin-resultset`](https://www.npmjs.com/package/@ai-gui/plugin-resultset) | Sources, revisioned documents, host-written provenance and result tables |
| [`@ai-gui/plugin-sdk`](https://www.npmjs.com/package/@ai-gui/plugin-sdk) | Plugin authoring helpers |
| [`@ai-gui/openai`](https://www.npmjs.com/package/@ai-gui/openai) · [`@ai-gui/anthropic`](https://www.npmjs.com/package/@ai-gui/anthropic) · [`@ai-gui/vercel-ai`](https://www.npmjs.com/package/@ai-gui/vercel-ai) | Model stream adapters |
| [`@ai-gui/image`](https://www.npmjs.com/package/@ai-gui/image) · [`@ai-gui/openclaw`](https://www.npmjs.com/package/@ai-gui/openclaw) | Blocks to PNG in a headless browser; for picture-only chat channels |
| [`@ai-gui/mcp`](https://www.npmjs.com/package/@ai-gui/mcp) · [`@ai-gui/cli`](https://www.npmjs.com/package/@ai-gui/cli) · [`@ai-gui/live`](https://www.npmjs.com/package/@ai-gui/live) · [`@ai-gui/devtools`](https://www.npmjs.com/package/@ai-gui/devtools) | MCP server for agents, the system prompt as a file, server-driven cards, a stream timeline |
## Quick start
```tsx
import { useRef } from "react"
import { buildSystemPrompt } from "@ai-gui/core"
import { AIRenderer } from "@ai-gui/react"
import { chart } from "@ai-gui/plugin-chart"
import { mermaid } from "@ai-gui/plugin-mermaid"
const plugins = [chart(), mermaid()]
const system = buildSystemPrompt({ base: "You are a helpful assistant.", plugins })
export function Answer() {
const ref = useRef(null)
async function ask(question: string) {
const res = await fetch("/api/chat", { method: "POST", body: JSON.stringify({ system, question }) })
ref.current.reset()
await ref.current.feed(res.body) // renders as the tokens arrive
}
return <AIRenderer ref={ref} plugins={plugins} />
}
```
`buildSystemPrompt` tells the model which blocks it may write; pass `locale: "zh-CN"` for the rules in Chinese. The backend only streams text — any language works.
## In Claude Code and Codex
```text
# Claude Code
/plugin marketplace add liliang-cn/aigui
/plugin install aigui@aigui
# Codex
codex plugin marketplace add liliang-cn/aigui
codex plugin add aigui@aigui
```
The agent can then draw: `aigui_render` returns PNGs, `aigui_open` opens a live page in your browser, `aigui_edit` changes a page in place, `aigui_export` saves it as PNG, PDF, a self-contained HTML file or a GIF/WebM of it playing, and `aigui_topology` draws a system straight from its docker-compose or Kubernetes files. Page text is English unless you ask for another language. See [`@ai-gui/mcp`](./packages/mcp/README.md).
To see the pictures inside Claude Code instead of an image viewer, add the [`img-view`](./mods/img-view/README.md) mod: `/plugin install img-view@aigui`. It shows each drawing in a pane beside the conversation, as real pixels in kitty, Ghostty, iTerm2 and WezTerm and as colour block art in any other terminal.
## Docs
- All packages on npm: [npmjs.com/org/ai-gui](https://www.npmjs.com/org/ai-gui)
- [Full guide](./docs/guide.md) — cards, actions, channels, plugins in depth
- [AGENTS.md](./AGENTS.md) — integrating the SDK, what the model may write, releasing
- Each package's README, under [`packages/`](./packages)
## License
MIT
What people ask about aigui
What is liliang-cn/aigui?
+
liliang-cn/aigui is mcp servers for the Claude AI ecosystem. Render streaming LLM output as live UI in React, Vue or DOM — and a Claude Code / Codex plugin that lets the agent draw charts, 3D scenes and animated topologies. It has 0 GitHub stars and its last recorded update is dated 2026-10-10.
How do I install aigui?
+
You can install aigui by cloning the repository (https://github.com/liliang-cn/aigui) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is liliang-cn/aigui safe to use?
+
Our security agent has analyzed liliang-cn/aigui and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains liliang-cn/aigui?
+
liliang-cn/aigui is maintained by liliang-cn. The last recorded GitHub activity is dated 2026-10-10, with 0 open issues.
Are there alternatives to aigui?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy aigui to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/liliang-cn-aigui)<a href="https://claudewave.com/repo/liliang-cn-aigui"><img src="https://claudewave.com/api/badge/liliang-cn-aigui" alt="Featured on ClaudeWave: liliang-cn/aigui" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.