{"slug": "aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai", "title": "Aceto: Browser overlay and MCP building HTML mockups together with an AI", "summary": "Aceto, a new open-source local dev server, lets users build HTML mockups with an AI agent through a browser overlay and MCP interface, enabling real-time feedback by pointing at elements and modifying them without page reloads. The tool outputs plain HTML with Tailwind CSS, supports inline editing, class manipulation, and component libraries like DaisyUI, aiming to streamline prototyping without a visual editor or build system.", "body_md": "A local dev server with a browser overlay and MCP interface for building HTML mockups together with an AI agent.\n\n**Not a drawing tool, not a visual editor.** Instead, a feedback loop between you and an agent:\n\n- Tell the agent what you want\n- The agent generates/modifies real HTML + Tailwind\n- See the result live in your browser\n**Point at an element** and say \"change this\"- The agent understands which element you mean and modifies it\n\n**Token-efficient:** The agent doesn't need to read and parse the full HTML to understand what you mean. You point at an element in the browser, the agent gets a precise selector. Write tools use the current selection by default — one tool call, no roundtrip.**Real HTML:** No abstraction layer, no component model. The output is a plain HTML file you can read with`cat`\n\nand send by email.**Live feedback loop:** DOM morphing keeps scroll position and selection state. You see changes instantly without page reload flicker.\n\n**User** moves the mouse over any element — a blue outline appears with the element's tag and classes.\n\n**User** clicks an element to select it (pink outline). The breadcrumb bar at the bottom shows the full DOM path. Scroll wheel navigates up/down the tree (parent/child).\n\nThe **agent** highlights elements in cyan to communicate visually — e.g. to ask \"Do you mean this one?\":\n\n```\nhighlight_element(\"section#pricing > div:nth-of-type(2)\", {\n  label: \"Make this card wider?\",\n  style: \"pulse\"\n})\n```\n\nBoth selections (pink = user, cyan = agent) can be visible simultaneously.\n\n**User** double-clicks any editable element to modify it directly in the browser:\n\n**Text elements**(headings, paragraphs, links, etc.) — edit the text content. Enter to save, Escape to cancel.** Inputs**— edit the value attribute. Enter to save, Escape to cancel.** Textareas**— edit the value. Ctrl+Enter to save, Escape to cancel, Enter adds a newline.** Checkboxes / Radio buttons**— double-click to enter edit mode, Space to toggle, Enter to save, Escape to cancel.\n\n**User** presses `c`\n\non a selected element to edit its Tailwind classes inline. Enter to apply, Escape to cancel.\n\n**User** selects a table cell — a floating toolbar appears with +Row, −Row, +Col, −Col controls.\n\nAdd component libraries via the CLI — DaisyUI components work out of the box with Tailwind v4:\n\n```\naceto add daisyui\n```\n\n**Content shortcuts**— type`[]`\n\nor`[x]`\n\nin a cell to insert a checkbox**Slash commands**— type`/list`\n\nin an empty element to open a modal for creating`<ul>`\n\n/`<ol>`\n\nlists. Edit badges appear on existing lists for quick re-editing via double-click.**Element defaults**— define default classes for generated elements via`aceto.defaults.json`\n\n**Paste images**— Ctrl+V with selection inserts instantly; without selection, stages the image for agent-driven placement** Asset picker**— press`a`\n\nto browse and reuse previously pasted images from the assets folder**Yank/Paste**— press`y`\n\nto copy a selected element,`p`\n\nto paste it after another selection**Screenshots**— the agent captures full-page or element-level screenshots via`get_screenshot()`\n\n**Live reload**— DOM morphing keeps scroll position and selection state, no flickering\n\n- No editor — you don't edit anything yourself, you steer the agent\n- No build system — an HTML file you can read with\n`cat`\n\n- No framework — Tailwind v4 via CDN, optionally DaisyUI/Flowbite\n\n| Key | Action |\n|---|---|\n| Click | Select element |\n| Double-click | Inline edit (text, input value, checkbox toggle) |\n| Scroll wheel | Navigate depth (parent/child) |\n| Tab / Shift+Tab | Next/previous cell (during table editing) |\n`c` |\nEdit CSS classes of selected element |\n`y` |\nYank (copy) selected element |\n`p` |\nPaste yanked element after selection |\n`u` |\nUndo |\n`r` |\nRedo |\n`d` |\nInsert empty div after selection |\n`a` |\nOpen asset picker |\n| Del | Delete selected element |\n| Space | Toggle checkbox/radio (during edit mode) |\n| Esc | Close modal / deselect / cancel edit |\n`e` / Alt |\nToggle select/preview mode (clears selection) |\n| Ctrl+V | Paste image |\n\n```\nbun install -g github:alexzeitler/aceto\n```\n\nRequires [Bun](https://bun.sh/) runtime.\n\nOnce `aceto dev`\n\nis running, add it as an MCP server to Claude Code:\n\n```\nclaude mcp add aceto -s user --transport http http://localhost:3000/mcp\n# Create a new project\nmkdir my-mockup && cd my-mockup\naceto init\n\n# Start the dev server\naceto dev\n\n# Export for production\naceto export --production\naceto init                    # Create index.html + CLAUDE.md + aceto.md\naceto init --eject            # Write default instructions into aceto.md\naceto init --preset daisyui   # Create project with DaisyUI v5 pre-installed\naceto dev                     # Start dev server + MCP server\naceto dev about.html          # Start with a specific page\naceto dev --port 3001         # Custom port\naceto new about               # Create a new HTML page\naceto new dashboard/settings -l daisyui  # New page with DaisyUI\naceto add daisyui             # Add DaisyUI v5 to an existing project\naceto export                  # Export HTML with cleanup to dist/\naceto export --production     # Export with Tailwind CSS build\n```\n\nOn `aceto init`\n\n, a minimal `CLAUDE.md`\n\nis created that tells the agent to call `get_instructions()`\n\nvia MCP. This tool returns the project's `aceto.md`\n\nif it has content, or the built-in default instructions.\n\nTo customize the instructions, run `aceto init --eject`\n\nto write the defaults into `aceto.md`\n\n, then edit to your needs.\n\nCreate an `aceto.defaults.json`\n\nin your project root to define default classes for generated elements:\n\n```\n{\n  \"checkbox\": \"h-4 w-4\",\n  \"img\": \"max-w-full h-auto rounded\"\n}\n```\n\n**checkbox**— applied to checkboxes created via`[]`\n\n/`[x]`\n\nshortcuts**img**— applied to images inserted via paste (Ctrl+V)\n\nThe file is hot-reloaded — changes take effect immediately without restarting the server.\n\nBun runtime, parse5 for HTML parsing, css-select for selectors, idiomorph for DOM morphing, MCP SDK for the agent interface. No Express, no React, no build step.", "url": "https://wpnews.pro/news/aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai", "canonical_source": "https://github.com/alexzeitler/aceto", "published_at": "2026-07-21 08:31:55+00:00", "updated_at": "2026-07-21 08:53:31.041123+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "generative-ai"], "entities": ["Aceto", "Tailwind", "DaisyUI", "Flowbite"], "alternates": {"html": "https://wpnews.pro/news/aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai", "markdown": "https://wpnews.pro/news/aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai.md", "text": "https://wpnews.pro/news/aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai.txt", "jsonld": "https://wpnews.pro/news/aceto-browser-overlay-and-mcp-building-html-mockups-together-with-an-ai.jsonld"}}