Your files, your machine.

No accounts, no teams, no quotas, no cloud sync. Every file is plain JSON you can read, diff and back up.

~/.openpaper
~/.openpaper/
├── files/
│   ├── northbound.json
│   └── pricing-page.json
├── assets/        # images, content-addressed
├── config.json    # your keys, owner-only
└── index.json

~/Downloads/OpenPaper/   # exports

One folder. Plain files.

Designs, images and settings live in one folder you control. Move it with OPENPAPER_HOME, and send exports elsewhere with OPENPAPER_EXPORT_DIR.

Localhost only

The server listens on 127.0.0.1 and refuses requests from other web origins.

Keys stay on disk

Stored owner-only in config.json, never sent to the editor.

No account

Nothing to sign up for, nothing to sign in to.

MIT licensed

Read the code, fork it, ship it.

What goes online, and when.

Only the features you use, with the keys you add.

Google Fonts
Fetched for the Google fonts your designs use.
Anthropic
When you use the built-in design agent, with your key.
OpenAI or Gemini
When an agent generates an image, with your key.
Figma
When you paste from Figma with a token set, to fetch the images.

External agents like Claude Code talk to OpenPaper over MCP on your machine. What they send to their own model provider is up to them.

Yours to run.

Free, open source, and local by default.