A personal dashboard
you actually own.
Arrange tasks, notes, a calendar, trackers, a reader, and more onto boards that look and work exactly the way you want. Everything lives in your browser — nothing to sign up for, nothing that can lock you out of your own data.
Everything a dashboard should be — nothing it shouldn't.
mosaic is built around a simple idea: your dashboard, your rules. No forced layout, no subscription, no telemetry.
17 widget types
Tasks & habits, notes with custom fonts/color/shadow/outline, calendar, spreadsheet with real formulas, drawboard, a PDF/EPUB reader with its own bookshelf and per-book highlighting, charts, weather, map, clock, timer, water & sleep tracking, agenda, quicklinks, images, and a sandboxed HTML widget for your own pasted pages.
20 themes, endless styling
From Deep Space to Soft Light, every theme ships its own accent colors and background pattern. Style any widget individually on top — color, gradient, border, shadow, glow.
AI assistant, bring your own key
Connect your own Anthropic/OpenAI/Gemini (or any OpenAI-compatible) API key. The assistant can build and edit boards with you, or work scoped to a single widget. Fully optional — your key never touches anything but your chosen provider.
Desktop apps, auto-updating
Native builds for Windows, macOS and Linux via Electron, with automatic background updates — or just use it straight in the browser, no install required.
Actually local-first
Boards, widgets and settings live in IndexedDB on your device. There is no mosaic server — self-host it, run it offline, export a full backup as JSON anytime.
Bilingual, undo everywhere
Full English/German UI switchable anytime, plus proper undo/redo, board templates, folders, and search across every widget on a board.
Mix and match — 17 widgets, one board.
The details you don't expect from a dashboard app.
A few things that only show up once you're actually using it.
A closer look.
Every screenshot on this page comes straight from the running app — no staged mockups.
Download, or just run it in your browser.
Native desktop apps update themselves automatically — install once, forget about it.
Windows — "unknown publisher" warning
SmartScreen will warn about an unsigned build the first time you launch it — that's expected, not a broken download.
Click "More info" → "Run anyway". It won't ask again after that.
macOS — "mosaic is damaged" message
You'll likely see "'mosaic' is damaged and can't be opened. You should move it to the Trash." That's just Gatekeeper's generic message for any app without a paid Developer ID signature — the download isn't actually broken, and right-click → "Open" no longer clears it on current macOS.
Fix it: move mosaic.app to /Applications,
then run this once in Terminal:
xattr -cr /Applications/mosaic.app
Linux — terminal install, no version to edit
Only .deb and .AppImage are
published. Each command looks up the current release itself via the GitHub API — works
the same in bash, zsh, and fish.
curl -s https://api.github.com/repos/Aetherion7/mosaic/releases/latest | grep browser_download_url | grep '\.deb"' | cut -d '"' -f4 \
| xargs -I{} sh -c 'wget "$1" && sudo apt install "./$(basename "$1")"' _ {}
Arch-based — Arch, Manjaro, EndeavourOS, CachyOS
sudo pacman -S --needed fuse2
curl -s https://api.github.com/repos/Aetherion7/mosaic/releases/latest | grep browser_download_url | grep '\.AppImage"' | cut -d '"' -f4 \
| xargs -I{} sh -c 'wget "$1" && chmod +x "$(basename "$1")" && "./$(basename "$1")"' _ {}
Fedora-based — Fedora, Nobara, RHEL
sudo dnf install -y fuse
curl -s https://api.github.com/repos/Aetherion7/mosaic/releases/latest | grep browser_download_url | grep '\.AppImage"' | cut -d '"' -f4 \
| xargs -I{} sh -c 'wget "$1" && chmod +x "$(basename "$1")" && "./$(basename "$1")"' _ {}
Any other distro (openSUSE, NixOS, ...): install a fuse2 /
libfuse2 compat package if it's missing, then run the same
.AppImage command above.
Prefer no install at all?
Clone the repository and run this — mosaic works entirely in the browser, nothing to package or sign:
npm install && npm run dev
Local by default, honest about the exceptions.
No tracking, no analytics, no ads — ever. Here's exactly what stays on your device and what doesn't.
Always local
- Boards, widgets and layout (IndexedDB)
- Settings, themes, your AI API key if you set one (localStorage)
- Files and images you add to widgets
- Works fully offline for all of the above
Only when you use them
- Map & weather widgets — OpenStreetMap / Open-Meteo
- Quicklinks widget — favicon lookup via DuckDuckGo
- AI assistant, if enabled — your chosen provider only
- HTML widget — sandboxed; whatever the pasted page itself does is its own doing
- None of it passes through a mosaic server, because none exists
Free to use. Free to stay that way.
mosaic will always be free for personal use. If it's useful to you, a donation helps — but using it, starring the repo, or reporting a bug is just as appreciated.
Source-available, not commercial. mosaic is published under the PolyForm Noncommercial License 1.0.0 — free to use, modify and self-host for personal, educational or nonprofit purposes; not for resale or commercial hosting.
Read the license

