Dayuan Jiang 85cb441e26 feat: multi-provider model configuration with UI/UX improvements (#355)
* feat: add multi-provider model configuration

- Add model config dialog for managing multiple AI providers
- Support for OpenAI, Anthropic, Google, Azure, Bedrock, OpenRouter, DeepSeek, SiliconFlow, Ollama, and AI Gateway
- Add model selector dropdown in chat panel header
- Add API key validation endpoint
- Add custom model ID input with keyboard navigation
- Fix hover highlight in Command component
- Add suggested models for each provider including latest Claude 4.5 series
- Store configuration locally in browser

* feat: improve model config UI and move selector to chat input

- Move model selector from header to chat input (left of send button)
- Add per-model validation status (queued, running, valid, invalid)
- Filter model selector to only show verified models
- Add editable model IDs in config dialog
- Add custom model input field alongside suggested models dropdown
- Fix hover states on provider buttons and select triggers
- Update OpenAI suggested models with GPT-5 series
- Add alert-dialog component for delete confirmation

* refactor: revert shadcn component changes, apply hover fix at usage site

* feat: add AWS credentials support for Bedrock provider

- Add AWS Access Key ID, Secret Access Key, Region fields for Bedrock
- Show different credential fields based on provider type
- Update validation API to handle Bedrock with AWS credentials
- Add region selector with common AWS regions

* fix: reset Test button after validation completes

* fix: reset validation button to Test after success

* fix: complete bedrock support and UI/UX improvements

- Add bedrock to ALLOWED_CLIENT_PROVIDERS for client credentials
- Pass AWS credentials through full chain (headers → API → provider)
- Replace non-existent GPT-5 models with real ones (o1, o3-mini)
- Add accessibility: aria-labels, focus-visible rings, inline errors
- Add more AWS regions (Ohio, London, Paris, Mumbai, Seoul, São Paulo)
- Fix setTimeout cleanup with useRef on component unmount
- Fix TypeScript type consistency in getSelectedAIConfig fallback

* chore: remove unused code

- Remove unused setAccessCodeRequired state in chat-panel.tsx
- Remove unused getSelectedModel export in model-config.ts

* fix: UI/UX improvements for model configuration dialog

- Add gradient header styling with icon badge
- Change Configuration section icon from Key to Settings2
- Add duplicate model detection with warning banner and inline removal
- Filter out already-added models from suggestions dropdown
- Add type-to-confirm for deleting providers with 3+ models
- Enhance delete confirmation dialog with warning icon
- Improve model selector discoverability (show model name + chevron)
- Add truncation for long model names with title tooltip
- Remove AI provider settings from Settings dialog (now in Model Config)
- Extract ValidationButton into reusable component

* fix: prevent duplicate model IDs within same provider

- Block adding model if ID already exists in provider
- Block editing model ID to match existing model in provider

* fix: improve duplicate model ID notifications

- Add toast notification when trying to add duplicate model
- Allow free typing when editing model ID, validate on blur
- Show warning toast instead of blocking input

* fix: improve duplicate model validation UX in config dialog

- Add inline error display for duplicate model IDs
- Show red border on input when error exists
- Validate on blur with shake animation for edit errors
- Prevent saving empty model names
- Clear errors when user starts typing
- Simplify error styling (small red text, no heavy chips)
2025-12-22 22:36:36 +09:00
2025-12-22 10:39:28 +09:00

Next AI Draw.io

AI-Powered Diagram Creation Tool - Chat, Draw, Visualize

English | 中文 | 日本語

TrendShift

License: Apache 2.0 Next.js React Sponsor

Live Demo

A Next.js web application that integrates AI capabilities with draw.io diagrams. Create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.

https://github.com/user-attachments/assets/9d60a3e8-4a1c-4b5e-acbb-26af2d3eabd1

Table of Contents

Examples

Here are some example prompts and their generated diagrams:

Animated transformer connectors

Prompt: Give me a **animated connector** diagram of transformer's architecture.

Transformer Architecture with Animated Connectors
GCP architecture diagram

Prompt: Generate a GCP architecture diagram with **GCP icons**. In this diagram, users connect to a frontend hosted on an instance.

GCP Architecture Diagram
AWS architecture diagram

Prompt: Generate a AWS architecture diagram with **AWS icons**. In this diagram, users connect to a frontend hosted on an instance.

AWS Architecture Diagram
Azure architecture diagram

Prompt: Generate a Azure architecture diagram with **Azure icons**. In this diagram, users connect to a frontend hosted on an instance.

Azure Architecture Diagram
Cat sketch prompt

Prompt: Draw a cute cat for me.

Cat Drawing

Features

  • LLM-Powered Diagram Creation: Leverage Large Language Models to create and manipulate draw.io diagrams directly through natural language commands
  • Image-Based Diagram Replication: Upload existing diagrams or images and have the AI replicate and enhance them automatically
  • PDF & Text File Upload: Upload PDF documents and text files to extract content and generate diagrams from existing documents
  • AI Reasoning Display: View the AI's thinking process for supported models (OpenAI o1/o3, Gemini, Claude, etc.)
  • Diagram History: Comprehensive version control that tracks all changes, allowing you to view and restore previous versions of your diagrams before the AI editing.
  • Interactive Chat Interface: Communicate with AI to refine your diagrams in real-time
  • Cloud Architecture Diagram Support: Specialized support for generating cloud architecture diagrams (AWS, GCP, Azure)
  • Animated Connectors: Create dynamic and animated connectors between diagram elements for better visualization

MCP Server (Preview)

Preview Feature: This feature is experimental and may not stable.

Use Next AI Draw.io with AI agents like Claude Desktop, Cursor, and VS Code via MCP (Model Context Protocol).

{
  "mcpServers": {
    "drawio": {
      "command": "npx",
      "args": ["@next-ai-drawio/mcp-server@latest"]
    }
  }
}

Claude Code CLI

claude mcp add drawio -- npx @next-ai-drawio/mcp-server@latest

Then ask Claude to create diagrams:

"Create a flowchart showing user authentication with login, MFA, and session management"

The diagram appears in your browser in real-time!

See the MCP Server README for VS Code, Cursor, and other client configurations.

Getting Started

Try it Online

No installation needed! Try the app directly on our demo site:

Live Demo

Note: Due to high traffic, the demo site currently uses minimax-m2. For best results, we recommend self-hosting with Claude Sonnet 4.5 or Claude Opus 4.5.

Bring Your Own API Key: You can use your own API key to bypass usage limits on the demo site. Click the Settings icon in the chat panel to configure your provider and API key. Your key is stored locally in your browser and is never stored on the server.

Desktop Application

Download the native desktop app for your platform from the Releases page:

Platform Download
macOS .dmg (Intel & Apple Silicon)
Windows .exe installer (x64 & ARM64)
Linux .AppImage or .deb (x64 & ARM64)

Features:

  • Secure API key storage: Credentials encrypted using OS keychain
  • Configuration presets: Save and switch between AI providers via menu
  • Native file dialogs: Open/save .drawio files directly
  • Offline capable: Works without internet after first launch

Quick Setup:

  1. Download and install for your platform
  2. Open the app → Menu → Configuration → Manage Presets
  3. Add your AI provider credentials
  4. Start creating diagrams!

If you just want to run it locally, the best way is to use Docker.

First, install Docker if you haven't already: Get Docker

Then run:

docker run -d -p 3000:3000 \
  -e AI_PROVIDER=openai \
  -e AI_MODEL=gpt-4o \
  -e OPENAI_API_KEY=your_api_key \
  ghcr.io/dayuanjiang/next-ai-draw-io:latest

Or use an env file:

cp env.example .env
# Edit .env with your configuration
docker run -d -p 3000:3000 --env-file .env ghcr.io/dayuanjiang/next-ai-draw-io:latest

Open http://localhost:3000 in your browser.

Replace the environment variables with your preferred AI provider configuration. See Multi-Provider Support for available options.

Offline Deployment: If embed.diagrams.net is blocked, see Offline Deployment for configuration options.

Installation

  1. Clone the repository:
git clone https://github.com/DayuanJiang/next-ai-draw-io
cd next-ai-draw-io
  1. Install dependencies:
npm install
  1. Configure your AI provider:

Create a .env.local file in the root directory:

cp env.example .env.local

Edit .env.local and configure your chosen provider:

  • Set AI_PROVIDER to your chosen provider (bedrock, openai, anthropic, google, azure, ollama, openrouter, deepseek, siliconflow)
  • Set AI_MODEL to the specific model you want to use
  • Add the required API keys for your provider
  • TEMPERATURE: Optional temperature setting (e.g., 0 for deterministic output). Leave unset for models that don't support it (e.g., reasoning models).
  • ACCESS_CODE_LIST: Optional access password(s), can be comma-separated for multiple passwords.

Warning: If you do not set ACCESS_CODE_LIST, anyone can access your deployed site directly, which may lead to rapid depletion of your token. It is recommended to set this option.

See the Provider Configuration Guide for detailed setup instructions for each provider.

  1. Run the development server:
npm run dev
  1. Open http://localhost:3000 in your browser to see the application.

Deployment

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out the Next.js deployment documentation for more details.

Or you can deploy by this button. Deploy with Vercel

Be sure to set the environment variables in the Vercel dashboard as you did in your local .env.local file.

Multi-Provider Support

  • AWS Bedrock (default)
  • OpenAI
  • Anthropic
  • Google AI
  • Azure OpenAI
  • Ollama
  • OpenRouter
  • DeepSeek
  • SiliconFlow

All providers except AWS Bedrock and OpenRouter support custom endpoints.

📖 Detailed Provider Configuration Guide - See setup instructions for each provider.

Model Requirements: This task requires strong model capabilities for generating long-form text with strict formatting constraints (draw.io XML). Recommended models include Claude Sonnet 4.5, GPT-5.1, Gemini 3 Pro, and DeepSeek V3.2/R1.

Note that claude series has trained on draw.io diagrams with cloud architecture logos like AWS, Azure, GCP. So if you want to create cloud architecture diagrams, this is the best choice.

How It Works

The application uses the following technologies:

  • Next.js: For the frontend framework and routing
  • Vercel AI SDK (ai + @ai-sdk/*): For streaming AI responses and multi-provider support
  • react-drawio: For diagram representation and manipulation

Diagrams are represented as XML that can be rendered in draw.io. The AI processes your commands and generates or modifies this XML accordingly.

Project Structure

app/                  # Next.js App Router
  api/chat/           # Chat API endpoint with AI tools
  page.tsx            # Main page with DrawIO embed
components/           # React components
  chat-panel.tsx      # Chat interface with diagram control
  chat-input.tsx      # User input component with file upload
  history-dialog.tsx  # Diagram version history viewer
  ui/                 # UI components (buttons, cards, etc.)
contexts/             # React context providers
  diagram-context.tsx # Global diagram state management
lib/                  # Utility functions and helpers
  ai-providers.ts     # Multi-provider AI configuration
  utils.ts            # XML processing and conversion utilities
public/               # Static assets including example images

Support & Contact

If you find this project useful, please consider sponsoring to help me host the live demo site!

For support or inquiries, please open an issue on the GitHub repository or contact the maintainer at:

  • Email: me[at]jiang.jp

Star History

Star History Chart


Description
A next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.
Readme 12 MiB
Languages
TypeScript 91.8%
JavaScript 5.8%
CSS 1.7%
HTML 0.5%
Dockerfile 0.2%