Here's what each Mosaic feature actually does, in plain language — what it looks like, why it's useful, and what you'd say to Claude to get it. If you're curious about the technical side, each card has an optional "show the technical details" link — but you'll never need to read it to use any of this.
Puts your project on the internet, at its own web address.
Think of this like a Publish button for your whole project. Mosaic looks at the files in your folder, figures out what kind of site it is, and puts it online — usually in under a minute. There's no separate hosting company to sign up for and nothing to configure.
"Deploy this folder to Mosaic and give me the link."
curl -X POST $API/{slug}/git/files/batch \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"files": [{"path": "index.html", "content": "<h1>Hello</h1>"}],
"message": "Initial commit",
"deploy": true
}'
An organized place to keep information your app collects.
| id | created_at | |
|---|---|---|
| a1b2… | alice@example.com | 09:14:02 |
| c3d4… | ravi@example.com | 09:16:47 |
| e5f6… | priya@example.com | 09:21:10 |
A database is just a very organized filing cabinet for your app. Instead of papers, it stores rows of information — like a spreadsheet — that your app can search, sort and update instantly. Every sign-up, order or comment someone submits gets saved here automatically.
"Store the sign-up form entries in the Mosaic database."
curl -X POST $API/{slug}/sql \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"query": "INSERT INTO sign_ups (email) VALUES ($1) RETURNING *",
"params": ["alice@example.com"]
}'
Somewhere safe for uploads — photos, PDFs, documents.
This is like a shared drive built into your project. Anywhere people need to upload something — a photo, a resume, a PDF — it's saved here instead of getting lost in someone's downloads folder or emailed back and forth.
"Save uploaded photos to Mosaic storage."
curl -X POST $API/{slug}/storage/upload \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"filename": "uploads/cat.jpg", "content_type": "image/jpeg"}'
# → {"upload_url": "https://s3.mosaic.site/...", "method": "PUT"}
Lets people create an account and come back to it later.
or email me a magic link ✦
This is the "who are you?" part of an app. It lets someone create an account and log back in later — by typing a password, clicking a link emailed to them, or signing in with a Google or GitHub account they already have. Nobody has to write any of this by hand.
"Add sign-in with Google using Mosaic's built-in sign-in."
curl -X POST $API/{slug}/auth/send-magic-link \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"email": "user@example.com",
"redirect_url": "https://yourapp.mosaic.site/dashboard"}'
# → {"sent": true, "expires_in_minutes": 15}
A nicer, more official-looking web address.
| Domain | Status |
|---|---|
| bake-sale.mosaic.site | fallback |
| bake-sale.cruxosai.com | ● primary |
Every project always gets a free address like bake-sale.mosaic.site. If you want something that looks more official — like bake-sale.cruxosai.com — you attach it to the same project. Nothing moves, nothing gets rebuilt, and the old address keeps working too.
"Attach bake-sale.cruxosai.com to this project."
curl -X POST $API/{slug}/domains \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"domain": "bake-sale.cruxosai.com"}'
curl -X PATCH $API/{slug}/domains/bake-sale.cruxosai.com \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"is_primary": true}'
Your app can send real emails on its own.
Your app can send real emails by itself — a "you're invited", a receipt, a password reset — without anyone opening an email program. It arrives from your own address, like no-reply@yourcompany.com. (Needs a Mosaic Pro plan and a verified sending domain.)
"Email the volunteer sign-up confirmations automatically."
curl -X POST $API/{slug}/mail/send \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"to": ["client@example.com"],
"subject": "You are invited!",
"html": "<p>Saturday at noon.</p>",
"from_addr": "no-reply@mycompany.com"
}'
The page updates itself the moment something changes.
Normally a webpage only updates when you refresh it. This — what Mosaic calls Realtime — makes it update itself the instant something changes, like watching a live scoreboard or seeing a teammate check off a task without anyone hitting refresh. (Needs a Mosaic Pro plan.)
"Make the task list update live for everyone looking at it."
const ws = new WebSocket(
`wss://api.mosaic.site/v1/project/${slug}/realtime?apikey=${KEY}`
);
ws.onopen = () => ws.send(JSON.stringify(
{ type: "subscribe", table: "tasks", event: "*" }
));
ws.onmessage = (e) => console.log(JSON.parse(e.data));
A short-term memory that makes the app feel faster.
session:abcremembered for 58mpage:viewscounting → 1,204queue:jobs3 waitingA short-term memory for the app — much faster than the database, for things that don't need to last forever. Like remembering "this person is already logged in" for the next hour, instead of checking every single time. (Needs a Mosaic Pro plan.)
"Use Mosaic's cache to speed up the homepage."
curl -X POST $API/{slug}/redis/incr \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"key": "page:views", "amount": 1, "ttl": 86400}'
An undo button for your whole project.
Every time you publish an update, Mosaic keeps the old version too — like an Undo button for your entire website. And "archiving" a project is like putting a box in storage instead of the trash: everything is kept exactly as it was, and you can bring it back anytime.
"Roll back to the last version that worked." / "Archive this Mosaic project."
curl -X POST $API/{slug}/deploy/rollback \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"version": 4}'
curl -X POST $API/{slug}/archive -H "X-API-Key: $KEY"
None of this is something you type. You say what you want in plain language —
see "What you'd actually say to Claude" —
and the mosaic-platform skill makes it happen. Want to see these features combined
into real project ideas? Check out Starter Projects.