Aphrodite — Shape before you build. A local-first macOS design workbench: decide the direction with real components and tokens, then hand your coding agent a design contract.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A coding agent can ship a page in half an hour. It can also ship the wrong page in half an hour, and you find out at the end.
Aphrodite is the step before that: a native macOS workbench where you settle the direction of a screen in something real enough to judge — real components, real design tokens, on one open canvas — and then hand a build contract to whoever, or whatever, writes the code.查看完整 README ↗A coding agent can ship a page in half an hour. It can also ship the wrong page in half an hour, and you find out at the end.
Aphrodite is the step before that: a native macOS workbench where you settle the direction of a screen in something real enough to judge — real components, real design tokens, on one open canvas — and then hand a build contract to whoever, or whatever, writes the code.
Nothing about your work leaves your Mac. No account, no cloud, no generation credits, and no plans for any of them. Aphrodite opens a network connection in exactly three places, all of them listed below — none carries your projects, your images or your text.
If you arrived looking for a free, local alternative to Figma for this particular step, that is a fair description of the overlap. Aphrodite is deliberately much narrower: one screen, one direction, one contract.
Two files, both yours to read and edit in any text editor, both off by default.
The archive keeps what you looked at — a picture, an address, a line about why it worked — beside the project or shared across all of them, addressed by content the way the image library is. Promote one and it becomes the reference the analysis runs on.
taste.md is what you keep choosing, written down where you can cross it out. Every line carries a count and the ids it came from: not "you like serif" but "serif headings — 6 of 7 projects (p1, p4, …)". A machine that says the first is telling you who you are; one that says the second is showing its work, and you can disagree with it. Delete a line and it does not come back. Consent starts off, and off means nothing is derived, not merely nothing shown.
Download the DMG for your Mac from the latest release — Apple Silicon (_aarch64.dmg) or Intel (_x64.dmg). Signed with a Developer ID and notarized; macOS 13 or later, and both are built and tested on every release.
First run offers English or Korean, a sample project or a blank one, and a short tour. Updates install themselves from a card in the corner that names the version and what changed — dismissable per version, or switched off entirely.
git clone https://github.com/kwakseongjae/aphrodite-mela.git
cd aphrodite-mela
npm install
npm run desktop # Tauri dev app with HMR
Node 22.12+, the Rust/Tauri toolchain, and the macOS Swift compiler (for the on-device OCR sidecar). Tests, the headless verification harness, signing and the release process are in docs/DEVELOPMENT.md.
A five-minute first project — reference → three directions → pick → edit → approve → export — is walked through in docs/QUICKSTART.md.
Aphrodite ships no model. The agent already on your machine drives it, through an MCP server in this repository:
claude mcp add --transport stdio aphrodite -- node /path/to/aphrodite-mela/mcp/aphrodite-mcp/index.mjs
codex mcp add aphrodite -- node /path/to/aphrodite-mela/mcp/aphrodite-mcp/index.mjs
Reading works whenever the app is open. Writing needs a person to open the door — an agent can ask, and only a human click answers. Approving a direction is refused over every transport by design, because one pure function decides that for all of them: curl meets the same answer as a client that thinks it has approved.
Every tool, every slash command, and what the server will not do: mcp/aphrodite-mcp/README.md. For anything with only a shell there is a loopback channel — docs/AGENT-CHANNEL.md — and the UI contract an agent can rely on is in docs/COMPUTER-USE.md.
What you hand over: PROMPT.md, DESIGN.md, tokens.json, SCENE.json, the rendered HTML with your uploaded images, and the project file. A contract, not a screenshot.
Three connections, and this is all of them:
| When | Where | Why |
|---|---|---|
| The version check | github.com | Runs on its own at most every six hours. Can be switched off. |
| Install in the typeface picker | github.com | The font file you asked for. Enforced at the Rust boundary, not by convention. |
| Look it up on a saved reference | the address you typed | Reads that one page for its title and picture. |
The first happens by itself; the other two only because you pressed something. None of them carries anything about you or your work. Your projects, images and text stay on this Mac — and there is no switch anywhere that would change that.
| Doc | What it is for |
|---|---|
| QUICKSTART.md | Install, first run, a five-minute first project, shortcuts, troubleshooting |
| DEVELOPMENT.md | Toolchain, scripts, tests, headless verification, signing, the release process |
| COMPUTER-USE.md | The contract for agents driving the UI: actions, state, palette, delegation rules |
| AGENT-CHANNEL.md | The loopback channel and window.aphroditeAgent |
| aphrodite-mcp/README.md | The MCP server: connecting it, the tools, and what it will not do |
| BETA-ROADMAP.md | The execution order, and a checkpoint for every signed build so far |
| APHRODITE-BRAND.md | Paper Muse — the studio's own identity, also in-app as the Brand Kit |
Aphrodite is an early beta, built in the open by one person with a fleet of agents. Contributions are not being taken yet — the shape is still moving too fast — but issues and questions are welcome.
MIT — see LICENSE.
The muse is a newspaper-collage treatment of SMK's open plaster cast of the Venus de Milo; the sculpture edition and photography sources, the oh-my-design token observations, and the OpenDesign workflow reference are credited in THIRD_PARTY_NOTICES.md. OpenDesign shaped the agent-native, local-first framing; Aphrodite takes the opposite bet on scope — decide one screen well, then hand it off.