Quick Start
Get up and running with RaisinDB in about ten minutes. You will install the CLI, start a local server, scaffold a project with AI agent support, and deploy your first content package.
Prerequisites
- Node.js (v18 or later) and npm
- Optionally, an AI coding agent (Claude Code, Cursor, or any agent that supports Agent Skills)
Step 1: Install the CLI and start the server
npm install -g @raisindb/cli
raisindb server start
The CLI downloads the server binary for your platform into ~/.raisindb/bin/, verifies its checksum, and starts it in development mode. On the first start it generates an admin password and prints it once:
RaisinDB v0.x Development Mode
HTTP http://localhost:8080
PgSQL postgresql://localhost:5432
Admin http://localhost:8080/admin
Username admin
Password <generated>
! Save this password — it won't be shown again.
Data is stored in ./.data/rocksdb under the directory you ran the command in. Useful follow-up commands: raisindb server status, raisindb server logs, raisindb server stop.
raisindb server start also enables the PostgreSQL wire listener on port 5432 (--pgwire-port to change it). Connect with psql -h localhost -p 5432 -U default -d <repo>, using an API key as the password. See Connect via PostgreSQL.
Download binaries from GitHub Releases or build from source.
Step 2: Log in and create a repository
Authenticate the CLI. With no options it opens a browser flow against http://localhost:8080; in a terminal-only environment pass the credentials directly:
raisindb login
# or, non-interactive:
raisindb login --username admin --password '<generated password>'
The token is saved to .raisinrc, so later commands (deploy, sync, repo) use it automatically.
Then create a repository. Its name is what your frontend and your SQL connections will refer to:
raisindb repo create demo
You can also do this from the admin console at http://localhost:8080/admin or with the HTTP API (POST /api/repositories with {"repo_id":"demo"}).
raisindb login --server https://my-raisindb.example.com
Step 3: Scaffold your project
raisindb package init my-app
This does three things:
- Scaffolds the project structure (below).
- Runs
npm install, which installs@raisindb/functions-types(TypeScript definitions for the server-side function runtime). - Installs AI agent skills with
npx skills add maravilla-labs/raisindb/packages/raisindb-skills.
Pass --skip-install to do only the first step.
The resulting project:
my-app/
├── package.json # npm scripts + @raisindb/functions-types
├── AGENT.md, CLAUDE.md, GEMINI.md # instructions for AI agents
├── README.md
├── package/ # RaisinDB content package (YAML)
│ ├── manifest.yaml
│ ├── nodetypes/
│ ├── mixins/
│ ├── archetypes/
│ ├── elementtypes/
│ ├── workspaces/
│ ├── content/
│ └── static/
└── frontend/ # your web app goes here
The installed skills cover content modeling, SQL, SvelteKit and React frontends, auth, access control, translations, file uploads, functions and triggers, workflows, MCP servers and widgets, messaging agents, branch workflows, and virtual-mount adapters. Agents load only the skills relevant to the task at hand.
npx skills add maravilla-labs/raisindb/packages/raisindb-skills
Step 4: Build with your AI agent
Open the project in your AI coding tool and describe what you want. Example prompts:
Define your content model
"Create a blog with Article and Author node types. Articles should have a title, body, excerpt, featured image, and tags. Add a LandingPage archetype with Hero and TextBlock elements."
The agent creates YAML files in package/nodetypes/, package/archetypes/, and package/elementtypes/, then validates them with npm run validate.
Build the frontend
"Create a SvelteKit frontend that renders pages from the content package using path-based routing. The repository name is
demo."
Add authentication
"Add login and register pages with anonymous access for public content."
Deploy your content
npm run deploy # validate + build + upload to the server
# or
npm run sync # watch the package directory and sync changes
Available npm scripts
| Script | Runs |
|---|---|
npm run validate | raisindb package create ./package --check |
npm run build | raisindb package create ./package (builds the .rap file) |
npm run deploy | raisindb package deploy ./package |
npm run sync | raisindb package sync . --watch inside package/ |
npm run dev | npm run dev inside frontend/ |
How it works
RaisinDB apps follow a content-to-component pipeline:
NodeType (schema) → Archetype (page template) → ElementTypes (blocks)
↕ ↕ ↕
YAML in package/ maps to a page component map to element components
- Content lives at paths such as
/homeand/aboutinside a workspace. - The frontend route
/{slug}queriesWHERE path = '/{slug}'in that workspace. - The archetype on the node decides which page component renders it.
- Elements in
properties.content[]map to block components.
Your URL structure is your content structure: add a page to the package and it appears at that URL.
Next steps
- Core Concepts: the data model in depth
- DCAD: Schema-Driven Apps: how your schema defines your app
- SQL Reference: the query language
- JavaScript Client: SDK reference
- Creating Packages: the package format