DesysFlow OSS is a local-first, agentic system design platform that converts your codebase and product goals into versioned architecture artifacts. It provides a CLI for fast iteration, a local API backend, and a lightweight UI for guided design and refinement.
It includes:
- A simple CLI (
desysflow) for local generation and refinement - A local FastAPI backend
- A lightweight React UI for prompting and artifact inspection
- Local-first workflow with repo-native outputs
- Versioned design artifacts (
v1,v2, ...) - Structured outputs (HLD, LLD, technical report, non-technical brief, diagrams, diffs)
- Provider-flexible LLM support (
ollama,openai,anthropic,groq) - Optional secret-leak guardrail on LLM output
- Configurable via
desysflow.config.yml(roles, languages, providers, defaults)
- Python 3.11+
uv- Node.js + npm
curl -fsSL https://raw.githubusercontent.com/kmeanskaran/desysflow-oss/main/scripts/install.sh | bash
source ~/.bashrc # or: source ~/.zshrc
letsvibedesignThe installer is intended for macOS, Linux, and WSL2. It clones the repo into ~/.letsvibedesign/desysflow-oss, bootstraps the local environment, and installs a global letsvibedesign launcher into ~/.local/bin.
LETSVIBEDESIGN_LOCAL_REPO="$PWD" LETSVIBEDESIGN_OFFLINE=1 ./scripts/install.sh
source ~/.bashrc # or: source ~/.zshrc
letsvibedesignuv sync
uv run desysflow --helpEquivalent module form:
python -m desysflow_cli --helppip install -e .
desysflow --helpletsvibedesign: convenience launcher that bootstraps the repo, then opens the interactive CLI loopletsvibedesign studio: convenience launcher that starts the API and UI togetherdesysflow: the actual CLI console script defined inpyproject.tomlpython -m desysflow_cli: module-based equivalent ofdesysflow
letsvibedesign
letsvibedesign studio
uv run desysflow design --source .
python -m desysflow_cli design --source .Run the basic guided CLI:
letsvibedesignletsvibedesign stays open after each generation and shows a letsdesign> prompt.
Interactive prompt commands:
Enterorrun: run again with the current saved stackdesign: asks for a prompt, then continues with the current saved stackdesign <prompt>: run directly with that promptrestart: clear saved selections and start from scratch- Any plain text: treated as a prompt and runs design
bye: exit the CLI loop
Check the available commands:
desysflow --help
desysflow design --help
desysflow redesign --helpRun from this repo without installing a global command:
uv run desysflow design --source .
python -m desysflow_cli design --source .Run directly with flags:
desysflow design --source . --out ./desysflow --project my-project
desysflow redesign --source . --out ./desysflow --project my-project --focus "improve scaling"Run without prompts:
desysflow design \
--source . \
--out ./desysflow \
--project my-project \
--model-provider ollama \
--model gpt-oss:20b-cloud \
--language python \
--cloud local \
--style balanced \
--no-interactiveInteractive defaults:
- Empty repositories immediately ask what you want to design.
- Non-empty repositories detect the dominant codebase language and use it as the default language selection.
- Non-empty repositories let you add an optional prompt, or press Enter to continue vibe designing from the current codebase or latest baseline.
- Generated artifacts and local session data are stored in
./desysflowby default.
Start API + UI together:
letsvibedesign studioOpen:
- UI:
http://localhost:5173 - API docs:
http://localhost:8000/docs
In the UI:
- Open model settings from the gear icon.
- Choose
ollama,openai,anthropic, orgroq. - Enter the model name and API key when needed.
- Click
Check status. - Enter a design prompt, then use follow-up prompts to refine the result.
- CLI:
- interactive:
desysflow designthen follow prompts for provider/model/API key - non-interactive:
desysflow design --model-provider <provider> --model <name> [--api-key <key>]
- interactive:
- UI:
- open model settings (gear icon), choose provider/model, add API key for OpenAI/Anthropic/Groq
- click
Check statusto run live connectivity/auth validation
Provider checks:
- OpenAI/Anthropic/Groq: verifies API key + endpoint reachability (
/modelsprobe) - Ollama: verifies local endpoint reachability and that selected local model exists (
/api/tags)
Primary LangGraph pipeline (graph/workflow.py):
extract_requirementsselect_templategenerate_architectureinject_edge_casescritic_agentrevision_agentdiagram_generatordiagram_quality_agentreport_generatorcloud_infra_agent
API also exposes additional loops on top of this base flow:
- async operation progress (
/design/async,/design/followup/async) - cloud redesign (
/design/cloud-redesign: provider-specific diagram/report regeneration)
See Agentic Architecture for more detail.
DesysFlow writes versioned artifacts to ./desysflow/<project>/vN/ by default, including:
HLD.mdLLD.mdTECHNICAL_REPORT.mdNON_TECHNICAL_DOC.mddiagram.mmdSUMMARY.mdCHANGELOG.mdDIFF.mdMETADATA.json
Edit desysflow.config.yml to customize roles, languages, cloud targets, providers, and defaults. The CLI and UI both read this file at startup.
For local Ollama runs, OLLAMA_NUM_PREDICT controls the maximum generated tokens. Lower it if generation looks slow on small local models.
Set LLM_GUARDRAIL=true in .env.example to enable secret-leak detection on LLM output. The guardrail scans for API keys, tokens, database connection strings, and other credential patterns.
See CONTRIBUTING.md.
- X: @kmeanskaran
- Website: kmeanskaran.com
See CODE_OF_CONDUCT.md.
This project is licensed under the MIT License. See LICENSE.