Sandbox
@Nyrok/flompt

Visual prompt builder for Claude Code and browsers

flompt turns a raw prompt into typed blocks you can drag, reorder, hide, and duplicate in a flowchart. It then compiles those blocks into Claude-optimized XML, and it also exposes the same functions through an MCP server and a browser extension.

149 starsβ€’16 forksβ€’TypeScriptβ€’Updated 5mo ago
Who it's for

Builders who want to decompose prompts into structured blocks and reuse them across Claude Code or browser chats.

What it delivers

You can turn messy prompts into a reusable structure instead of rewriting them by hand each time.

What it does

Flowchart prompt editor

Edit prompt blocks on a visual canvas with drag-and-drop, hide/show, duplicate, and card list views.

Prompt decomposition

Paste a prompt and have the app break it into typed blocks like role, objective, context, and constraints.

Claude XML compilation

Reorder blocks into Anthropic's recommended structure and export a Claude-ready XML prompt.

Browser extension

Use the builder inside ChatGPT, Claude, and Gemini with sidebar sync and an Enhance button.

Claude Code MCP tools

Expose `decompose_prompt`, `compile_prompt`, and `list_block_types` to Claude Code over MCP.

Block library

Provide 16 block types with canonical ordering and documented XML mappings.

How to get it

  1. 1Option 1: CLI (recommended)
    claude mcp add --transport http --scope user flompt https://flompt.dev/mcp/
  2. 2Backend
    cd backend
    python -m venv .venv && source .venv/bin/activate
    pip install -r requirements.txt
    cp .env.example .env   # add your API key
    uvicorn app.main:app --reload --port 8000
  3. 3App (Frontend)
    cd app
    cp .env.example .env   # optional: add PostHog key
    npm install
    npm run dev
  4. 4Blog
    cd blog
    npm install
    npm run dev   # available at http://localhost:3000/blog

README

flompt logo

flompt

flow + prompt = flompt
Turn any AI prompt into a visual flow. Decompose, edit as a flowchart, recompile.

Live Demo Stars License

Star goal progress

Sponsor Nyrok

CI Contributions welcome

Chrome Web Store Firefox Add-ons

Glama MCP

TypeScript React React Flow FastAPI Vite


πŸŽ₯ Demo

Try it live at flompt.dev, free, no account needed.

Paste any prompt. The AI breaks it into typed blocks. Drag, reorder, compile to Claude-optimized XML.

flompt demo


✨ What is flompt?

flompt is a visual prompt engineering tool.

Instead of writing one long block of text, flompt lets you:

  1. Paste any prompt and let the AI break it into structured blocks
  2. Drag, connect, and reorder blocks in a flowchart editor
  3. Compile to a Claude-optimized, machine-ready XML prompt

🧩 Block Types

16 specialized blocks that map directly to Claude's prompt engineering best practices:

BlockPurposeClaude XML
DocumentExternal content grounding<documents><document>
RoleAI persona & expertise<role>
ToolsCallable functions the agent can use<tools>
AudienceWho the output is written for<audience>
ContextBackground information<context>
EnvironmentSystem context: OS, paths, date, runtime<environment>
ObjectiveWhat to DO<objective>
GoalEnd goal & success criteria<goal>
InputData you're providing<input>
ConstraintsRules & limitations<constraints>
GuardrailsHard limits and safety refusals<guardrails>
ExamplesFew-shot demonstrations<examples><example>
Chain of ThoughtStep-by-step reasoning<thinking>
Output FormatExpected output structure<output_format>
Response StyleVerbosity, tone, prose, markdown (structured UI)<format_instructions>
LanguageResponse language<language>

Blocks are automatically ordered following Anthropic's recommended prompt structure.


πŸš€ Try It Now

flompt.dev, free and open-source, no account needed.


🧩 Browser Extension

Use flompt directly inside ChatGPT, Claude, and Gemini without leaving your tab.

  • Injects an Enhance button into the AI chat input
  • Bidirectional sync between the sidebar and the chat
  • Works on ChatGPT, Claude, and Gemini

Add to Chrome Add to Firefox


πŸ€– Claude Code Integration (MCP)

flompt exposes its core capabilities as native tools inside Claude Code via the Model Context Protocol (MCP).

Once configured, you can call decompose_prompt, compile_prompt, and list_block_types directly from any Claude Code conversation, no browser, no copy-paste.

Installation

Option 1: CLI (recommended)

claude mcp add --transport http --scope user flompt https://flompt.dev/mcp/

The --scope user flag makes flompt available in all your Claude Code projects.

Option 2: ~/.claude.json

{
  "mcpServers": {
    "flompt": {
      "type": "http",
      "url": "https://flompt.dev/mcp/"
    }
  }
}

Available Tools

Once connected, 3 tools are available in Claude Code:

decompose_prompt(prompt: str)

Breaks down a raw prompt into structured blocks (role, objective, context, constraints, etc.).

  • Uses Claude or GPT on the server if an API key is configured
  • Falls back to keyword-based heuristic analysis otherwise
  • Returns a list of typed blocks + full JSON to pass to compile_prompt
Input:  "You are a Python expert. Write a function that parses JSON and handles errors."
Output: βœ… 3 blocks extracted:
          [ROLE] You are a Python expert.
          [OBJECTIVE] Write a function that parses JSON…
          [CONSTRAINTS] handles errors
        πŸ“‹ Full blocks JSON: [{"id": "...", "type": "role", ...}, ...]

compile_prompt(blocks_json: str)

Compiles a list of blocks into a Claude-optimized XML prompt.

  • Takes the JSON from decompose_prompt (or manually crafted blocks)
  • Reorders blocks following Anthropic's recommended structure
  • Returns the final XML prompt with an estimated token count
Input:  [{"type": "role", "content": "You are a Python expert", ...}, ...]
Output: βœ… Prompt compiled (142 estimated tokens):

        <role>You are a Python expert.</role>
        <objective>Write a function that parses JSON and handles errors.</objective>

list_block_types()

Lists all 16 available block types with descriptions and the recommended canonical ordering. Useful when manually crafting blocks.

Typical Workflow

1. decompose_prompt("your raw prompt here")
   β†’ get structured blocks as JSON

2. (optionally edit the JSON to add/remove/modify blocks)

3. compile_prompt("<json from step 1>")
   β†’ get Claude-optimized XML prompt, ready to use

Technical Details

PropertyValue
TransportStreamable HTTP (POST)
Endpointhttps://flompt.dev/mcp/
SessionStateless (each call is independent)
AuthNone required
DNS rebinding protectionEnabled (flompt.dev explicitly allowed)

πŸ› οΈ Self-Hosting (Local Dev)

Requirements

  • Python 3.12+
  • Node.js 18+
  • An Anthropic or OpenAI API key (optional, heuristic fallback works without one)

Setup

Backend:

cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # add your API key
uvicorn app.main:app --reload --port 8000

App (Frontend):

cd app
cp .env.example .env   # optional: add PostHog key
npm install
npm run dev

Blog:

cd blog
npm install
npm run dev   # available at http://localhost:3000/blog
ServiceURL
Apphttp://localhost:5173
Backend APIhttp://localhost:8000
API Docs (Swagger)http://localhost:8000/docs
MCP endpointhttp://localhost:8000/mcp/

βš™οΈ AI Configuration

flompt supports multiple AI providers. Copy backend/.env.example to backend/.env:

# Anthropic (recommended)
ANTHROPIC_API_KEY=sk-ant-...
AI_PROVIDER=anthropic
AI_MODEL=claude-3-5-haiku-20241022

# or OpenAI
OPENAI_API_KEY=sk-...
AI_PROVIDER=openai
AI_MODEL=gpt-4o-mini

Without an API key, flompt uses a keyword-based heuristic decomposer and still compiles structured XML.


🚒 Production Deployment

This section documents the exact production setup running at flompt.dev. Everything lives in /projects/flompt.

Architecture

Internet
   β”‚
   β–Ό
Caddy (auto-TLS, reverse proxy)    ← port 443/80
   β”œβ”€β”€ /app*         β†’ Vite SPA static files (app/dist/)
   β”œβ”€β”€ /blog*        β†’ Next.js static export (blog/out/)
   β”œβ”€β”€ /api/*        β†’ FastAPI backend (localhost:8000)
   β”œβ”€β”€ /mcp/*        β†’ FastAPI MCP server (localhost:8000, no buffering)
   β”œβ”€β”€ /docs*        β†’ Reverse proxy to GitBook
   └── /             β†’ Static landing page (landing/)
         ↓
   FastAPI (uvicorn, port 8000)
         ↓
   Anthropic / OpenAI API

Both Caddy and the FastAPI backend are managed by supervisord, itself watched by a keepalive loop.


1. Prerequisites

# Python 3.12+ with pip
python --version

# Node.js 18+
node --version

# Caddy binary placed at /projects/flompt/caddy
# (not committed to git, download from https://caddyserver.com/download)
curl -o caddy "https://caddyserver.com/api/download?os=linux&arch=amd64"
chmod +x caddy

# supervisor installed in a Python virtualenv
pip install supervisor

2. Environment Variables

Backend (backend/.env):

ANTHROPIC_API_KEY=sk-ant-...       # or OPENAI_API_KEY
AI_PROVIDER=anthropic              # or: openai
AI_MODEL=claude-3-5-haiku-20241022 # model to use for decompose/compile

App frontend (app/.env):

VITE_POSTHOG_KEY=phc_...           # optional analytics
VITE_POSTHOG_HOST=https://eu.i.posthog.com

Blog (blog/.env.local):

NEXT_PUBLIC_POSTHOG_KEY=phc_...
NEXT_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com

3. Build

All assets must be built before starting services. Use the deploy script or manually:

Full deploy (build + restart + health check):

cd /projects/flompt
./deploy.sh

Build only (no service restart):

./deploy.sh --build-only

Restart only (no rebuild):

./deploy.sh --restart-only

Manual build steps:

# 1. Vite SPA β†’ app/dist/
cd /projects/flompt/app
npm run build
# Output: app/dist/ (pre-compressed with gzip, served by Caddy)

# 2. Next.js blog β†’ blog/out/
cd /projects/flompt/blog
rm -rf .next out   # clear cache to avoid stale builds
npm run build
# Output: blog/out/ (full static export, no Node server needed)

4. Process Management

Production processes are managed by supervisord (supervisord.conf):

ProgramCommandPortLog
flompt-backenduvicorn app.main:app --host 0.0.0.0 --port 80008000/tmp/flompt-backend.log
flompt-caddycaddy run --config /projects/flompt/Caddyfile443/80/tmp/flompt-caddy.log

Both programs have autorestart=true and startretries=5, they automatically restart on crash.

Start supervisord (first boot or after a full restart):

supervisord -c /projects/flompt/supervisord.conf

Common supervisorctl commands:

# Check status of all programs
supervisorctl -c /projects/flompt/supervisord.conf status

# Restart backend only (e.g. after a code change)
supervisorctl -c /projects/flompt/supervisord.conf restart flompt-backend

# Restart Caddy only (e.g. after a Caddyfile change)
supervisorctl -c /projects/flompt/supervisord.conf restart flompt-caddy

# Restart everything
supervisorctl -c /projects/flompt/supervisord.conf restart all

# Stop everything
supervisorctl -c /projects/flompt/supervisord.conf stop all

# Read real-time logs
tail -f /tmp/flompt-backend.log
tail -f /tmp/flompt-caddy.log
tail -f /tmp/flompt-supervisord.log

5. Keepalive Watchdog

keepalive.sh is an infinite bash loop (running as a background process) that:

  1. Checks every 30 seconds whether supervisord is alive
  2. If supervisord is down, kills any zombie process occupying port 8000 (via inode lookup in /proc/net/tcp)
  3. Restarts supervisord
  4. Logs all events to /tmp/flompt-keepalive.log

Start keepalive (should be running at all times):

nohup /projects/flompt/keepalive.sh >> /tmp/flompt-keepalive.log 2>&1 &
echo $!   # note the PID

Check if keepalive is running:

ps aux | grep keepalive.sh
tail -f /tmp/flompt-keepalive.log

Note: keepalive.sh uses the same Python virtualenv path as supervisord. If you reinstall supervisor in a different venv, update SUPERVISORD and SUPERVISORCTL paths at the top of keepalive.sh.


6. Caddy Configuration

Caddyfile handles all routing for flompt.dev. Key rules (in priority order):

/blog*      β†’ Static Next.js export at blog/out/
/api/*      β†’ FastAPI backend at localhost:8000
/health     β†’ FastAPI health check
/mcp/*      β†’ FastAPI MCP server (flush_interval -1 for streaming)
/mcp        β†’ 308 redirect to /mcp/ (avoids upstream 307 issues)
/docs*      β†’ Reverse proxy to GitBook (external)
/app*       β†’ Vite SPA at app/dist/ (gzip precompressed)
/           β†’ Static landing page at landing/

Reload Caddy after a Caddyfile change:

supervisorctl -c /projects/flompt/supervisord.conf restart flompt-caddy
# or directly:
/projects/flompt/caddy reload --config /projects/flompt/Caddyfile

Caddy auto-manages TLS certificates via Let's Encrypt, no manual SSL setup needed.


7. Health Checks

The deploy script runs these checks automatically. You can run them manually:

# Backend API
curl -s https://flompt.dev/health
# β†’ {"status":"ok","service":"flompt-api"}

# Landing page
curl -s -o /dev/null -w "%{http_code}" https://flompt.dev/
# β†’ 200

# Vite SPA
curl -s -o /dev/null -w "%{http_code}" https://flompt.dev/app
# β†’ 200

# Blog
curl -s -o /dev/null -w "%{http_code}" https://flompt.dev/blog/en
# β†’ 200

# MCP endpoint (requires Accept header)
curl -s -o /dev/null -w "%{http_code}" \
  -X POST https://flompt.dev/mcp/ \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# β†’ 200

8. Updating the App

After a backend code change:

cd /projects/flompt
git pull
supervisorctl -c supervisord.conf restart flompt-backend

After a frontend change:

cd /projects/flompt
git pull
cd app && npm run build
# No service restart needed, Caddy serves static files directly

After a blog change:

cd /projects/flompt
git pull
cd blog && rm -rf .next out && npm run build
# No service restart needed

After a Caddyfile change:

supervisorctl -c /projects/flompt/supervisord.conf restart flompt-caddy

Full redeploy from scratch:

cd /projects/flompt && ./deploy.sh

9. Log Files Reference

FileContent
/tmp/flompt-backend.logFastAPI/uvicorn stdout + stderr
/tmp/flompt-caddy.logCaddy access + error logs
/tmp/flompt-supervisord.logsupervisord daemon logs
/tmp/flompt-keepalive.logkeepalive watchdog events

πŸ—οΈ Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, React Flow v11, Zustand, Vite
BackendFastAPI, Python 3.12, Uvicorn
MCP ServerFastMCP (streamable HTTP transport)
AIAnthropic Claude / OpenAI GPT (pluggable)
Reverse ProxyCaddy (auto-TLS via Let's Encrypt)
Process ManagerSupervisord + keepalive watchdog
BlogNext.js 15 (static export), Tailwind CSS
ExtensionChrome & Firefox MV3 (content script + sidebar)
i18n10 languages: EN FR ES DE PT JA TR ZH AR RU

🌍 Features

  • 🎨 Visual flowchart editor with drag-and-drop blocks (React Flow)
  • πŸ“‹ Dual-view editor: toggle between canvas and card list at any time
  • πŸ‘οΈ Hide/show any block; hidden blocks are excluded from the assembled prompt
  • πŸ“‘ Duplicate any block in one click from the List View
  • πŸ€– AI-powered decomposition: paste a prompt, get structured blocks
  • πŸ”„ Async job queue for non-blocking decomposition with live progress
  • 🦾 XML output structured following Anthropic best practices
  • 🧩 Browser extension for ChatGPT, Claude, and Gemini (Chrome + Firefox)
  • πŸ”Œ Claude Code MCP: native tool integration via Model Context Protocol
  • πŸ“± Responsive with full touch support
  • πŸŒ™ Dark theme
  • 🌐 10 languages: EN, FR, ES, DE, PT, JA, TR, ZH, AR, RU, each with a dedicated indexed page for SEO
  • πŸ’Ύ Auto-save via local Zustand persistence
  • ⌨️ Keyboard shortcuts
  • πŸ“‹ Export as TXT or JSON
  • πŸ”“ MIT licensed, self-hostable

🀝 Contributing

Contributions are welcome: bug reports, features, translations, and docs!

Read CONTRIBUTING.md to get started. The full changelog is in CHANGELOG.md.


πŸ“„ License

MIT, built by Nyrok


If flompt saves you time, a ⭐ on GitHub helps a lot.
GitHub Stars

Files in the repo

Repository payloadβ€’23 top-level entries
  • .github
  • app
  • backend
  • blog
  • docs
  • extension
  • landing
  • .gitattributes
  • .gitignore
  • Caddyfile
  • CHANGELOG.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • deploy.sh
  • docker-compose.yml
  • Dockerfile
  • glama.json
  • keepalive.sh
  • LICENSE
  • onboarding-preview.html
  • README.md
  • supervisord.conf
  • watchdog.sh

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

JuliusBrussee/
caveman

πŸͺ¨ why use many token when few token do trick β€” Claude Code skill that cuts 65% of tokens by talking like caveman

105k
1 add
MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k
stablyai/
orca

Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

66k

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

132k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k