Antopusantopus

v0.2.4 · zero-dependency · source-available

A full database, in pure TypeScript.

SQL, a typed ORM, documents, search, vectors, files and row-level security — one embedded engine, one file, zero dependencies. No node-gyp, no native binaries, no server. npm install and go.

npm i @bigsur/antopusView on npm Contact us

Everything in one file

One engine, nine jobs

SQL engine

Tables, indexes, constraints, aggregates, GROUP BY, functions, JSON paths and parameter binding.

Typed ORM, no codegen

A Prisma-style client from a plain TypeScript schema. The database follows the schema automatically.

Real transactions

All-or-nothing writes through a write-ahead log, crash recovery, BEGIN / COMMIT / ROLLBACK.

Document store

Schemaless JSON collections with MongoDB-style operators on the same ACID engine.

Full-text search

Query DSL, BM25 ranking, analyzers, highlighting, aggregations and autocomplete.

Vectors & geo

Exact kNN, hybrid ranking, geo distance and bounding boxes, custom scoring.

Object storage

Buckets of files of any size, streaming, byte ranges, checksums and a mountable HTTP API.

Row-level security

Multi-tenant policies enforced by the query engine, for tables and files alike.

Studio

A built-in web console: browse and edit rows, run SQL, try search queries, manage files.

Multi-process safe

Several processes share one file. Writers take turns, readers see each other's commits.

Zero dependencies

Pure TypeScript on Node built-ins. Nothing to compile, nothing to download at install time.

Fast

Sub-millisecond point lookups and relational joins, even at a million rows. Every write durable.

Schema in code

A typed ORM, no code generation

Define the schema in plain TypeScript. Antopus makes the database match it on start — and every query and result is fully typed.

import { Antopus, t } from '@bigsur/antopus';

const db = new Antopus('./app.db');          // or ':memory:'
const orm = db.orm({
  User: {
    id: t.id(),
    email: t.string().unique(),
    posts: t.hasMany('Post'),
  },
  Post: {
    id: t.id(),
    title: t.string().search(),               // full-text searchable
    author: t.belongsTo('User', { onDelete: 'cascade' }),
  },
});

const ada = await orm.user.create({
  data: { email: 'ada@x.io', posts: { create: [{ title: 'Hello' }] } },
});

const results = await orm.post.findMany({
  where: { author: { email: { endsWith: '@x.io' } } },
  include: { author: true },
});

Measured, not claimed

Fast at a million rows

1,000,000

relational rows in a single file — tested across concurrent writers, exact counts, zero data loss

0.11 ms

point lookup by a unique field, at a million rows

1.5 ms

a relational join — a user with its posts and their comments

0

third-party dependencies — pure TypeScript on Node's built-ins, no native build

Benchmarked on a 4-core Linux box: 100,000 users → 600,000 posts → 300,000 comments in one file, with unique, B-tree and full-text indexes and cascade foreign keys.

Questions

What is Antopus?
Antopus is a zero-dependency embedded database in pure TypeScript: SQL, a typed ORM, documents, full-text/vector/geo search, blob storage, transactions and row-level security — one in-process engine, one file, nothing to install.
Does it need a server, a native build or node-gyp?
No. Antopus is an in-process library — it runs inside your Node application. There is no server to start, no native binaries and no node-gyp. Run npm install @bigsur/antopus and go. It stores everything in one file (or in memory).
Does it depend on SQLite or any other database?
No. Antopus has zero third-party runtime dependencies and does not wrap SQLite or any other engine. It reimplements the engine itself — B+tree pages, a buffer pool, a write-ahead log, a SQL parser, an ORM and search — in pure TypeScript on Node's built-in modules.
Can I use a typed ORM without code generation?
Yes. You define the schema as plain TypeScript and Antopus brings the database in line with it automatically — tables, columns, indexes, link tables and search indexes. Every query and result is fully typed, with no codegen step and nothing ever dropped.
Is Antopus open source?
No. Antopus is proprietary, source-available software of BigSur Corp. You may install it, run it and embed it in your own applications for free under the Antopus Software License. The source is published so you can read and evaluate it, but it is not open source. For other uses: connect@bigsur.in.
Is Antopus ready for production?
Antopus is in active development. Every feature listed is built and tested — the full suite passes and a million-row relational stress test runs clean. Try it in your projects and tell us what you need: connect@bigsur.in.

Install Antopus

Requires Node.js 20.15+. Ships ESM and CommonJS with type definitions. Free to use under the source-available Antopus Software License.

npm
npm i @bigsur/antopus
pnpm
pnpm add @bigsur/antopus
bun
bun add @bigsur/antopus

Proprietary, source-available software of BigSur Corp. Other uses: connect@bigsur.in