Skip to content

v0.1.0 — first public release

Latest

Choose a tag to compare

@Bambushu Bambushu released this 12 May 21:32

First public, MIT-licensed release. Lede ingests an article URL, raw text, or HTML, synthesizes an art-director's image brief via Claude Sonnet 4.6, then bakes that brief in parallel across three frontier cloud image models — Recraft v3, OpenAI gpt-5.4-image-2, and Google Gemini 3 Pro Image. An optional local Apple-Silicon pair (Flux Krea dev + FLUX.2 Klein 9B via mflux) is supported for zero-cost runs.

The IP is the brief synthesizer, not the models — the editorial layer between an article body and an image API.

What's in this release

  • Multi-input bake form — URL, raw HTML, or plain text, auto-detected
  • Streaming UI — NDJSON stream from the bake endpoint shows partial results as each model returns
  • Cloud + local pipelines — cloud trio default; optional mflux pair on Apple Silicon
  • Per-tile redo — one regenerate per model per article, separate rate-limit bucket
  • Persisted showcase — `data/preloaded/*.json` baked into the build for local-dev showcase; visitor bakes ephemeral on Vercel
  • Demo-mode CTA — when `LEDE_CONTACT_URL` is set, the public bake form is swapped for a contact CTA (used on the hosted demo)

Hardening

The whole tree went through a four-model adversarial review (DeepSeek V4-Pro + Gemini 3.1 Pro panel, on top of Claude verification). Every confirmed finding above LOW was acted on before this release:

  • SSRF guard with DNS pinning (undici dispatcher, defeats rebinding TOCTOU)
  • Atomic rate-limit INCR+EXPIRE via Redis EVAL, in-process dev fallback
  • Spoof-resistant client IP (`x-vercel-forwarded-for` preferred)
  • Per-visitor redo quota separate from bake quota
  • Slug + model path-traversal validation
  • Edge-runtime-safe basic-auth middleware (`btoa`, not Node `Buffer`)
  • Cost-cap NaN-bypass closed
  • Prompt-injection-resistant article-body wrapper

Quick start

```sh
git clone https://github.com/Bambushu/lede.git
cd lede
npm install
cp .env.example .env.local

Fill in OPENROUTER_API_KEY + RECRAFT_API_KEY

npm run dev
```

Open http://localhost:3000 and paste any article URL.

Live hosted demo: https://lede-xi.vercel.app