One file. Three ways to change it.
Lindi opens your shipped frontend on a canvas. Edit it by hand, ask the agent in words, or write every line — the file is the same, and every change leaves as a pull request.
The inspector is real CSS.
Select anything on the canvas and change it — position, auto layout, radius, fill. It is the shipped component you are editing, with its real tokens, so nothing needs translating afterwards.
- Real components, real tokens — the button is the button
- Auto layout that is actual flexbox, not an approximation
- Multiplayer cursors: your team on the same canvas
- Undo is per change, and every change is attributed
Tonight from the ovenAsk for the change. Watch it land.
Tell the agent what should be different. It sees the canvas and the code, edits the same file, and shows you the result on the screen before anything leaves the branch. Keep it or undo it.
- The agent sees the canvas and the code, not a description
- Every change is a diff you can open before you keep it
- It writes the pull request description for you
- Nothing leaves the branch until you say so
The whole codebase, beside the canvas.
Open the front end and the back end in the same window as the canvas. What you type renders on the screen. What you draw on the screen compiles. Push to a branch, and it is a pull request.
- Front end and back end in one window
- Push to a branch, never to a design file
- Every change dated and attributed, in git
- Your editor’s keys, your repo’s rules
Who changed what, when, and why — for design and code alike.
A design file keeps versions. Git keeps commits. Neither knows about the other. In Lindi there is one file, so there is one record, and a design edit sits in it next to the merge that shipped it.
- 12 Aug · 14:02sofiadesignRestyled the dish cell — radius, price weight#412
- 12 Aug · 14:20bellabuildAsked for a tip step; the agent added TipSelector#413
- 12 Aug · 16:05danareviewReviewed #412 and #413 — two comments, both resolved—
- 13 Aug · 09:41marcocodeMerged both into main; the canvas shows ita41f2c
It edits your product. It does not own it.
- Your repo
A branch and a pull request. Main is yours.
Lindi works on a branch of your repository and opens a pull request against it. It does not push to main, and it does not keep a copy of your product somewhere else.
- Your review
Nothing lands without a reviewer.
A change from the canvas arrives the way a change from a colleague does — a diff, a description, a request for review. Your rules for merging are the only rules.
- Your design system
Components and tokens come from the code.
There is no copy of your design system to keep in sync. The components on the canvas are the components in the repo, and a token change is a token change.
The whole design tool, on the real product.
Nothing here is a wish list. Each of these is a surface in the canvas today, described from its own code.
- Variables & tokensColours, numbers and strings as variables, with modes. The tokens the code reads.
- Branches & review requestsBranch the file, work, ask for review, merge back — style and variable conflicts shown.
- Version historyEvery version of the file, in the right pane, restorable.
- CommentsThreads on the canvas, assignable, resolved where they were left.
- MultiplayerLive cursors, presence, and follow mode for reviewing together.
- Prototyping & presentationWire flows between screens, present full-screen, tap through on a device.
- Slides ModeA deck surface on the same engine — presentations from the same file.
- Team librariesShared components and styles across files, with per-team defaults.
- Check designsA batch quality scan — contrast and more — with jump-to-layer on every finding.
- Find similarSearch your files by image or text for the design you meant.
- Image AIGenerate, adjust and edit images on the canvas, with a before-and-after.
- VectoriseTurn a raster into editable vectors, in place.
- Rename layersEvery layer named sensibly in one pass.
- Ready for devMark frames ready; a handoff index across the whole file.
- ExportPNG and PDF, assets at every scale, and a local copy of the file.
- Command paletteEvery action, keyboard first, with the shortcuts listed.
Generation you can read before you trust it.
- The planApp → flows → screens → purpose, as a tree you can read before anything is generated.
- Screens & flowsEvery generated screen with its flow, its status, and navigation checks.
- Device simulatorThe app on a phone, tap-through, as it will run.
- Generation statusWhat generated, what was skipped, and exactly why.
- LanguagesSwitch between the languages the app already has; translate into a new one in one call.
- Send to DeveloperOne click hands the generated app to Code mode.
An engineer’s desk, not a code viewer.
- TerminalA real shell on your machine through the local bridge — or a command console over the generated files.
- BackendEntities and endpoints inferred from the app and emitted as live handlers.
- Route mapEvery route the app has, and what serves it.
- AI reviewFindings you can apply or revert, with static checks alongside.
- LogsCodegen, backend and deploy, in one panel.
- DownloadThe runnable bundle, or written straight to a folder on disk.
Open it on your own frontend.
Lindi is in early beta. Tell us about your team and we will email you within 48 hours to let you know if you are in.