Research preview · v1.2.1

The database for vibecoders

Zero setup. Zero infrastructure. Just build.

Install Strata

strata in your browser
Pick a data model above, or type a command. It runs here, on the real engine, in this tab.

BRANCHES

Branching

Branch the whole database.

Compare the branch, preview the merge, and promote only what should land.

Branch

Create a branch in an instant, without copying the database.

strata - session
strata:default branch fork default risky
"name": "risky"
defaultjson · portfolio
{
"strategy": "balanced",
"stocks": 60,
"bonds": 30,
"cash": 10,
"rebalance": "quarterly",
"currency": "USD"
}
riskyjson · portfolio
{
"strategy": "balanced",
"stocks": 60,
"bonds": 30,
"cash": 10,
"rebalance": "quarterly",
"currency": "USD"
}

Change

Run risky work there: agent writes, migrations, experiments.

strata - session
strata:defaultbranch fork default risky
"name": "risky"
strata:risky json set portfolio $.strategy "aggressive"
strata:risky json set portfolio $.stocks 80
strata:risky json set portfolio $.bonds 15
strata:risky json set portfolio $.cash 5
defaultjson · portfolio
{
"strategy": "balanced",
"stocks": 60,
"bonds": 30,
"cash": 10,
"rebalance": "quarterly",
"currency": "USD"
}
riskyjson · portfolio
{
"strategy": "aggressive",
"stocks": 80,
"bonds": 15,
"cash": 5,
"rebalance": "quarterly",
"currency": "USD"
}

Review

Diff the branch and preview the merge before default changes.

strata - session
strata:defaultbranch fork default risky
"name": "risky"
strata:riskyjson set portfolio $.strategy "aggressive"
strata:riskyjson set portfolio $.stocks 80
strata:riskyjson set portfolio $.bonds 15
strata:riskyjson set portfolio $.cash 5
strata:default branch diff default risky
"capability": "json"
strata:default branch preview risky default
"conflicts": []
branch review4 changes · clean
- "strategy": "balanced",
+ "strategy": "aggressive",
- "stocks": 60,
+ "stocks": 80,
- "bonds": 30,
+ "bonds": 15,
- "cash": 10,
+ "cash": 5,
"rebalance": "quarterly",
"currency": "USD",
preview: 0 conflicts · ready to merge

Promote

Merge the result when it is right. Discard it when it is not.

strata - session
strata:defaultbranch fork default risky
"name": "risky"
strata:riskyjson set portfolio $.strategy "aggressive"
strata:riskyjson set portfolio $.stocks 80
strata:riskyjson set portfolio $.bonds 15
strata:riskyjson set portfolio $.cash 5
strata:defaultbranch diff default risky
"capability": "json"
strata:defaultbranch preview risky default
"conflicts": []
strata:default branch merge risky default
"target": "default"
defaultjson · portfoliomerged
{
"strategy": "aggressive",
"stocks": 80,
"bonds": 15,
"cash": 5,
"rebalance": "quarterly",
"currency": "USD"
}

PRIMITIVES

Primitives

Store every kind of app data in one embedded database.

Use keys for settings, JSON for records, events for logs, vectors for embeddings, and graphs for relationships. They live together in the same local file, so your app does not need a separate store for each shape.

Strata: open data view in portfolio.strataclick around

Explorer

portfolio.strata
portfolio.strata
filter keys…
portfolio.value
portfolio.currency
portfolio.strategy
portfolio.risk
portfolio.valuev3int
111080

History

v3111,0802026-06-11 16:55
v291,7502026-06-10 09:31
v198,4002026-06-09 14:02
Strata extension activelocal engineportfolio.stratakv · local file

01 / 05 · kv - versioned key-value. history included

Read the kv guide →

TIME TRAVEL

Time travel

Read any past version of your data.

Every write records a version. Use --as-of to see what the database returned before a later change, without restoring a backup or copying data aside.

version historystrata · --as-of
strata kv get portfolio.value --as-of 3
$111,080v3 $19,330written 2026-06-11 16:55:03
drag the playhead - every read accepts --as-of3 versions · 0 overwrites

NATIVE INFERENCE

Inference

AI is built-in

Run model work where the data already lives. Strata can read records, create embeddings, rank context, and generate an answer without moving the app into a separate AI service.

embedrankgenerate
native inferenceembed · rank · generatestrata · main

records

Stored context

KVJSONEventVector

records stay local

native

Inference layer

generate answer

answer

Grounded result

The portfolio value moved from 98400 to 111080 after the merge changed allocation to 80/15/5.

from ranked context

STRATA HUB

Strata Hub

Clone the dataset your experiment needs.

Hub lists cloneable Strata databases for RAG, agents, benchmarks, events, and reference data. Clone one, open it locally, and keep using the same Strata commands.

Browse Strata Hub
stratahub/catalog
clone-ready
ragagentsbenchmarkseventsreference

movielens-100k

recommendation

ratings · metadata · vectors

agent-memory-with-experiments

agent memory

episodes · events · branches

stackoverflow

Q&A retrieval

posts · tags · users

github-events

event stream

issues · PRs · rollups

selected dataset

movielens-100k

resolved · verified · local file ready

schemaexamplesbrancheshistory

INSTALL

Start in thirty seconds.

Install an SDK, set up the CLI, open Strata in VS Code, or hand the setup to an agent. However you start, the database runs locally.

sdk packages
PyPI
stratadb
pip install stratadb
from stratadb import Strata
npm
@stratadb/core
npm install @stratadb/core
import { Strata } from "@stratadb/core";
# Step 1 - install (run in your terminal, not in Python):
# pip install stratadb
# Step 2 - save as quickstart.py and run: python quickstart.py
from stratadb import Strata
db = Strata.open("./quickstart.strata") # one file, no server
db.kv.put("portfolio.value", 98400)
db.kv.put("portfolio.value", 111080) # every write keeps its past
print(db.kv.get("portfolio.value")) # 111080
print(db.kv.history("portfolio.value")) # v2: 111080 · v1: 98400