Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Generate editable Excalidraw diagrams from text or JSON for agents and developer workflows
| Date | Stars |
|---|---|
| 2026-07-31 | 292 |
| 2026-08-04 | 293 |
| 2026-08-06 | 293 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# excalidraw-cli
<p>
<a href="https://www.npmjs.com/package/@swiftlysingh/excalidraw-cli"><img src="https://img.shields.io/npm/v/@swiftlysingh/excalidraw-cli" alt="npm version"></a>
<a href="https://github.com/swiftlysingh/excalidraw-cli/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
</p>
<p align="center">
<img alt="image" src="https://github.com/user-attachments/assets/5af4b002-bd69-4187-8836-84135685117a" />
</p>
<p align="center">
Create Excalidraw flowcharts and diagrams from text-based DSL or JSON.
</p>
## Features
- **Text-based DSL** for quick flowchart creation
- **JSON API** for programmatic use
- **Auto-layout** using ELK.js (Eclipse Layout Kernel)
- **Multiple flow directions**: TB (top-bottom), BT, LR, RL
- **Export to PNG & SVG** with dark mode, custom backgrounds, scale, and padding
- **Programmable API** for integration into other tools
## Installation
Requires `Node >=20.19.0`. Node 18 is no longer supported.
### Using npm
```bash
npm install -g @swiftlysingh/excalidraw-cli
# or install via Homebrew
brew tap swiftlysingh/tap
brew install excalidraw-cli
```
### From Source (Local Development)
```bash
git clone https://github.com/swiftlysingh/excalidraw-cli.git
cd excalidraw-cli
npm install
npm run build
npm link # Makes 'excalidraw-cli' available globally
```
### Direct Usage (No Install)
```bash
# Run directly with node
node dist/cli.js create --inline "[A] -> [B]" -o diagram.excalidraw
```
## Quick Start
### Create from DSL
```bash
# Inline DSL
excalidraw-cli create --inline "(Start) -> [Process] -> {Decision?}" -o flow.excalidraw
# From file
excalidraw-cli create flowchart.dsl -o diagram.excalidraw
# From stdin
echo "[A] -> [B] -> [C]" | excalidraw-cli create --stdin -o diagram.excalidraw
```
### Export to Image
```bash
# Convert an existing .excalidraw file to PNG
excalidraw-cli convert diagram.excalidraw --format png
# Convert with options
excalidraw-cli convert diagram.excalidraw --format png --scale 2 --dark
# Convert to SVG without background
excalidraw-cli convert diagram.excalidraw --format svg --no-export-background
```
### DSL Syntax
| Syntax | Element | Description |
|--------|---------|-------------|
| `[Label]` | Rectangle | Process steps, actions |
| `{Label}` | Diamond | Decisions, conditionals |
| `(Label)` | Ellipse | Start/End points |
| `[[Label]]` | Database | Data storage |
| `[Label @fillStyle:hachure @backgroundColor:#a5d8ff]` | Styled node | Add inline node style attributes |
| `->` | Arrow | Forward connection |
| `<-` | Reverse Arrow | Reverse connection, logically parsed as right-to-left |
| `<->` | Bidirectional Arrow | Connection with arrowheads on both ends |
| `-->` | Dashed Arrow | Dashed connection |
| `-> "text" ->` | Labeled Arrow | Connection with a double-quoted label |
| `-> 'text' ->` | Labeled Arrow | Connection with a single-quoted label |
| `<--` | Dashed Reverse Arrow | Dashed reversed connection |
| `<-->` | Dashed Bidirectional Arrow | Dashed connection with arrowheads on both ends |
### Example DSL
```
(Start) -> [Enter Credentials] -> {Valid?}
{Valid?} -> "yes" -> [Dashboard] -> (End)
{Valid?} -> 'no' -> [Show Error] -> [Enter Credentials]
[API] -> "GET /users?name=\"pp\" \\ cache" -> [Client]
[Client] --> [Webhook]
[Worker] <-- [Queue]
[Service A] <--> [Service B]
[Reviewer] <- [Approved]
[Client] <-> [API]
```
### Edge label escaping
Edge labels must use the fully specified form `[A] -> "label" -> [B]` (or single quotes instead of double quotes).
Mixed forms like `[A] --> "x" -> [B]` are rejected because they are ambiguous.
Shell escaping tips:
```bash
# easiest: wrap the whole DSL in single quotes, use double-quoted labels inside
excalidraw-cli create --inline '[API] -> "GET /users?name=\"pp\"" -> [Client]' -o api.excalidraw
# if the label itself needs apostrophes, flip it
excalidraw-cli create --inline "[Decision] -> 'team\'s call' -> [Next]" -o decision.excalidraw
Excerpt of 8,961 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:7e5ced36a8e5cc8b, llm:description: 'Generate editable Excalidraw diagrams from text or JSON for agents and developer workflows'; topics include diagramming, excalidraw, ai-agents, automation, cli, developer-tools
matched fp:7e5ced36a8e5cc8b, llm:description: 'Generate editable Excalidraw diagrams from text or JSON for agents and developer workflows'; topics include diagramming, excalidraw, ai-agents, automation, cli, developer-tools
matched fp:7e5ced36a8e5cc8b, llm:description: 'Generate editable Excalidraw diagrams from text or JSON for agents and developer workflows'; topics include diagramming, excalidraw, ai-agents, automation, cli, developer-tools