Sluurp it up and ship it.
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/sluurp/master/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
Say once who may see and change what. Every request follows it; no check to forget.
Pages that load fast
Components or Markdown, drawn on the server: quick to show, easy to find, alive where it counts.
Call the server like a function
Write a function once and call it from the page. No API to design, no requests to write.
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.