Skip to content

OstrichDB Documentation

Open-source hierarchical NoSQL database written in Odin

OstrichDB is a hierarchical NoSQL database that organizes data in an intuitive tree structure: ProjectsCollectionsClustersRecords. Built with security, performance, and developer experience in mind.

Hierarchical Organization

Intuitive data structure that mirrors how you think about organizing information - from projects down to individual records.

Rich Data Types

Support for strings, numbers, booleans, dates, UUIDs, arrays, and encrypted credentials with automatic type validation.

Security First

End-to-end encryption, JWT authentication, multi-tenant isolation, and secure operations built into every layer.

RESTful API

Complete REST API with advanced filtering, search, sorting, and pagination capabilities for all operations.

Get up and running with OstrichDB in minutes:

Installation

Install the Odin compiler, clone the repository, and run the build script to get started. Installation Guide →

Quick Start

Learn the basics with hands-on examples of creating projects, collections, clusters, and records. Quick Start Guide →

API Reference

Complete documentation of all REST API endpoints with examples and response formats. API Documentation →

System Overview

Understand OstrichDB’s modular architecture, core components, and design principles. Architecture Overview →

Data Structure

Learn how data is organized, stored, and accessed in the hierarchical structure. Data Structure →

Security Model

Explore authentication, encryption, access control, and multi-tenant isolation features. Security Features →

Terminal window
# Create a project
curl -X POST http://localhost:8042/api/v1/projects/my-app
# Create a collection
curl -X POST http://localhost:8042/api/v1/projects/my-app/collections/users
# Create a cluster
curl -X POST http://localhost:8042/api/v1/projects/my-app/collections/users/clusters/active
# Add records with different types
curl -X POST "http://localhost:8042/api/v1/projects/my-app/collections/users/clusters/active/records/username?type=STRING&value=john_doe"
curl -X POST "http://localhost:8042/api/v1/projects/my-app/collections/users/clusters/active/records/age?type=INTEGER&value=25"
curl -X POST "http://localhost:8042/api/v1/projects/my-app/collections/users/clusters/active/records/active?type=BOOLEAN&value=true"
# Query records with filtering
curl "http://localhost:8042/api/v1/projects/my-app/collections/users/clusters/active/records?type=STRING&sortBy=name"

Ready to dive in? Start with the Introduction to learn more about OstrichDB’s capabilities and use cases.