The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Maket listing page.
Create visual documents with your AI assistant. Maket gives Claude, Codex, Gemini, and other MCP clients an HTML/CSS canvas with live preview. Compose a one-off design, bind a template to typed rows for mail merge, or attach validated document-owned state so native HTML controls and agent updates keep a living document current. Export finished output to PDF or hand it off to Gmail as a draft.
60 seconds · charte → library → data → AI composition → every kind of doc → export.
Maket App is the default way to run Maket. It includes the interface, server, runtime, and agent setup — Node.js is not required.
| Platform | Installer |
|---|---|
| macOS Apple Silicon | Maket-macOS-arm64.dmg |
| macOS Intel | Maket-macOS-x64.dmg |
| Windows x64 | Maket-Windows-x64-Setup.exe |
| Linux x64 | Maket-Linux-x64.deb or Maket-Linux-x64.rpm |
Download the newest snapshot
to test Maket App now. Snapshot installers are unsigned, built from main, and
retained for 14 days. Signed macOS and Windows installers, plus Linux packages,
will appear on the latest release
once the desktop release is published.
Open the installer, launch Maket, then follow the first-run agent setup.
Need a headless server, CI installation, or browser-only deployment? Jump to Maket Server via npm.
Your AI assistant is good at writing. But design is about space, hierarchy, and rhythm — and that happens in layout, not prose. Maket adds a real canvas, reusable visual resources, and two distinct data models: collections produce repeated variants from ordered rows, while document state keeps one document synchronized with its own validated, revisioned data.
{{ product_name }}, preview one row or the full series, and render one output page per row.{{ state.* }} values, edit supported fields through bound checkbox, text, select, and button controls, and retain immutable revisions for history and restore.maket, maket-charte, maket-review) that teach the AI assistant how to design, brand, and review documents.Collections turn a page into a reusable template for product labels, event badges, personalized flyers, certificates, catalog pages, or any other repeated document. Each collection owns a JSON Schema and a set of ordered rows. Bind it to a page, place typed values in the HTML with {{ field_name }}, and Maket renders one variant per row.
The Collections workspace and maket_collection tool both support schema changes, row insertion/update/delete, paste-oriented tabular editing, and validation feedback. Maket validates the schema, every row, and every placeholder before rendering. In the preview you can keep the raw template visible, inspect one selected row, or display the complete generated series; print and PDF output expand the bound page across all rows.
Document state is for a single evolving artifact: a checklist, status board, form, or report whose current values belong to that document. maket_state initializes a JSON Schema and data snapshot, validates every update, requires the current revision for mutations, and records each accepted change as a complete immutable revision. Updates re-render the existing pages; they do not create mail-merge variants.
Templates use the supported Mustache subset for display and explicit data-maket-bind attributes for editing. Live mode supports boolean checkboxes, string text inputs, string-enum selects, and buttons that open a terminal-value editor. The same current values render passively in snapshots, print, and PDF output.
Use maket_state action=init to attach the initial schema and data, then get, patch or update, history, revision, and restore to manage it. Portable .maket bundles carry the current schema and data snapshot; importing one starts a fresh local history at revision 1 rather than copying prior revisions. See the document-state HTML binding contract for the exact template, schema, control, and concurrency rules.
Pick the row that matches your machine.
| Platform | Recommended | What you get |
|---|---|---|
| macOS (Apple Silicon or Intel) | Maket App — .dmg | Native window, embedded server, agent setup on first launch |
| Windows x64 | Maket App — .exe installer | Same |
| Linux x64 | Maket App — .deb or .rpm | Native window and embedded server; manual updates |
Download the installer from the latest release, using the filename for your platform:
Maket-macOS-arm64.dmgMaket-macOS-x64.dmgMaket-Windows-x64-Setup.exeMaket-Linux-x64.deb or Maket-Linux-x64.rpmOn macOS, open the .dmg and drag Maket onto Applications. On Windows,
run the installer; it sets up the Start menu entry and a desktop shortcut. The
macOS build is signed and notarised, the Windows build is signed, so neither
should trigger a security warning. On Linux, install the package with your
distribution's package manager; updates are downloaded manually from the latest
release.
Maket App carries its own runtime — you do not need Node.js installed. On
first launch it offers to wire the AI clients it finds on your machine (Claude
Code, Codex, Gemini) to its embedded server, and it can install the bundled
connector for Claude Desktop. The embedded server listens on 127.0.0.1:24843.
If a Maket server is already running from a previous npm install, the application says so and offers to stop it and take over — nothing is killed without your confirmation.
The window is not the only way in: the Maket menu has Ouvrir dans le
navigateur, which serves the same workspace at http://127.0.0.1:24843 in any
browser on that machine. Only that machine — the server never binds a public
interface, so nothing is exposed to your network.
Updates are checked automatically and installed on your confirmation. The Candidate channel in Settings opts you into validation builds.
The explicit --allow-scripts=puppeteer is required by npm 11+'s dependency
script policy. It lets Puppeteer download the exact headless Chromium build
declared by the installed Maket release; no browser version is hard-coded by
Maket itself. Run maket doctor after installation to prove that Chromium can
actually launch, the data directory is writable, and the MCP server responds.
The CLI registers the absolute local Node runtime and installed Maket entry in an mcpServers.maket entry in ~/.claude.json (or runs claude mcp add if the Claude Code CLI is installed), a [mcp_servers.maket] section in ~/.codex/config.toml, or an mcpServers.maket entry in ~/.gemini/settings.json. This standard command-plus-arguments form does not depend on the GUI application's shell PATH. Re-run maket install <client> --apply after moving the Node or Maket installation. Without arguments, the Maket entry runs as a stdio MCP bridge — that's the form Claude Desktop, Codex, Gemini, and other MCP clients invoke automatically.
Daemon controls: maket status, maket logs [--bridge], maket stop, maket restart. Diagnostics: maket doctor, maket config. Upgrade: maket update [--check]. Undo install: maket uninstall <claude|codex|gemini> --apply. Use --scope=project on install claude to write <cwd>/.mcp.json instead of the user-scope file. Global flags --data-dir, --port, --host override the matching MAKET_* env var on any command.
Starts the development server on :24844 and Vite HMR on :5173. The included .mcp.json points an MCP client opened in the project at http://localhost:24844/mcp. Port :24843 is reserved for the installed desktop application.
Maket uses code-moniker for structural rules and code-smell review. The versioned rule source is .code-moniker.toml; run npm run smell:rules to inspect the default rules and npm run smell:review to review the repository. The quality gate runs this review through npm run quality.
Do not add enforceable architecture or boundary rules to AGENTS.md, and do not add ad-hoc checker scripts in parallel with code-moniker. AGENTS.md is operator guidance for agents working in the repository; it is not the project's rule engine. If a boundary rule cannot be expressed with code-moniker yet, document that as a code-moniker evolution instead of creating another local rule system.
Exceptions are local and explicit. If a rule is intentionally not applicable, keep the rule enabled and add a targeted suppression comment in the file being checked, for example // code-moniker: ignore[maket-hygiene-limits-callable-size], with a nearby explanation of the design reason.
Drag dist/maket.mcpb into a desktop MCP host (e.g. Claude Desktop → Settings → Extensions).
Requirements: an MCP-compatible client (Claude Code, Claude Desktop, Codex,
Gemini, or similar). Maket App bundles everything else; the npm, clone and
.mcpb routes additionally need Node.js ≥22.
Maket exposes 14 compound MCP tools. Each one dispatches multiple actions:
| Tool | What it does |
|---|---|
maket_doc | Document lifecycle — new, list, delete, duplicate, rename, meta, export/import |
maket_learn | Agent onboarding — workflow, HTML composition, chartes, collections, review, install |
maket_workspace | Session actions — focus, state, lock, list_messages, ack_messages |
maket_page | Page structure — add, remove, rename, reorder, list |
maket_canvas | Canvas setup — format, orientation, background, per-side print margins |
maket_html | Page content — set (full replace), patch (surgical ops by data-id), get, check (layout overflow / overlap / margin clearance) |
maket_charte | Brand chartes — list, view, set, delete |
maket_collection | Typed data collections — list, view, create, validate/change schema, add/update/delete rows, bind/unbind a page |
maket_state | Document-owned state — initialize, get, update or JSON Patch, validate/change schema, inspect history and revisions, restore |
maket_image | Asset library — list, view, meta, import, delete |
maket_preview | Open the live preview URL or snapshot a page to PNG |
maket_mermaid | Render a Mermaid diagram to SVG and inject it |
maket_pdf | Export a document to PDF via headless Chromium |
maket_gmail | Gmail — connect, search, read, draft |
Layout & print margins guide: docs/layout.md — what the cyan safe-zone in the preview means, margin presets per use case, and prompts to ask the assistant when something looks off.
The MCP server exposes maket_learn, the source of truth for agent onboarding. Skills stay thin: they orient Claude, Codex, or Gemini toward the live tool guidance instead of duplicating product knowledge. Human onboarding is separate and opens from the Help button in the Maket UI.
The plugin/claude/ directory ships three agent skills:
maket — Orientation skill. Starts with maket_learn, then uses the MCP tools for design work.maket-charte — Brand-identity expert. Builds coherent design-token systems from a brief, an industry, or a reference URL.maket-review — QA agent. Audits charte compliance, image paths, layout overflow; fixes issues via maket_html patch.Claude, Codex, and Gemini compatibility files live under plugin/.
By default Maket stores data in ~/.maket/:
documents.db — SQLite (documents, chartes, collections, assets metadata)assets/, documents/, exports/ — user filesOverride with environment variables:
| Variable | Default | Purpose |
|---|---|---|
MAKET_PORT | 24842 (24844 with npm run dev; 3333 with start:isolated) | HTTP server port |
MAKET_DATA_DIR | ~/.maket/ | User data directory |
MAKET_DB | $MAKET_DATA_DIR/documents.db | SQLite path |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | — | Gmail OAuth credentials (optional) |
Maket can turn a composed document into a Gmail draft (with PDF attachments). It only creates drafts — never sends. You review the draft in Gmail and click Send yourself.
Setup takes about 10 minutes: you register your own OAuth Desktop client in Google Cloud Console, enable the Gmail API, add yourself as a test user, and paste the JSON into Maket's setup form. Credentials live under ~/.maket/ with owner-only permissions — nothing in the repo, nothing on any server.
Full walkthrough + troubleshooting: docs/gmail-setup.md.
Quick CLI helpers once set up:
If you run Maket as a long-lived server and want other projects to connect to it:
Creates .mcp.json, .claude/skills/, and a minimal package.json in the target directory. Never overwrites existing files.
packages/server/src/bootstrap.ts.packages/shared — wire-contract types only (WS messages, HTTP envelopes). Domain types stay per-side.See CLAUDE.md for the full architectural guide.
Pre-commit: lefthook runs biome, tsc -b, and vitest — all three must pass.
More scripts: dev:watch (rebuilds client into public/), dev:server, dev:client, build:client, lint:fix, test:coverage. See package.json for the full list.
Contributions are welcome. To get started:
npm install && npm run dev to set up your environment.npm run quality — it must pass.Found a bug, have an idea, or want to discuss something before building it? Open an issue or start a discussion.
See CHANGELOG.md for user-visible changes per release. Draft the next [Unreleased] section with npm run changelog:draft (groups commits since the last tag by conventional-commit type).
Agent journal — Field notes from the agents working on Maket.
MIT — © Alexandre Boyer