바이트댄스가 마침내 코즈(Coze)의 워크플로우 엔진을 오픈소스로 공개했다
2025년 2월, 바이트댄스는 GitHub에 FlowGram을 공개했다. React 기반의 시각적 워크플로우 개발 프레임워크다. 2026년 8월 현재, 이 프로젝트는 8,300개 이상의 Star와 765개의 Fork를 기록하며, 바이트댄스의 AI 워크플로우 분야 가장 중요한 오픈소스 기여 중 하나가 되었다.
FlowGram은 또 하나의 기성 워크플로우 플랫폼(n8n이나 Dify 같은)이 아니라, 워크플로우 플랫폼을 만들 수 있게 해주는 프레임워크다. 시각적 워크플로우 구축에 필요한 모든 기반 기능을 제공한다: 캔버스 엔진, 노드 폼, 변수 스코프 체인, 그리고 바로 사용할 수 있는 기성 컴포넌트(LLM, 조건 분기, 코드 에디터 등).
한 마디로 요약하면: 코즈(Coze) 같은 워크플로우 에디터를 만들고 싶다면, FlowGram이 그것을 빠르게 구현할 수 있게 해주는 스캐폴딩이다.
코즈(Coze)에서 FlowGram으로: 제품에서 엔진으로
FlowGram의 포지셔닝을 이해하려면, 먼저 그 기원을 알아야 한다.
바이트댄스의 코즈(Coze)는 일반 사용자를 위한 AI Bot 구축 플랫폼이며, 핵심 기능 중 하나가 시각적 워크플로우 오케스트레이션이다. 사용자가 노드를 드래그하고 연결선을 그리며 복잡한 AI 처리 플로우를 구성할 수 있다. 이 워크플로우 에디터는 코즈 내부에서 대규모로 검증되어 수백만 명의 사용자에게 서비스를 제공했다.
FlowGram은 바로 이 프로덕션급 제품에서 추출한 엔진 레이어다. 바이트댄스는 코즈 워크플로우 에디터의 프론트엔드 프레임워크를 오픈소스로 공개하되, 비즈니스 로직과 백엔드 서비스는 분리했다. 즉:
- 코즈 = FlowGram 엔진 + 비즈니스 백엔드 + 사용자 인터페이스
- FlowGram = 순수 프론트엔드 워크플로우 프레임워크 (백엔드는 직접 연동해야 함)
이 관계는 Dify와 FlowGram의 차이와 비슷하다: Dify는 풀스택 플랫폼이고, FlowGram은 프론트엔드 엔진이다. FlowGram을 선택한다는 것은 완전한 제어권을 갖는다는 뜻이다 — 커스텀 백엔드, 커스텀 데이터 모델, 커스텀 배포 방식.
핵심 기능: 듀얼 레이아웃 모드와 4대 엔진
프리 레이아웃 vs 픽스드 레이아웃
FlowGram의 가장 큰 차별화 기능은 두 가지 캔버스 레이아웃 모드를 동시에 지원한다는 점이다.
프리 레이아웃 (Free Layout): - 노드를 캔버스 위에 자유롭게 배치 - 노드 간 자유 곡선으로 연결 - 줌, 팬, 미니맵 내비게이션 지원 - 복잡하고 비정형적인 워크플로우에 적합
픽스드 레이아웃 (Fixed Layout): - 노드 자동 정렬, 지정된 위치로 드래그 - 복합 노드 지원 (분기, 반복) - 명확한 계층 구조를 가진 플로우에 적합
두 레이아웃은 같은 프로젝트에서 공존할 수 있으며, 이는同类 프레임워크 중에서는 드문 특징이다.
4대 핵심 엔진
FlowGram의 아키텍처는 네 개의 독립 엔진으로 구성된다:
1. 캔버스 엔진 (Canvas Engine) React 기반의 고성능 캔버스 렌더링으로, 수천 개 노드의 부드러운 인터랙션을 지원한다. 실행 취소/다시 실행, 단축키, 선택 도구 등 편집 기능을 내장했다.
2. 폼 엔진 (Form Engine) 각 노드에는 파라미터 설정이 필요하다. 폼 엔진은 JSON Schema를 기반으로 설정 패널을 동적 렌더링하며, 내장 검증 규칙과 연동 로직을 갖추고, 커스텀 컴포넌트 확장도 지원한다.
3. 변수 엔진 (Variable Engine) 워크플로우 내부의 데이터 흐름 관리. 스코프 체인(각 노드가 상위 변수에 접근 가능), 타입 추론, 구조 검사를 지원하여 설계 단계에서 데이터 흐름 오류를 발견할 수 있다.
4. 런타임 엔진 (Runtime Engine) 워크플로우의 실행 엔진으로, 노드 스케줄링, 데이터 전달, 오류 처리, 디버깅을 담당한다. 브라우저 실행과 서버 실행 두 가지 모드를 지원한다.
내장 컴포넌트
FlowGram은 바로 사용할 수 있는 노드 컴포넌트 세트를 제공한다:
| 컴포넌트 | 기능 | 설명 |
|---|---|---|
| LLM Node | 대규모 모델 호출 | OpenAI, Claude 등 다중 모델 전환 지원 |
| Condition | 조건 분기 | 표현식에 따른 실행 경로 판단 |
| Code Editor | 코드 노드 | Monaco 에디터 내장, JS/Python 지원 |
| HTTP Request | HTTP 요청 | 외부 API 호출 |
| Loop | 반복 노드 | 배열 순회 및 배치 처리 |
| Start/End | 시작/종료 노드 | 플로우의 입구와 출구 |
모든 컴포넌트는 교체 가능하다 — 내장 컴포넌트를 교체할 수도, 커스텀 노드 타입을 추가할 수도 있다.
기술 아키텍처: 모듈러 디자인과 실행 엔진
FlowGram의 아키텍처 설계는 바이트댄스의 대규모 프론트엔드 엔지니어링 경험을 반영한다. 전체 프레임워크는 Monorepo 구조를 사용하며, 핵심 코드는 8개의 패키지로 나뉜다:
packages/
├── canvas-engine/ # 캔버스 렌더링 및 인터랙션
├── node-engine/ # 노드 라이프사이클 관리
├── variable-engine/ # 변수 스코프 및 타입 추론
├── runtime/ # 워크플로우 실행 엔진
├── materials/ # 내장 노드 컴포넌트
├── plugins/ # 플러그인 시스템
├── client/ # 클라이언트 SDK
└── common/ # 공통 유틸리티
노드 엔진 (Node Engine)
각 노드는 독립적인 상태 머신이며, 다음을 포함한다: - 입력 포트: 상위 데이터 수신 - 설정 패널: 사용자가 설정하는 파라미터 - 출력 포트: 하위로 결과 전달 - 실행 로직: 노드의 핵심 처리 함수
노드 간에는 포트 연결을 통해 DAG(유향 비순환 그래프)를 형성하며, 런타임 엔진이 위상 순서대로 실행한다.
변수 스코프 체인
이것은 FlowGram의 핵심 혁신이다. 각 노드는 자체 변수 스코프를 가지며, 스코프 트리를 형성한다:
Start 노드
├── 변수: userInput (string)
└── LLM 노드
├── 변수: prompt (string, userInput 참조)
└── Code 노드
└── 변수: result (object, prompt 참조)
하위 노드는 상위 노드의 변수에 접근할 수 있지만, 그 반대는 불가능하다. 이 설계는 변수 오염을 방지하고 데이터 흐름을 더 명확하게 만든다.
런타임 실행 모드
FlowGram은 두 가지 실행 모드를 지원한다:
브라우저 실행: - 경량 워크플로우에 적합 - 백엔드 서비스 불필요, 순수 프론트엔드 실행 - 제한: 파일 시스템, 데이터베이스 등 백엔드 리소스 접근 불가
서버 실행: - 프로덕션급 워크플로우에 적합 - 런타임 서비스 배포 필요 - 비동기 노드, 장시간 실행 작업 지원
런타임 엔진은 디버깅 기능을 제공한다 — 임의의 노드에서 실행을 일시 중지하고, 변수 상태를 확인한 후 계속하거나 되돌릴 수 있다.
FlowGram vs n8n vs Dify vs Node-RED: 워크플로우 도구 비교
워크플로우 도구를 선택하기 전에, 먼저 요구사항을 명확히 해야 한다. 다음 비교가 빠른 위치 파악에 도움이 된다:
| 항목 | FlowGram | n8n | Dify | Node-RED |
|---|---|---|---|---|
| 포지셔닝 | 워크플로우 프론트엔드 개발 프레임워크 | 자동화 워크플로우 플랫폼 | AI 애플리케이션 개발 플랫폼 | IoT 이벤트 스트림 도구 |
| 오픈소스 라이선스 | MIT | Sustainable Use (fair-code) | Apache 2.0 | Apache 2.0 |
| 기술 스택 | React/TypeScript | Vue/Node.js | Flask/React | Node.js |
| 레이아웃 모드 | 프리 레이아웃 + 픽스드 레이아웃 | 프리 레이아웃 | 픽스드 레이아웃 (선형) | 프리 레이아웃 |
| 사용 방식 | 애플리케이션에 임베드 | 독립 배포 사용 | 독립 배포 사용 | 독립 배포 사용 |
| AI 기능 | 내장 LLM/Code 컴포넌트 | 외부 노드 연동 필요 | 네이티브 AI 오케스트레이션 | 직접 통합 필요 |
| 커스텀 노드 | 완전 커스터마이징 | 지원 | 제한적 | 지원 |
| 백엔드 바인딩 | 없음 (순수 프론트엔드) | 자체 백엔드 포함 | 자체 백엔드 포함 | 자체 백엔드 포함 |
| 적용 시나리오 | 워크플로우 제품 구축 | 비즈니스 자동화 | AI 애플리케이션 구축 | IoT/이벤트 기반 |
| Star 수 | 8.3k | 59k+ | 67k+ | 21k+ |
핵심 차이점:
- FlowGram은 프레임워크이고, 다른 세 개는 플랫폼이다. 코즈 같은 워크플로우 제품을 구축하려면 FlowGram을 선택하고, 워크플로우로 작업을 자동화하려면 n8n이나 Dify를 선택한다.
- n8n의 fair-code 라이선스는 상업적 사용을 제한하며(매출이 임계값을 초과하면 유료), FlowGram의 MIT 라이선스는 이 제한이 없다.
- Dify는 AI 애플리케이션에 특화되어 있으며, 워크플로우는 기능 중 하나일 뿐이다. FlowGram은 범용 워크플로우 엔진이며, AI는 그 중 하나의 활용 시나리오다.
빠르게 시작하기: 3분 만에 개발 환경 구축
환경 준비
# Node.js 18+ 필수
node --version # 18 이상 확인
# 스캐폴딩으로 프로젝트 생성
npx @flowgram.ai/create-app@latest
스캐폴딩에서 템플릿 선택 프롬프트가 나타난다:
? 템플릿 선택:
❯ Free Layout Demo ⭐️ # 프리 레이아웃 (추천)
Fixed Layout Demo # 픽스드 레이아웃
Next.js + Ant Design # 프로덕션급 템플릿
Vite + React # 경량 템플릿
프로젝트 시작
cd demo-free-layout
npm install
npm start
브라우저에서 http://localhost:3000을 열면 완전한 워크플로우 에디터 인터페이스를 볼 수 있다.
프로젝트 구조
demo-free-layout/
├── src/
│ ├── components/ # UI 컴포넌트
│ ├── nodes/ # 커스텀 노드 정의
│ ├── plugins/ # 플러그인 설정
│ ├── editor.tsx # 에디터 진입점
│ └── App.tsx # 애플리케이션 진입점
├── package.json
└── tsconfig.json
실전: AI 콘텐츠 생성 워크플로우 구축
FlowGram으로 실제 AI 워크플로우를 구축해보자: 주제 입력 → 아웃라인 생성 → 섹션별 집필 → 다듬기 → 아티클 출력.
1단계: 워크플로우 JSON 정의
FlowGram의 워크플로우는 JSON 형식으로 노드와 연결을 기술한다:
{
"nodes": [
{
"id": "start",
"type": "start",
"data": {
"outputs": {
"topic": { "type": "string", "value": "AI Agent 발전 추세" }
}
}
},
{
"id": "outline",
"type": "llm",
"data": {
"model": "gpt-4",
"prompt": "다음 주제에 대한 아티클 아웃라인을 JSON 배열로 생성하세요: {{start.topic}}",
"temperature": 0.7
}
},
{
"id": "write_loop",
"type": "loop",
"data": {
"array": "{{outline.output.sections}}",
"itemVar": "section"
},
"children": [
{
"id": "write_section",
"type": "llm",
"data": {
"model": "gpt-4",
"prompt": "아웃라인 {{loop.section}}에 따라 상세 내용을 작성하세요. 주제: {{start.topic}}",
"temperature": 0.5
}
}
]
},
{
"id": "polish",
"type": "llm",
"data": {
"model": "gpt-4",
"prompt": "다음 아티클 내용을 다듬어 표현과连贯성을 개선하세요: {{write_loop.output}}",
"temperature": 0.3
}
},
{
"id": "end",
"type": "end",
"data": {
"outputs": {
"article": "{{polish.output}}"
}
}
}
],
"edges": [
{ "source": "start", "target": "outline" },
{ "source": "outline", "target": "write_loop" },
{ "source": "write_loop", "target": "polish" },
{ "source": "polish", "target": "end" }
]
}
2단계: 에디터에서 로드
import { FlowGramEditor } from '@flowgram.ai/editor';
function App() {
return (
<FlowGramEditor
initialWorkflow={workflowJson}
layout="free"
onExecute={async (nodeId, inputs) => {
// 커스텀 실행 로직
if (nodeId === 'outline') {
const response = await fetch('/api/llm', {
method: 'POST',
body: JSON.stringify(inputs)
});
return response.json();
}
}}
/>
);
}
3단계: 커스텀 실행 백엔드 구현
FlowGram의 프론트엔드 에디터는 시각적 표시를 담당하며, 실제 실행은 백엔드 로직을 직접 구현해야 한다:
// runtime/executor.ts
import { WorkflowRuntime } from '@flowgram.ai/runtime';
const runtime = new WorkflowRuntime({
// 커스텀 노드 실행기 등록
executors: {
llm: async (node, inputs) => {
const { model, prompt, temperature } = node.data;
const response = await openai.chat.completions.create({
model,
messages: [{ role: 'user', content: prompt }],
temperature,
});
return { output: response.choices[0].message.content };
},
code: async (node, inputs) => {
const { language, code } = node.data;
// 사용자 코드 안전 실행 (프로덕션에서는 샌드박스 사용)
const fn = new Function('inputs', code);
return fn(inputs);
},
http: async (node, inputs) => {
const { url, method, headers } = node.data;
const response = await fetch(url, { method, headers });
return response.json();
},
},
});
// 워크플로우 실행
const result = await runtime.execute(workflowJson, {
topic: 'AI Agent 발전 추세'
});
console.log(result.article);
코드 통합: React 애플리케이션에 임베드하기
FlowGram의 가장 큰 가치는 임베드 가능성이다. 독립 워크플로우 플랫폼을 사용하지 않고도 어떤 React 애플리케이션에든 통합할 수 있다.
기본 통합
import { FlowGramEditor } from '@flowgram.ai/editor';
import '@flowgram.ai/editor/dist/style.css';
function WorkflowBuilder() {
const [workflow, setWorkflow] = useState(initialWorkflow);
return (
<div style={{ height: '100vh' }}>
<FlowGramEditor
workflow={workflow}
onChange={setWorkflow}
layout="free"
// 커스텀 노드 패널
nodePanels={{
myCustomNode: MyCustomNodePanel,
}}
// 커스텀 툴바
toolbar={[
'undo', 'redo', '|',
'zoomIn', 'zoomOut', 'fitView', '|',
'execute', 'save',
]}
/>
</div>
);
}
커스텀 노드 타입
자체 노드 타입을 생성하여 워크플로우 기능을 확장할 수 있다:
// nodes/DatabaseQueryNode.ts
import { defineNode } from '@flowgram.ai/node-engine';
export const DatabaseQueryNode = defineNode({
type: 'database-query',
label: '데이터베이스 쿼리',
icon: 'database',
// 입력 포트 정의
inputs: {
sql: { type: 'string', label: 'SQL 문' },
params: { type: 'object', label: '파라미터' },
},
// 출력 포트 정의
outputs: {
rows: { type: 'array', label: '쿼리 결과' },
count: { type: 'number', label: '행 수' },
},
// 설정 폼
form: {
fields: [
{
key: 'database',
type: 'select',
label: '데이터베이스',
options: ['mysql', 'postgresql', 'sqlite'],
},
{
key: 'timeout',
type: 'number',
label: '타임아웃(ms)',
default: 5000,
},
],
},
// 실행 로직
execute: async (inputs, config) => {
const { sql, params } = inputs;
const { database, timeout } = config;
const result = await queryDatabase(database, sql, params, timeout);
return {
rows: result.rows,
count: result.rows.length,
};
},
});
Next.js와 통합
FlowGram은 Next.js 공식 예제(demo-nextjs)를 제공하며, SSR과 API Routes를 지원한다:
// pages/api/execute-workflow.ts
import { WorkflowRuntime } from '@flowgram.ai/runtime';
import type { NextApiRequest, NextApiResponse } from 'next';
const runtime = new WorkflowRuntime({
executors: {
// 모든 노드 실행기 등록
llm: async (node, inputs) => { /* ... */ },
'database-query': async (node, inputs) => { /* ... */ },
},
});
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const { workflow, inputValues } = req.body;
const result = await runtime.execute(workflow, inputValues);
res.json({ success: true, data: result });
}
적용 시나리오
FlowGram은 특히 다음 시나리오에 적합하다:
1. AI 워크플로우 제품 구축
코즈나 Dify 같은 워크플로우 플랫폼을 만들고 싶다면, FlowGram은 완성된 프론트엔드 엔진을 제공한다. 필요한 것은: - 자체 백엔드 API 설계 - 노드 실행 로직 구현 - UI 테마 커스터마이징
실제 사례: Coze Studio(코즈의 오픈소스 버전)는 FlowGram을 기반으로 구축되었다.
2. 기업 내부 자동화 플랫폼
기업 내부에는 다양한 승인 플로우, 데이터 처리 플로우가 존재한다. FlowGram으로 시각적 플로우 설정 플랫폼을 구축하면, 비즈니스 담당자가 노드를 드래그하여 자동화 플로우를 설정할 수 있으며, 개발 개입이 필요 없다.
3. AI Agent 오케스트레이션
여러 AI Agent의 협업을 워크플로우로 표현할 수 있다. 각 Agent가 하나의 노드이며, Agent 간 데이터 전달은 연결선으로 정의한다. FlowGram의 변수 스코프 체인은 Agent 간 컨텍스트 전달을 관리하는 데 특히 적합하다.
4. 데이터 처리 파이프라인
ETL 플로우, 데이터 클렌징 파이프라인, 보고서 생성 등 시나리오에서 FlowGram으로 시각적으로 구축할 수 있다. 각 데이터 처리 단계가 하나의 노드이며, 데이터는 노드 사이를 흐른다.
5. 로우코드 플랫폼의 워크플로우 모듈
로우코드/노코드 플랫폼을 개발 중이라면, 워크플로우 오케스트레이션은 핵심 기능 중 하나다. FlowGram을 플랫폼에 직접 임베드하여 워크플로우 모듈로 사용할 수 있다.
한계 및 주의사항
현재 한계
1. 순수 프론트엔드 프레임워크, 백엔드 없음
FlowGram은 프론트엔드 캔버스와 에디터만 제공하며, 백엔드 서비스는 포함하지 않는다. 직접 구현해야 할 것: - 워크플로우 영속화 (데이터베이스에 저장) - 노드 실행 엔진 (서버에서 실행) - 사용자 인증 및 권한 - API 인터페이스
소규모 팀에게는 적지 않은 작업량이다.
2. React 종속
FlowGram은 React에 깊이 종속되어 있어, Vue, Angular, Svelte 프로젝트에서는 사용할 수 없다. 기술 스택이 React가 아니라면 마이그레이션 비용을 평가해야 한다.
3. 문서가 아직 보완 중
핵심 기능은 모두 문서화되어 있지만, 일부 고급 기능(커스텀 플러그인, 복잡한 변수 타입 등)의 문서는 충분히 상세하지 않아 소스 코드를 읽어야 할 수 있다.
4. 커뮤니티 생태계가 아직 초기 단계
n8n(59k Star)이나 Dify(67k Star)에 비해, FlowGram의 커뮤니티 규모는 아직 작다. 서드파티 노드 컴포넌트, 튜토리얼, 사례가 상대적으로 제한적이다.
프로덕션 환경 권장사항
- 코드 노드는 샌드박스에서 실행: 사용자가 제출한 코드는 반드시 보안 샌드박스에서 실행하여, 악성 코드가 서버에 영향을 미치는 것을 방지해야 한다
- 대형 워크플로우 페이지네이션 로딩: 500개 이상의 노드를 가진 워크플로우는 페이지네이션 렌더링을 권장하며, 캔버스 렉을 방지한다
- 버전 관리: 워크플로우 JSON에는 버전 관리가 있어야 하며, 롤백을 지원해야 한다
- 실행 로그: 각 실행의 노드 입력/출력을 기록하여 문제排查를 용이하게 한다
자주 묻는 질문 (FAQ)
FlowGram과 코즈(Coze)는 어떤 관계인가요?
FlowGram은 코즈 워크플로우 에디터의 프론트엔드 엔진 오픈소스 버전이다. 코즈 = FlowGram + 백엔드 서비스 + 사용자 인터페이스. FlowGram은 캔버스, 노드, 변수 등 기반 기능을 제공하며, 백엔드 로직은 직접 구현해야 한다.
FlowGram을 워크플로우 플랫폼으로 바로 사용할 수 있나요?
바로 사용할 수는 없다. FlowGram은 개발 프레임워크이며, 완성된 플랫폼이 아니다. 이를 기반으로 자체 워크플로우 애플리케이션을 개발하고, 백엔드 실행 엔진과 데이터 영속화를 구현해야 한다. 워크플로우 플랫폼을 바로 사용하고 싶다면 n8n이나 Dify를 추천한다.
FlowGram은 어떤 프론트엔드 프레임워크를 지원하나요?
현재 React만 지원한다. FlowGram의 캔버스 엔진, 노드 컴포넌트, 폼 시스템 모두 React 기반으로 구축되었다. Vue, Angular 등의 프레임워크는 아직 지원하지 않는다.
커스텀 노드 타입은 어떻게 정의하나요?
defineNode API를 통해 노드의 타입, 입출력 포트, 설정 폼, 실행 로직을 정의한다. 커스텀 노드는 플러그인으로 패키징하여 다른 프로젝트에서 사용할 수 있도록 배포할 수 있다. 자세한 내용은 공식 문서의 Materials 장을 참조한다.
FlowGram 워크플로우는 내보내기/가져오기가 가능한가요?
가능하다. 워크플로우는 JSON 형식으로 기술되며, 직렬화와 역직렬화를 지원한다. 워크플로우 JSON을 데이터베이스에 저장하거나, 파일로 내보내어 공유할 수 있다. 가져올 때는 JSON을 에디터의 workflow 속성에 전달하면 된다.
총평
FlowGram은 바이트댄스의 AI 워크플로우 분야 중요한 오픈소스 기여다. 코즈의 프로덕션급 워크플로우 엔진을 커뮤니티에 공개하여, 개발자가 자체 시각적 워크플로우 제품을 빠르게 구축할 수 있게 했다.
장점: - 듀얼 레이아웃 모드 (프리 + 픽스드)가 유연하고 강력함 - 변수 스코프 체인 설계가 정교하고, 데이터 흐름이 명확함 - MIT 라이선스, 상업적 활용 친화적 - 코즈의 프로덕션급 검증을 거친 높은 코드 품질 - LLM, 조건, 코드 등 AI 컴포넌트 내장
단점: - 순수 프론트엔드 프레임워크, 백엔드는 직접 구현 필요 - React만 지원 - 커뮤니티 생태계가 아직 초기 단계 - 일부 고급 기능 문서가 미비
추천 대상: - 워크플로우 제품을 구축 중인 팀 - 시각적 오케스트레이션 기능이 필요한 AI 애플리케이션 개발자 - 기업 내부 자동화 플랫폼을 구축하려는 기술 팀
비추천 대상: - 워크플로우로 작업을 자동화하려는 개인 사용자 (n8n 추천) - React 외 기술 스택을 사용하는 팀 - 바로 사용할 수 있는 풀스택 AI 플랫폼이 필요한 경우 (Dify 추천)
FlowGram의 가치는 역량 부여에 있다 — 제품을 대체하는 것이 아니라, 더 빠르게 제품을 구축할 수 있도록 돕는다. 워크플로우 오케스트레이션이 필요한 프로젝트를 진행 중이라면, FlowGram을 진지하게 평가해 볼 만하다.
참고 링크: - GitHub 저장소: bytedance/flowgram.ai - 공식 문서: flowgram.ai - 온라인 데모: CodeSandbox | StackBlitz