mesh-avatar-studio
Turn one illustration into an animated 2D mesh avatar with a coding agent and a local editor
Free, private photo editor. No ads, no account, nothing uploaded.
Translation pending
DesignJavaScript · HTMLGitHub @apopov04OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Quick photo edits in your browser: remove backgrounds, crop, resize, blur out, add text. No ads, no account, nothing uploaded.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Quick photo edits in your browser. No ads, no account, nothing uploaded.
Sometimes you just need to cut out a background, crop a photo square or blur a name in a screenshot. You don't want to install Photoshop, start a trial, make an account or put up with an ad-covered "free" site that uploads your photo somewhere.
Photocairn is a fast, focused editor for exactly those jobs. Everything runs on your device. The AI background removal runs in your browser through WebAssembly. The page's security policy doesn't allow it to connect to any other server, so your photos stay with you.Read the full README ↗Sometimes you just need to cut out a background, crop a photo square or blur a name in a screenshot. You don't want to install Photoshop, start a trial, make an account or put up with an ad-covered "free" site that uploads your photo somewhere.
Photocairn is a fast, focused editor for exactly those jobs. Everything runs on your device. The AI background removal runs in your browser through WebAssembly. The page's security policy doesn't allow it to connect to any other server, so your photos stay with you.
The layout will feel familiar if you've used Photoshop:
On phones, the tools sit along the bottom and the options, history and layers share a tabbed sheet.
Related tools (brushes, selections, fills, shapes, blur out) share one toolbar button, marked with a small corner triangle. The button shows the tool in use; right-click (or long-press) it to pick another, or press its key again to cycle. The options panel then shows just that tool's settings.
Files
Metadata remover (File › Metadata, or from the start screen without opening the editor)
Edit
Paint
Layers
Photo
Everywhere
connect-src 'self') means the page can't send data to any other server, even by accident.Tools
V: MoveM: Select tools (press again, or Shift+M, for Ellipse, Lasso, Polygon, Magic wand)W: Magic wandCtrl+Alt+T: TransformC: CropB: Brush tools (press again, or Shift+B, for Pencil, Pen, Highlighter)N: PencilE: EraserG: Fill tools (press again, or Shift+G, to switch between Paint bucket and Gradient)K: Paint bucketI: EyedropperU: Shapes (press again, or Shift+U, for Line, Arrow, Rectangle, Ellipse)T: TextL: LayersColors and brushes
X: swap colorsD: reset colors to black and white[ / ]: brush sizeSelection
Ctrl+A: select allCtrl+D: deselectCtrl+Shift+I: invert selectionCtrl+J: copy the selection to a new layerDelete: delete the selected pixelsFile and history
Ctrl+O: openCtrl+S: saveCtrl+Z: undoCtrl+Shift+Z or Ctrl+Y: redoView
0: fit to screen1: 100%+ / −: zoomSpace: pan\: compare with the originalIn tools
Enter: applyEsc: cancel, or deselectAI agents that drive a browser (ChatGPT agent, Claude in Chrome, Playwright scripts) can edit images through window.photocairn, a small scripting API. Every method is async, takes JSON-friendly options in image pixels, and goes through the same code as the UI, so edits respect layers, the selection and locks, show up in History and can be undone.
await photocairn.help(); // every method, its parameters, ranges and defaults
await photocairn.open(dataUrl);
await photocairn.removeBackground({ model: "fast" });
await photocairn.redact({ x: 40, y: 300, width: 420, height: 60, mode: "box" });
const png = await photocairn.export({ format: "png" });
The editing still runs on your device, but whatever AI is driving the browser can see the image.
The API is described in js/api-spec.js, which also generates llms-full.txt and developers/index.html (from scripts/docs-guide.md): run npm run docs after changing either.
There's no build step. It's plain HTML, CSS and JavaScript modules.
git clone https://github.com/apopov04/photocairn.git && cd photocairn
node tests/serve.mjs # http://localhost:8080
Any static host works. To enable multi-threaded WebAssembly (faster background removal), serve it with the cross-origin isolation headers in _headers, which Cloudflare and Netlify pick up automatically.
npm test # unit tests: image operations, layers, text, history (Node, no dependencies)
npm i && CHROME=/path/to/chrome npm run test:e2e # browser end-to-end scenarios
js/ops.js: pure pixel operations (adjustments, filters, blur, sharpen, pixelate, mask handling). They don't touch the DOM, so they're unit-tested in Node.js/editor.js: the document model (layers plus memory-capped undo history) and the zoomable viewport. Layers are immutable snapshots, so undo stores references instead of pixel copies.js/api.js: window.photocairn, the scripting API for AI agents and automation. js/api-spec.js describes its methods and checks arguments; scripts/api-docs.mjs turns it into the docs.js/history.js: the History panel and the resizable right sidebar. History labels come from doc.label("…") at the commit site, or else the active tool's name.js/tools.js: the crop, resize, adjust, filters, text, layers and other panels. Each tool is a factory that builds its panel and handles pointer input in image coordinates.js/text.js: text layers. A text layer keeps its text, font, size, colors and box in layer.meta.text and is re-rendered from them, so it stays editable (word wrapping is unit-tested in Node).js/paint.js: the brush engine (stamped strokes with hardness and per-stroke opacity) and its variants (brush, pencil, pen, highlighter), eraser, shapes, paint bucket, gradient, eyedropper, selection, move and free transform. All pixel edits go through one function, which respects the selection and layer locks.js/menus.js: the menu bar (the same menus open from a single button on phones).js/metadata.js: dependency-free JPEG/PNG/WebP metadata parser and scrubber. It rebuilds EXIF tag by tag, recomputes PNG CRCs, and updates WebP's VP8X flags and RIFF size. js/metadata-ui.js is its dialog.js/psd.js: PSD import/export with ag-psd, loaded only when needed.js/bg-worker.js: background removal in a Web Worker. It runs U²-Net models with ONNX Runtime Web, and the mask is upscaled and applied on a canvas.sw.js: service worker for offline use.Third-party components and their licenses are listed in THIRD_PARTY.md.