<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>SecantusDB</title><link href="https://secantusdb.com/" rel="alternate"/><link href="https://secantusdb.com/feed/atom.xml" rel="self"/><id>https://secantusdb.com/</id><updated>2026-05-05T00:00:00+01:00</updated><subtitle>The SQLite of document databases</subtitle><entry><title>Hello from SecantusDB</title><link href="https://secantusdb.com/blog/hello-world/" rel="alternate"/><published>2026-05-05T00:00:00+01:00</published><updated>2026-05-05T00:00:00+01:00</updated><author><name>Joe Drumgoole</name></author><id>tag:secantusdb.com,2026-05-05:/blog/hello-world/</id><summary type="html">&lt;p&gt;Welcome to the SecantusDB blog — what the project is, what it isn't, and where it's heading next.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Welcome to the &lt;strong&gt;SecantusDB&lt;/strong&gt; blog. SecantusDB is a real MongoDB server
written in Python, backed by the same WiredTiger engine MongoDB ships
with. It speaks the MongoDB wire protocol on a real TCP socket, so
&lt;code&gt;pymongo&lt;/code&gt;, &lt;code&gt;mongo-go-driver&lt;/code&gt;, &lt;code&gt;mongosh&lt;/code&gt;, and &lt;code&gt;mongodump&lt;/code&gt; all connect
unchanged. Within single-node scope, your driver can't tell us apart
from &lt;code&gt;mongod&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="what-its-for"&gt;What it's for&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tests.&lt;/strong&gt; Spin up an embedded server in a fixture, run your suite,
  tear it down. No Docker, no ports to manage, parallel-test friendly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dev loops.&lt;/strong&gt; Local development without standing up a &lt;code&gt;mongod&lt;/code&gt;
  process. Default storage is on-disk WiredTiger, so your data
  survives a restart.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single-node prototypes.&lt;/strong&gt; Small services that don't need a real
  cluster but want a real document database with real durability.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-it-isnt"&gt;What it isn't&lt;/h2&gt;
&lt;p&gt;SecantusDB is &lt;strong&gt;not&lt;/strong&gt; a replacement for production MongoDB. It does
single-node only by design. Replica sets, sharding, real cluster
topology, and anything that depends on multi-node behaviour are out of
scope. We advertise ourselves as a single-node &lt;code&gt;secantus&lt;/code&gt; replica-set
primary in the &lt;code&gt;hello&lt;/code&gt; reply so &lt;code&gt;pymongo&lt;/code&gt;'s topology machinery accepts
change streams, but the topology is fictional &amp;mdash; there is no other
member.&lt;/p&gt;
&lt;h2 id="status-alpha"&gt;Status: alpha&lt;/h2&gt;
&lt;p&gt;We're in early development. The Python API surface (CLI flags, public
class signatures) is still settling and may shift between point
releases. The on-disk format is WiredTiger's, and our schema on top of
it (collection / index / oplog tables) has been stable across
releases. There's no migration tool yet, so don't put production data
here.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What's next&lt;/h2&gt;
&lt;p&gt;More driver-conformance coverage, performance work on the aggregation
pipeline, and richer index acceleration (multi-field sort, collation).
Follow along on &lt;a href="https://github.com/jdrumgoole/SecantusDB"&gt;GitHub&lt;/a&gt; or
read the &lt;a href="https://secantusdb.readthedocs.io/"&gt;docs&lt;/a&gt;.&lt;/p&gt;</content><category term="Updates"/></entry></feed>