Sluurp it up and ship it.
Alpha, v0.1.0: things change between versions, and some will break. Try it and tell us what you find.
Almost all you need,
in one binary.
A database, sign-in, fast pages, live updates and AI agents, ready from the first minute. Point it at a folder and ship.
$ curl -fsSL https://raw.githubusercontent.com/SluurpHQ/releases/main/install.sh | shEverything an app needs,
nothing to assemble
What usually takes a stack of services, a week of setup and a pile of glue code is already there when you start.
One binary
Database, sign-in, files, email, jobs and an admin, ready together. Ship by copying one file.
Secure by design
Declare access rules once; every request is checked against them in SQL. No check to forget.
Pages that load fast
Components or Markdown, rendered on the server: fast first paint, good SEO, interactive where it counts.
Call the server like a function
Write a server function and call it from the browser. No endpoints to design, no fetch code.
History
Undo, audit trails and last week's numbers, built in: every change kept, with who and why.
Live by default
Changes show everywhere at once, even offline, with everyone's cursors. Nothing to build.
Agents
A short file that acts when data changes: send the email, write the summary, ask the AI.
Instant feedback
See each change the moment you save. No build tools; any npm package in one command.
Write it once
A page, its data and the server code it needs, side by side in one file. The server part stays on the server, safe from prying eyes; the page just calls it.
How server functions work →export async function addTodo(title: string) {
"use server";
"allow: @request.auth.id != null";
return server.collection("todos").create({ title });
}
export default async function Todos() {
const todos = new Sluurp().collection("todos");
const { items } = await todos.list();
return <ul>{items.map((t) => <li>{t.title}</li>)}</ul>;
}export const watch = { collection: "study_events" };
export async function act({ change, server, ai, agent }) {
const said = change.record;
// not to itself
if (said.author === `agent:${agent}`) return;
const ask = "Ask one short question.";
const q = await ai(ask, said.text, schema);
// with no model set up, a question still
const text = q?.question ?? "What do you know?";
server.collection("study_events").create({ text });
}Built with itself
This site is a Sluurp app too. Its docs are Markdown that update the moment they are saved, and the Todos Collab example runs live on the examples page, everybody's cursor included.
Browse the examples →Start building
One binary, one folder, and the rest of the afternoon.