Research preview · v1.2.7

The database for vibecoders

Zero setup. Zero infrastructure. Just build.

Install Strata

  • PlaygroundRuns in this tab

    A real Strata engine compiled to WebAssembly. Type a command, get an answer: no install, no server.

    Open the playground
  • Runs on Strata
    Game of LifeFork a future

    Cells live out their generations. Rewind to any one, fork it, and let both futures run side by side.

    Play the Game of Life
  • Runs on Strata
    Orbital RocketryBuild, fly, revert

    Build a rocket and fly it. Every attempt is kept, so reverting to the pad costs nothing.

    Open Orbital Rocketry
  • Runs on Strata
    PaintUndo has no bottom

    Every stroke is a commit. Drag the timeline back and the strokes come off; draw there and it forks.

    Open Paint
  • Runs on Strata
    ChessBeginner to grandmaster

    Solve a position against Stockfish, or make a new one. Go wrong, go back, take it another way.

    Open Chess

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
forked risky from default
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:default › branch fork default risky
forked risky from default
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:default › branch fork default risky
forked risky from default
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
strata:default › branch diff default risky
default json modified portfolio 7
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:default › branch fork default risky
forked risky from default
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
strata:default › branch diff default risky
default json modified portfolio 7
strata:default › branch preview risky default
conflicts -
strata:default › branch merge risky default
merged risky into default: 1 applied, 0 deleted, 0 conflicts
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
# 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