蛸TakoDB by vimerk ↗

A remote database, built on SQLite

Your project's state, wherever it runs.

A real SQLite database behind HTTPS — ACID transactions, full SQL, JSON and key/value. The engine that runs in every phone and browser, now reachable by your laptop, your CI, and anything that speaks HTTP.

What is live today: ephemeral databases, with the full SQL, key/value and Parquet paths. Replicated derived and source tiers are in progress and will open once a restore has been rehearsed end to end, not before.

SQL

$ curl -H "Authorization: Bearer $TOKEN" \
    https://api.takodb.com/v1/db/orders/sql \
    -d '{"statements":[{"sql":
      "SELECT id, total FROM sales
       WHERE region = ?","params":["eu"]}]}'

→ 200
  {"results":[{"rows":[
    {"id":1,"total":42},
    {"id":2,"total":17}]}]}

Key / Value

# set a typed key — int, text, blob, or JSON
$ curl -X PUT "…/v1/db/app/kv/cursor" \
    -H "Authorization: Bearer $TOKEN" \
    -d '{"type":"json",
      "value":{"page":7,"done":false}}'

$ curl "…/v1/db/app/kv/cursor" -H …
→ 200 {"key":"cursor","type":"json",
        "value":{"page":7,"done":false}}

Python

# no SDK: the standard library is enough
import json
import urllib.request

url = "https://api.takodb.com/v1/db/orders/sql"
body = {"statements": [{
  "sql": "SELECT * FROM sales WHERE region = ?",
  "params": ["eu"]}],
  "format": "objects"}

req = urllib.request.Request(
    url,
    data=json.dumps(body).encode(),
    headers={
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json"})

with urllib.request.urlopen(req) as r:
    print(json.load(r)["results"][0]["rows"])

→ [{'id': 1, 'region': 'eu', 'total': 42}, …]
A real database engineSQLite is the most-deployed database on earth — ACID, indexed, transactional, with JSON and window functions. Not a cache, not a toy.
Durability you declareEvery database states what it is worth: scratch, recomputable, or a source of record. Replicated tiers are being brought up now — see what is live today.
Sized for real workSub-millisecond reads over databases that grow into the gigabytes. One focused database per concern — the shape SQLite is happiest in.

Under the hood

It's SQLite, with the awkward parts handled

No new query language, no format to get locked into — just a real SQLite database, reached over HTTPS with a token instead of a file path. TakoDB takes care of the parts that are tedious to get right on your own: who gets in, keeping the service honest about its own limits, and moving bulk data as Parquet. Your schema and your queries stay yours.

一 · 01

A file you never touch

One SQLite file per database, addressed by a name instead of a path. Columns when you want them; JSON documents when you'd rather stay loose.

二 · 02

Tokens, not passwords

A token is a capability — read, write, change schema, or administer — scoped to the exact databases you name, and nothing more.

三 · 03

SQLite guards itself

Every statement runs under SQLite's own authorizer, so a read token physically can't write. Nothing here tries to outguess your SQL by reading it.

四 · 04

Relational, key/value, or JSON

Tables with real constraints, a typed key/value store, or JSON documents you query with SQL — whichever fits the problem, in the same database.

五 · 05

Durability you declare

Mark a database ephemeral, derived, or source, and replication and retention follow from the tier. Replicated tiers are not open yet; ephemeral databases are.

六 · 06

Small answers as JSON, big ones as Parquet

Query results come back as JSON; bulk data loads and leaves as Parquet, in one transaction and safe to retry. No cursor juggling, no partial writes.

Want to build?

Tell us what you're building and we'll get you set up.

Contact us →