Software is code and data

Great tools exist to author, validate, and version control code. Saka brings the same capabilities to data. It's a relational database that lives in your git repo, and a set of tools for you and your agents.

How it works

Model it

Describe your records, their types, and how they relate in a few lines of SakaQL.

Keys, required values, and references live in the model, not in conventions that every script has to remember.

Scroll to continue

game/main.saka

role Character
prop Character::name! str exclusive .

role Item
prop Item::code! str exclusive .
prop Item::price! f64

role Quest
prop Quest::name! str
prop Quest::level! f64
prop Quest::giver! Character
prop Quest::rewards* Item #[ref_integrity = Prune]

Use cases

Game content

Items, characters, quests, and drop tables, with the models, textures, and audio they use, kept consistent as the world grows.

Open the template

Translations

Keys, locales, plurals, and review status, with every missing or stale translation one query away.

Open the template

Configuration and feature rules

Typed settings, environments, and rollout rules, with references between them that can't dangle.

Open the template

Fixtures and seed data

Related test data that stays valid when the schema changes, instead of a hundred JSON files that break together.

Open the template

Catalogs and pricing

Products, plans, prices, regions, and entitlements in one model that your app and your billing both read.

Open the template

Content metadata

Pages, authors, tags, and redirects for a site or its docs, where a broken link fails a check instead of a visitor.

Open the template

Versus what you use today

Compare Saka with
How Saka compares with what you use today
FeatureSakaFilesJSON, YAML, CSVCodeTypeScript, CUE, PklSpreadsheetSheets, ExcelSQLitein the repoHeadless CMSContentful, Sanity
Versioned with your codeThe data lives in your repository and branches with the code that reads it.Coming soonYesYesPartlyBinary Excel filesPartlyAs one binary filePartlyGit-based CMSs only
Readable diffs and mergesA change shows up as the lines that changed, and branches merge like code.Coming soonYesYesPartlyEdit history, no mergesPartlyDiffs via dumps, no mergesPartlyGit-based CMSs only
Media assetsModels, textures, pictures, and audio live beside the data that uses them, and change with it.Coming soonPartlyPaths, not checkedPartlyChecked if importedPartlyImages onlyPartlyAs BLOBsYes
Typed schemaA wrong value is rejected before it's saved or shipped, not when your code reads it.YesPartlyOpt-in schemaYesPartlyValidation rulesPartlyLoose unless STRICTPartlySome check only in the editor
Real relationshipsRecords point at each other, and deleting one that's still in use fails instead of leaving a broken link.YesNoPartlyIf modeled in typesPartlyChecked on entry, not deletePartlyForeign keys off by defaultPartlySome allow broken links
Safe schema changesRename or reshape a field, and the existing data is converted with it.YesNoPartlyRenames by refactoringPartlyRenames onlyPartlyLimited ALTER TABLEPartlyScripts, not atomic
All-or-nothing changesAn edit that touches many records lands whole or not at all.YesPartlyPer git commitPartlyPer git commitNoYesPartlySome have transactions
Spreadsheet-style editingBrowse records in a grid and change them a cell at a time.Coming soonPartlyCSV in a spreadsheetNoYesPartlyThrough a GUI toolPartlyForms, one entry at a time
Relational queriesJoin, filter, group, and total across all of your data.YesPartlyWith jq or DuckDBPartlyLoops in codePartlyLookups and pivot tablesYesPartlyFilters, no grouping
Mature ecosystemYears of production use, with tools, integrations, and answers online.PartlyEarly alphaYesYesYesYesYes

What works today

The browser app at app.saka.io works today, with no account, and your databases stay in your browser. Here's where each step of the workflow stands.

  1. Model it

    Partly available

    Today

    • Records with typed properties, keys, and references

    Coming

    • Media assets: models, textures, pictures, and audio
    • A VS Code extension for writing SakaQL
  2. Edit it

    Partly available

    Today

    • Every edit checked against the model before it lands
    • All-or-nothing edits, with undo and redo
    • A REPL for changing data

    Coming

    • Editing records in the grid, like a spreadsheet
    • Rules that every edit must keep, such as “a won deal has an owner”
  3. Query it

    Available

    Today

    • Queries and views that stay current as the data changes
    • A grid for browsing results and a REPL for queries

    Coming

  4. Version control it

    Partly available

    Today

    • Import and export of whole databases as files

    Coming

    • Databases as folders of plain-text files, with history, branches, and merges
    • The saka command line, to open a database in your repository
    • A CI check that every key, reference, and rule still holds
  5. Leave it to your agents

    Coming

    Today

    Nothing yet

    Coming

    • One command to read, check, and change a database, with docs that match the installed version
    • An MCP server
    • A person's approval for any change that loses data
    • A history of which changes an agent made

Frequently asked questions

What Saka is for

What is Saka?

A relational database that lives in your git repo, and a set of tools for you and your agents to work with it.

Saka isn't a server for your app's users, their live traffic, or analytics.

What kind of data is it for?

Data that your team writes and your code reads, and that has to stay valid: game content, translations, settings, catalogs, and test data. You describe the schema, and Saka enforces its types, keys, relationships, and any rules you add.

What are Saka's limits?

Saka keeps each database in memory, so it's built for data that people and agents edit, not for millions of rows. Each operation also has limits on how long it runs and how much work it does.

Why not keep the data in JSON or YAML files?

For simple data, they're great. As data grows complex, mistakes slip through and questions need scripts.

That's when to turn to Saka: it's plain text in your repo too, but it checks every change and answers queries.

Why not SQLite or another database?

A database checks your data, but it sits outside your workflow: its data doesn't branch with your code or show up in reviews.

A Saka database does both. Its data model and language are also more expressive than SQL, so you can model your data more faithfully.

Working with Saka

Do I need to learn SakaQL?

It helps, but you shouldn't have to. The goal is for your agent to write the SakaQL.

Does Saka support SQL?

No. Saka uses its own language, SakaQL, and doesn't connect to SQL databases.

Will it work with my coding agent?

Yes, any agent that can run a command. Saka catches an agent's mistakes before they land, so you can trust its changes.

Saka today

What can I use today?

The browser app at app.saka.io. It needs no account, and your databases stay in your browser.

Is Saka ready for production?

No. Saka is an early alpha. It works, but bugs and missing features mean you shouldn't rely on it for production work yet.

Data loss is a real risk, so export a copy of any database you'd miss.

Who stands behind it

Is Saka free?

Saka's core will always be free, and premium features like hosted databases and multiplayer will pay for its development. Their pricing hasn't been decided.

Is Saka open source?

No. Saka is a commercial product. Your data is still yours: it's stored in human-readable text files that any editor can open.

Who builds Saka?

Sufyan Dawoodjee, a software engineer in Mountain View, California.

Still have a question? Get in touch.

Try Saka in your browser

The browser alpha lets you model data, query it, and watch the results update.