A rule-based planner and tested templates build the project on your device. An on-device model is optional, never required, and never a cloud service.
Pocket LedgerExpense trackerExample — not saved until you change it
What the planner understood
Confidence100%
expense→meansExpense tracker template
ledger→meansExpense tracker template
Pocket Ledger→meansapp name
green→meansprimary colour
Feasibility, templates and prompt history
Feasibility
NATIVECharts
NATIVEExport CSV / JSON
NATIVELight and dark theme
NATIVEResponsive layout
NATIVESave data on the device
Start from a template
Picking a template keeps the name, colours and fields from your description.
Prompt history
Off by default. Prompts are only kept in this browser if you turn this on.
index.html
Sandboxed · network off · fits 772px
App type
Expense tracker — Income and spending by category with a monthly chart.
Pages and sections
index.html
⋮⋮App (Expense tracker)
Drag sections to reorder, or use the arrow buttons. Navigation links are generated for every page.
Wireframe
HomeHeader + navAppFooter
Component library (8)
Native <dialog> with focus return, Escape to close and a labelled title.
<button class="btn btn-primary" type="button" data-open-dialog="demo-dialog">Open dialog</button>
<dialog class="c-modal" id="demo-dialog" aria-labelledby="demo-dialog-title">
<h2 id="demo-dialog-title">Delete this project?</h2>
<p>This removes it from this device. You can export a copy first.</p>
<div class="c-modal-actions">
<button class="btn" type="button" data-close-dialog>Cancel</button>
<button class="btn btn-primary" type="button" data-close-dialog value="confirm">Delete</button>
</div>
</dialog>
How it works
Type what you want in plain words. The planner reads your description and shows what it understood: the kind of app, its name, pages, data fields, colours and any feature that a static site cannot honestly deliver, such as logins or payments.
It then composes a multi-file project from audited templates — separate HTML pages, a tokens.css file for the design, shared helpers and one script per feature. The preview runs that code in a sandboxed frame with no network access and no access to this site’s storage.
Change anything: edit files directly, adjust colours and copy in the Design tab, reorder sections in the Plan tab. Every change can be undone, and named versions are kept in your browser’s IndexedDB until you delete them.
What “local-first” means here
Your prompt, your files and your versions stay on this device. The site is static: there are no server routes that receive your work, and the export is generated in the page as a ZIP download.
If you turn on the optional on-device model, the page downloads a pinned runtime and model weights from public CDNs — those requests carry no prompt or project content — and inference runs on your GPU through WebGPU. Without WebGPU, everything else still works.
What it will not do
Generated apps keep data in the visitor’s own browser. They cannot authenticate users, take payments, send email or sync between people, because those need a server. The planner flags these requests up front instead of producing something that looks finished but is not.
Frequently asked questions
Is AIWebApp free?
Yes. The builder, templates, preview and export are free to use without an account. Usage is limited only by your browser’s memory and storage.
Do I need a GPU or an AI model?
No. The default path is a deterministic planner plus templates and works in any modern browser. The on-device model is an optional add-on that needs WebGPU.
Who owns the generated code?
You do. The exported project has no runtime dependencies and no licence restrictions from AIWebApp templates.
Where are my projects saved?
In this browser’s IndexedDB on this device. They are not synced. Export a ZIP to back up or move a project.