No technical background needed

Every project gets a full stack.

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.

🌐
included

Website Hosting

Puts your project on the internet, at its own web address.

bake-sale.cruxosai.com
Deploying… build succeeded
index.html, style.css, app.js
Live in 18s

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.

Try asking Claude

"Deploy this folder to Mosaic and give me the link."

Show the technical details
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
  }'
🗄️
included

Database

An organized place to keep information your app collects.

sign_ups
idemailcreated_at
a1b2…alice@example.com09:14:02
c3d4…ravi@example.com09:16:47
e5f6…priya@example.com09: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.

Try asking Claude

"Store the sign-up form entries in the Mosaic database."

Show the technical details
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"]
  }'
🗂️
included

File Storage

Somewhere safe for uploads — photos, PDFs, documents.

storage / uploads/
📷 cat.jpg
100%
📄 menu.pdf
62%
🖼️ banner.png
30%

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.

Try asking Claude

"Save uploaded photos to Mosaic storage."

Show the technical details
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"}
🔐
included

User Sign-In

Lets people create an account and come back to it later.

yourapp.mosaic.site/sign-in
you@example.com
••••••••
Continue
🔎 Continue with Google
🐙 Continue with GitHub

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.

Try asking Claude

"Add sign-in with Google using Mosaic's built-in sign-in."

Show the technical details
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}
🔗
included

Custom Domains

A nicer, more official-looking web address.

domains
DomainStatus
bake-sale.mosaic.sitefallback
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.

Try asking Claude

"Attach bake-sale.cruxosai.com to this project."

Show the technical details
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}'
✉️
Pro

Automatic Email

Your app can send real emails on its own.

inbox
From: no-reply@mycompany.comnow
Subject: You're invited! 🎉
You're invited to the bake sale this Saturday at noon.

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.)

Try asking Claude

"Email the volunteer sign-up confirmations automatically."

Show the technical details
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"
  }'
📡
Pro

Instant Updates

The page updates itself the moment something changes.

realtime
New task added ✓
updated live

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.)

Try asking Claude

"Make the task list update live for everyone looking at it."

Show the technical details
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));
⚡
Pro

Quick Memory (Cache)

A short-term memory that makes the app feel faster.

cache
session:abcremembered for 58m
page:viewscounting → 1,204
queue:jobs3 waiting

A 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.)

Try asking Claude

"Use Mosaic's cache to speed up the homepage."

Show the technical details
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}'
🕓
included

Version History & Archive

An undo button for your whole project.

deploys
v5 fix: volunteer form running
v4 add: menu section
v3 initial deploy

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.

Try asking Claude

"Roll back to the last version that worked." / "Archive this Mosaic project."

Show the technical details
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.