What is SurrealDB? SurrealDB is a multi-model database built in Rust designed to unify multiple data models into a single engine. SurrealDB combines document, graph, relational, time-series, geospatial and key-value…
What is SurrealDB?
SurrealDB is a multi-model database built in Rust designed to unify multiple data models into a single engine. SurrealDB combines document, graph, relational, time-series, geospatial and key-value data types with powerful search and retrieval functionalities (full-text, vector, hybrid) and real-time and event-driven capabilities, enabling developers to build powerful applications faster and more efficiently. SurrealDB can also be used as a backend-as-a-service given its support for end user authentication. Given that it’s a single Rust binary, SurrealDB can run embedded (in‐app), in the browser (via WebAssembly), in the edge, self-hosted as single backend node, or in a distributed cluster in the cloud.
SurrealDB is used for data-intensive systems such as applications requiring multiple data types, data layer for AI agents, knowledge graphs, real-time apps (e.g. recommendation engines, fraud detection systems) and embedded/edge systems. With SurrealDB, you can simplify your database and API infrastructure, reduce development time, and build secure, performant apps quickly and cost-effectively.
Key features of SurrealDB include:
- Reduces development time: SurrealDB simplifies your database and API stack by removing the need for most server-side components, allowing you to build secure, performant apps faster and cheaper.
- Multi-model: native multi-model support for document, graph, relational (enforcing schema and schemaless), time-series, geospatial and retrieval (full-text, vector, hybrid). This is offered natively through SurrealQL, SurrealDB's SQL-like intuitive query language.
- Real-time collaborative API backend service: SurrealDB functions as both a database and an API backend service, enabling real-time collaboration.
- Support for multiple querying languages: SurrealDB supports SQL querying from client devices, GraphQL, ACID transactions, WebSocket connections, structured and unstructured data, graph querying, full-text and vector indexing, and geospatial querying.
- Granular access control: SurrealDB provides row-level permissions-based access control, giving you the ability to manage data access with precision.
Contents
- [Database, API, and permissions](#database-api-and-permissions)
- [Tables, documents, and graph](#tables-documents-and-graph)
- [Advanced inter-document relations and analysis. No JOINs. No pain.](#advanced-inter-document-relations-and-analysis-no-joins-no-pain)
- [Simple schema definition for frontend and backend development](#simple-schema-definition-for-frontend-and-backend-development)
- [Connect and query directly from web-browsers and client devices](#connect-and-query-directly-from-web-browsers-and-client-devices)
- [Query the database with the tools you want](#query-the-database-with-the-tools-you-want)
- [Realtime live queries and data changes direct to application](#realtime-live-queries-and-data-changes-direct-to-application)
- [Scale effortlessly to hundreds of nodes for high-availability and scalability](#scale-effortlessly-to-hundreds-of-nodes-for-high-availability-and-scalability)
- [Extend your database with JavaScript functions](#extend-your-database-with-javascript-functions)
- [Designed to be embedded or to run distributed in the cloud](#designed-to-be-embedded-or-to-run-distributed-in-the-cloud)
- [x] Database server, or embedded library
- [x] Multi-row, multi-table ACID transactions
- [x] Single-node, or highly-scalable distributed mode
- [x] Record links and directed typed graph connections
- [x] Store structured and unstructured data
- [x] Incrementally computed views for pre-computed advanced analytics
- [x] Realtime-API layer, and security permissions built in
- [x] Store and model data in any way with tables, documents, and graph
- [x] Simple schema definition for frontend and backend development
- [x] Connect and query directly from web-browsers and client devices
- [x] Use embedded JavaScript functions for custom advanced functionality
- [x] MCP (Model Context Protocol) server for LLM and AI-agent integration
For guidance on installation, development, deployment, and administration, take a look at the following resources:
- Documentation: https://surrealdb.com/docs
- SurrealDB University: https://surrealdb.com/learn
- Aeon's Surreal Renaissance (interactive book): https://surrealdb.com/learn/book
Getting started with SurrealDB is as easy as starting up the SurrealDB database server, choosing your platform, and integrating its SDK into your code. You can easily get started with your platform of choice by reading one of our tutorials.
Server side code
Client side apps
SurrealDB Cloud
SurrealDB is available as a managed cloud service. Forget about infrastructure operations, monitoring, backups or capacity planning. SurrealDB Cloud allows you to focus on building great products using the power and flexibility of SurrealDB in just a few clicks. Grow from prototype to enterprise-scale. The SurrealDB Cloud scalable architecture allows your database to evolve as your application grows, ensuring you are always ahead of demand. However if you want to deploy SurrealDB yourself, keep reading below.
Installation
SurrealDB is designed to be simple to install and simple to run - using just one command from your terminal. In addition to traditional installation, SurrealDB can be installed and run with HomeBrew, Docker, or using any other container orchestration tool such as Docker Compose, Docker Swarm, Rancher, or in Kubernetes.
Install on macOS
The quickest way to get going with SurrealDB on macOS is to use Homebrew. This will install both the command-line tools, and the SurrealDB server as a single executable. If you don't use Homebrew, follow the instructions for Linux below to install SurrealDB.
bash
brew install surrealdb/tap/surreal
If you want to test a version with the latest features, published every night, install the nightly version:
bash
brew install surrealdb/tap/surreal-nightly
Install on Linux
The easiest and preferred way to get going with SurrealDB on Unix operating systems is to install and use the SurrealDB command-line tool. Run the following command in your terminal and follow the on-screen instructions.
bash
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh
If you want to run a beta release, before the next version is released, the beta version:
bash
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh -s -- --beta
If you want to test a version with the latest features, published every night, install the nightly version:
bash
curl --proto '=https' --tlsv1.2 -sSf https://install.surrealdb.com | sh -s -- --nightly
Install on Windows
The easiest and preferred way to get going with SurrealDB on Windows is to install and use the SurrealDB command-line tool. Run the following command in your terminal and follow the on-screen instructions.
ps1
iwr https://windows.surrealdb.com -useb | iex
If you want to test a version with the latest features, published every night, install the nightly version:
ps1
iex "& { $(irm https://windows.surrealdb.com) } -Nightly"
Run using Docker
Docker can be used to manage and run SurrealDB database instances without the need to install any command-line tools. The SurrealDB docker container contains the full command-line tools for importing and exporting data from a running server, or for running a server itself.
```bash
docker run --rm --pull always --name surrealdb -p 8000:8000 surrealdb/surrealdb:la
…
Members
-
surrealdb ★ PINNED
A scalable, distributed, collaborative, document-graph database, for the realtime web
Rust ★ 33k 1mo agoExplain → -
surrealist ★ PINNED
Surrealist is the ultimate way to visually manage your SurrealDB database
TypeScript ★ 1.3k 5h agoExplain → -
awesome-surreal ★ PINNED
A curated list of SurrealDB resources, tools, utilities, and applications.
★ 556 3mo agoExplain → -
surrealdb.js ★ PINNED
SurrealDB SDK for JavaScript
TypeScript ★ 357 9d agoExplain → -
surrealdb.go ★ PINNED
SurrealDB SDK for Golang
Go ★ 315 6d agoExplain → -
surrealdb.py ★ PINNED
SurrealDB SDK for Python
Python ★ 264 21d agoExplain → -
surrealkv
A low-level, versioned, embedded, ACID-compliant, key-value database for Rust
Rust ★ 545 3d agoExplain → -
echodb
An embedded, in-memory, immutable, copy-on-write, key-value database engine
Rust ★ 161 1y agoExplain → -
surrealdb.wasm ▣
A WebAssembly engine for the SurrealDB JavaScript SDK
★ 150 7mo agoExplain → -
surrealdb.net
SurrealDB SDK for .NET
C# ★ 136 9d agoExplain → -
docs.surrealdb.com
The documentation for SurrealDB, powered by Astro
MDX ★ 119 7h agoExplain → -
surrealml
A machine learning library for Python and Rust, for PyTorch, Tensorflow and SKLearn models
Rust ★ 119 5mo agoExplain → -
vart
A timed adaptive radix trie data-structure, used in SurrealKV
Rust ★ 117 3mo agoExplain → -
indxdb
A key-value database engine abstraction layer for IndexedDB in WASM
Rust ★ 110 4mo agoExplain → -
surrealmcp ▣
The official MCP server for SurrealDB
★ 98 7d agoExplain → -
surrealdb.java
SurrealDB SDK for Java
Java ★ 88 10d agoExplain → -
surqlize
A type-safe TypeScript ORM for SurrealDB with full type inference, a fluent query builder, and native support for graph relationships
TypeScript ★ 82 1mo agoExplain → -
surrealkit
Migrations, Seeding, TypeGen and Testing for your SurrealDB apps
Rust ★ 79 8d agoExplain → -
kaig
Hi! My name is Kai G. I'm a knowledge AI, skilled in vector search, and graph RAG. My DB of choice is SurrealDB.
Svelte ★ 78 2d agoExplain → -
examples
Example applications and scripts which run on SurrealDB
Python ★ 74 1mo agoExplain → -
surrealdb.node ▣
A Node.js engine for the SurrealDB JavaScript SDK
★ 70 7mo agoExplain → -
surrealdb.php
SurrealDB SDK for PHP
PHP ★ 69 9d agoExplain → -
surrealdb.rs ▣
SurrealDB SDK for Rust
★ 65 7mo agoExplain → -
surrealmx
An embedded, in-memory, lock-free, transaction-based, key-value database engine
Rust ★ 59 9d agoExplain → -
crud-bench
A benchmarking tool for testing and comparing the performance of both embedded and networked SQL and NoSQL databases.
Rust ★ 56 10d agoExplain → -
docker.surrealdb.com
Configuration files for running a multi-node SurrealDB cluster using Docker
Shell ★ 56 1y agoExplain → -
revision
A Rust library for revision-tolerant serialisation and deserialisation, with support for schema evolution over time
Rust ★ 51 1mo agoExplain → -
surrealql-vsx
SurrealQL grammar definition for TextMate, VSCode, and other IDEs
TypeScript ★ 39 15d agoExplain → -
storekey
Binary encoding data format which ensures lexicographic sort order
Rust ★ 38 7mo agoExplain → -
surreal-sync
No description.
Rust ★ 36 1d agoExplain → -
langchain-surrealdb
No description.
Python ★ 32 4mo agoExplain → -
rixxdb ▣
A versioned, embedded, strongly-consistent, key-value database
Go ★ 29 4y agoExplain → -
showcase
A showcase of applications which have been built with, or built upon SurrealDB
★ 25 4y agoExplain → -
fibre ▣
A simple and fast HTTP and WebSocket framework for Go
Go ★ 24 4y agoExplain → -
surrealdb.c
SurrealDB driver for C
C ★ 23 10d agoExplain → -
agent-skills
Supercharge your coding agent with official SurrealDB Skills
★ 22 1mo agoExplain → -
benchmarking
A collection of benchmarking tools and libraries for testing, comparing, and improving the performance of SurrealDB.
★ 21 8mo agoExplain → -
dmp
An efficient plain text comparison and patching library written in Rust
Rust ★ 20 1y agoExplain → -
affinitypool
A Rust library for running blocking jobs on a dedicated thread pool with CPU core affinity per thread
Rust ★ 16 11d agoExplain → -
n8n-nodes-surrealdb
An n8n node for working with SurrealDB, as both action and tool nodes
TypeScript ★ 16 3d agoExplain → -
surrealfs
Virtual file system for AI agents built on SurrealDB
Python ★ 15 8d agoExplain → -
ferntree
A concurrent in-memory B+ tree featuring optimistic lock coupling.
Rust ★ 15 2mo agoExplain → -
setup-surreal
GitHub Action for running SurrealDB in CI environments
★ 15 1y agoExplain → -
surrealql.wasm
WebAssembly utility functions for SurrealQL parsing and validation
Rust ★ 14 1mo agoExplain → -
cork ▣
A binary serialisation format for Go
Go ★ 14 4y agoExplain → -
install.surrealdb.com
The script for installing SurrealDB on unix operating systems
Shell ★ 14 1y agoExplain → -
surrealql-discord-bot
No description.
Rust ★ 13 1y agoExplain → -
windows.surrealdb.com
The script for installing SurrealDB on windows operating systems
PowerShell ★ 13 1y agoExplain → -
surrealism
No description.
Rust ★ 12 20d agoExplain → -
web-indexer
No description.
TypeScript ★ 12 1mo agoExplain → -
surrealdb-protocol
No description.
Rust ★ 11 1d agoExplain → -
codemirror
An addon for supporting SurrealQL within your CodeMirror editors
JavaScript ★ 11 2mo agoExplain → -
trice
A minimal replacement for std::time::Instant that works in WASM
Rust ★ 11 2y agoExplain → -
ember-surreal
A realtime SurrealDB data adapter for Ember.js
JavaScript ★ 11 1mo agoExplain → -
helm-charts
No description.
Go ★ 10 18d agoExplain → -
license
Licensing information for the SurrealDB database, components, libraries, and SDKs
★ 9 3y agoExplain → -
homebrew-tap
Homebrew tap for SurrealDB
Ruby ★ 9 4d agoExplain → -
rfcs ▣
Proposals and discussions on changes to SurrealDB
★ 9 2y agoExplain → -
bung ▣
A serialization implementation for SurrealDB, based on MessagePack
Rust ★ 8 3y agoExplain → -
lexicmp
Library for comparing and sorting strings lexicographically
Rust ★ 8 1y agoExplain → -
openapi
The OpenAPI specification for the SurrealDB HTTP API
★ 7 2y agoExplain → -
bump ▣
An efficient buffering library for Go
Go ★ 7 4y agoExplain → -
surrealql-language-server
SurrealQL Language Server
Rust ★ 6 2d agoExplain → -
surrealdb-macros ▣
Private implementation of function macros for SurrealDB
Rust ★ 6 2y agoExplain → -
vtree ▣
A versioned radix tree library implementation for Go
Go ★ 6 4y agoExplain → -
surrealql-tree-sitter
Tree sitter grammar for SurrealQL
C ★ 5 14d agoExplain → -
surrealdb.swift
Swift SDK for SurrealDB
Swift ★ 5 24d agoExplain → -
tikv-client ⑂
Rust Client for TiKV.
Rust ★ 5 2mo agoExplain → -
tlist ▣
A linked time series list implementation for Go
Go ★ 5 4y agoExplain → -
blist ▣
A binary time series list implementation for Go
Go ★ 5 4y agoExplain → -
surrealql ▣
SurrealQL data types for use in SurrealDB
★ 5 3y agoExplain → -
deb.surrealdb.com
The script for installing SurrealDB on Debian-based operating systems
Shell ★ 5 1y agoExplain → -
surrealql-jetbrains
SurrealQL extension for the Jetbrains suite
Kotlin ★ 4 9d agoExplain → -
fivetran-destination
No description.
Go ★ 4 13d agoExplain → -
.github
This repository houses the SurrealDB Github organisation profile file
★ 4 1y agoExplain → -
version.surrealdb.com
A domain endpoint for announcing the latest published SurrealDB version
JavaScript ★ 4 1y agoExplain → -
download.surrealdb.com
The global repository for binary release files for macOS, Linux, and Windows
JavaScript ★ 4 1y agoExplain → -
better-auth
Better Auth adapter for SurrealDB
TypeScript ★ 3 4d agoExplain → -
priority-lfu
A high-performance, concurrent, in-memory cache with **weight-stratified clock** eviction policy and **policy-based** prioritization.
Rust ★ 3 2mo agoExplain → -
surrealdb.rb
SurrealDB Ruby SDK
Ruby ★ 3 11d agoExplain → -
surrealdb.c.go
Go bindings for embedded SurrealDB via the surrealdb.c C FFI library
Go ★ 3 5mo agoExplain → -
example-iot-telemetry
No description.
Rust ★ 3 3mo agoExplain → -
chocolatey
The script for packaging SurrealDB for the Chocolatey package manager
PowerShell ★ 3 1y agoExplain → -
ptree ▣
A radix tree library implementation for Go
Go ★ 3 4y agoExplain → -
go-ycsb ⑂
A Go port of Yahoo! Cloud Serving Benchmark (YCSB)
Go ★ 3 10mo agoExplain → -
ai-codex-plugin
SurrealDB Plugin for Codex
JavaScript ★ 2 16d agoExplain → -
suggestions
💡 Suggest and discuss improvements and additions to SurrealDB
★ 2 1mo agoExplain → -
surrealql-neovim
SurrealQL extension for the Neovim editor
Lua ★ 2 1mo agoExplain → -
surrealdb-foundationdb
No description.
★ 2 8mo agoExplain → -
airbyte-connector
No description.
Python ★ 2 1y agoExplain → -
spectron-vercel-ai-sdk
Vercel AI SDK integration for Spectron
TypeScript ★ 1 23d agoExplain → -
spectron-hermes
Hermes Agent integration for Spectron
Python ★ 1 21d agoExplain → -
surrealdb.kotlin
Kotlin SDK for SurrealDB
Kotlin ★ 1 24d agoExplain → -
revision-lock
No description.
Rust ★ 1 2mo agoExplain → -
ann-benchmarks ⑂
Benchmarks of approximate nearest neighbor libraries in Python
Python ★ 1 2mo agoExplain → -
rust-rocksdb ⑂
rust wrapper for rocksdb
Rust ★ 1 27d agoExplain → -
nosqlbench ⑂
The open source, pluggable, nosql benchmarking suite.
Java ★ 1 1mo agoExplain → -
icons
Icons for use in other repositories in the SurrealDB organisation
★ 1 1y agoExplain → -
unstructured-ingest ⑂
No description.
★ 1 1y agoExplain → -
mastra-ai
Mastra AI integration for SurrealDB and Spectron
TypeScript ★ 0 8d agoExplain → -
ai-claude-plugin
Claude Cowork and Code Plugin for SurrealDB
Shell ★ 0 17d agoExplain → -
spectron-strands-agents
Strands Agents SDK for Spectron
Python ★ 0 22d agoExplain → -
spectron-google-adk
Google ADK integration for Spectron
Python ★ 0 21d agoExplain → -
spectron-crew-ai
CrewAI Agent integration for Spectron
Python ★ 0 22d agoExplain → -
spectron-pydantic-ai
Pydantic AI integration for Spectron
Python ★ 0 2d agoExplain → -
spectron-openai-agents-sdk
OpenAI Agents SDK for Spectron
Python ★ 0 22d agoExplain → -
spectron-openclaw
OpenClaw agent integration for Spectron
TypeScript ★ 0 5d agoExplain → -
datasets
The home for all SurrealDB datasets
SurrealQL ★ 0 24d agoExplain → -
slatedb ⑂
A cloud native embedded storage engine built on object storage.
★ 0 6d agoExplain → -
surrealdb.dart
Dart SDK for SurrealDB & Spectron
Dart ★ 0 1mo agoExplain → -
surrealdb.elixir
SurrealDB SDK for Elixir
Elixir ★ 0 1mo agoExplain → -
surrealdb.haskell
Haskell SDK for SurrealDB
Haskell ★ 0 1mo agoExplain → -
spectron-eve
Eve integration for Spectron
TypeScript ★ 0 1mo agoExplain → -
surrealdb.laravel
A Laravel package for building with SurrealDB through fluent queries, live updates, and effortless framework integration.
PHP ★ 0 1mo agoExplain → -
ember-surrealdb
No description.
JavaScript ★ 0 1mo agoExplain → -
surqlize.php
Typed PHP ORM and query builder for SurrealDB.
PHP ★ 0 1mo agoExplain → -
surrealdb-datasource ⑂
A Grafana datasource plugin for SurrealDB
★ 0 1mo agoExplain → -
surrealql-zed
SurrealQL Language Extension for the Zed Editor
Rust ★ 0 2mo agoExplain → -
cbor.js
JavaScript CBOR encoder and decoder by SurrealDB
TypeScript ★ 0 2mo agoExplain → -
surrealql-emacs
SurrealQL extension for the Ecmas editor
Emacs Lisp ★ 0 3mo agoExplain → -
surrealql-helix
SurrealQL extension for the Helix editor
Tree-sitter Query ★ 0 3mo agoExplain → -
surrealkit-action
Github Action for surrealkit
★ 0 3mo agoExplain → -
opentelemetry-python-contrib ⑂
OpenTelemetry instrumentation for Python modules
Python ★ 0 6mo agoExplain → -
rocksdb ⑂
A library that provides an embeddable, persistent key-value store for fast storage.
C++ ★ 0 27d agoExplain → -
onnxruntime-build ⑂
A build project for ONNX Runtime
CMake ★ 0 2y agoExplain →
No repos match these filters.