RosalindDBRosalindDB
HomeDocsBlog
View RosalindDB on GitHub
View RosalindDB on GitHub
RosalindDBRosalindDB

An object-storage-first vector database for cold and bursty workloads. Apache 2.0.

View RosalindDB on GitHub

Project

  • GitHub
  • License (Apache 2.0)
  • Issues

Read

  • Documentation
  • MCP server
  • Blog

© 2026 RosalindDB contributors. Apache License 2.0.

Privacy

    RosalindDB · Apache 2.0

    Object-storage-first vector database for cold and bursty workloads.

    RosalindDB stores FAISS IVFFlat shards on any S3-compatible object store and serves nearest-neighbour search out of a byte-budgeted in-process cache. The always-on footprint is small; heavy work runs on queue-driven workers that scale to zero.

    View on GitHubRead the docs

    Quickstart

    docker compose up, then three curls.

    Requirements: Docker and curl. No signup. The Control Plane comes up on http://localhost:8080 as the single public origin; MinIO, Postgres, Redis, and the workers all run privately on the compose network.

    Full REST contract — every endpoint, every error code — is in the docs.

    Clone and start the stack
    git clone https://github.com/rosalinddb/rosalinddb.git
    cd rosalinddb
    docker compose up
    Create a dataset
    curl -X POST http://localhost:8080/v1/datasets \
      -H 'Content-Type: application/json' \
      -d '{"name": "products", "dimension": 4}'
    Ingest a couple of vectors as NDJSON
    curl -X POST http://localhost:8080/v1/datasets/products/vectors \
      -H 'Content-Type: application/x-ndjson' \
      --data-binary $'{"id":"a","values":[0.1,0.2,0.3,0.4],"metadata":{"category":"books"}}
    {"id":"b","values":[0.5,0.5,0.5,0.5],"metadata":{"category":"movies"}}
    '
    Query (top-k nearest with an AND-of-equals filter)
    curl -X POST http://localhost:8080/v1/query \
      -H 'Content-Type: application/json' \
      -d '{"dataset":"products","vector":[0.1,0.2,0.3,0.4],"top_k":2,"filter":{"category":"books"}}'

    MCP server

    Drive RosalindDB straight from your AI assistant.

    Your coding agent manages datasets, ingests vectors, and runs similarity search as tool calls — no API client, no glue code. Pick your client below and you're wired up in one step.

    Client

    Add it from the command line — Claude Code writes the config for you:

    claude mcp add rosalinddb \
      --env ROSALINDDB_API_URL=http://localhost:8080 \
      -- npx -y @rosalinddb/mcp

    Or add it by hand to .mcp.json in your project root (the project-scoped, git-shareable config):

    {
      "mcpServers": {
        "rosalinddb": {
          "command": "npx",
          "args": ["-y", "@rosalinddb/mcp"],
          "env": {
            "ROSALINDDB_API_URL": "http://localhost:8080"
          }
        }
      }
    }

    Then — run /mcp inside Claude Code to confirm the rosalinddb tools loaded. The eight RosalindDB tools become available to the assistant.

    ROSALINDDB_API_URL is your API base URL — http://localhost:8080 against a local docker compose up stack, or the public URL of your self-hosted instance. No API key is needed in OSS-default mode (RB_REQUIRE_AUTH=false) — the snippet above is the whole config. If your backend has auth turned on, also set ROSALINDDB_API_KEY to an rb_live_… key created via POST /auth/keys.

    Is this for you

    The honest answer on where RosalindDB fits — and where it doesn't.

    Built for

    • +Agent long-term memory
    • +Indie or early-stage RAG over slowly-changing corpora
    • +Batch retrieval pipelines
    • +Internal-tool search
    • +Cost-sensitive similarity lookups where always-on cluster pricing is the wrong shape

    Not built for

    • −Sub-10ms p50 interactive search at scale
    • −Billion-vector multi-tenant production on a single node
    • −Drop-in replacement for a tuned hot-tier in-memory cluster

    Features

    The whole surface, in one read.

    A focused vector database, not a platform you have to learn. Everything below ships from the same image.

    • 01

      Vector search

      FAISS IVFFlat shards on S3-compatible object storage.

    • 02

      Metadata filtering

      Flat AND-of-equals, strict type-and-value match. No coercion, no ranges, no OR in v1.

    • 03

      Incremental indexing

      Subsequent ingests add() to the trained shard. No full rebuild per batch.

    • 04

      Async bulk import

      NDJSON and Parquet via presigned PUT, with a rejected-records report and continue / abort modes.

    • 05

      Multi-tenancy + API keys

      Opt-in via RB_REQUIRE_AUTH=true. Quotas via RB_ENABLE_QUOTAS=true.

    • 06

      OpenTelemetry observability

      Metrics, traces, and structured logs over OTLP to any backend you point it at.

    • 07

      One image, many roles

      Every service runs from the same Dockerfile. Per-process commands live in docker-compose.yml.

    • 08

      Reliable queue

      Redis-backed, at-least-once delivery, DLQ, reaper. The query path is isolated from auth and ingest admission.

    Run modes

    One image, two modes — flipped with environment variables.

    OSS default ships with auth and quotas off so the quickstart on this page just works. Flip RB_REQUIRE_AUTH and RB_ENABLE_QUOTAS when you put it on the public internet.

    ModeAuthQuotasUse case
    OSS defaultoffoffLocal dev. Single-tenant self-host on a private network.
    Production self-hostonoptionalMulti-tenant self-host behind a public URL.