A DynamoDB emulator backed by SQLite. Run it as a local server, in CI, embedded in your Rust or iOS app, or in the browser via WebAssembly. A single static binary, ~2ms startup, ~3 MB, with no runtime or database to install.
Why Dynoxide
DynamoDB Local takes ~3,200ms on CI. Dynoxide is ready before your SDK has even connected.
No Docker image, no JVM. Just a native binary that uses ~8 MB of RAM at idle.
Parity Suite, a DynamoDB conformance suite, runs the same tests against Dynoxide and real AWS, scored the same way for every emulator. The full conformance results are public.
Built-in MCP server with 35 tools. Your coding agent can create tables, query data, and manage snapshots.
One engine, many ways to run it
The same DynamoDB emulator, whether you need a local server, an in-process library, a browser build, or an MCP server for your coding agent.
Local HTTP server
Docs →A native binary that serves the DynamoDB wire protocol on a port. A drop-in for DynamoDB Local: point any AWS SDK at the endpoint.
CI service
Docs →A GitHub Action (or the Docker image) that brings Dynoxide up in a pipeline. A ~3 MB download with no JVM warmup, so the database stops being the slow part of the job.
Embedded library
Docs →A Rust crate that runs the engine in-process, with no server and no network. Single-digit microsecond operations, and it runs on platforms DynamoDB Local can't, including iOS.
MCP server
Docs →A built-in Model Context Protocol server, over stdio or HTTP. A coding agent can create tables, query data, and manage snapshots without leaving the conversation.
Browser (WebAssembly)
Docs →Run the emulator in the tab via WebAssembly, persisted to OPFS. Drops onto ordinary static hosting, with no special server headers.
Dual-licensed under MIT or Apache-2.0, so you can embed it in your own application and redistribute it.
DynamoDB in a browser tab
The same emulator, compiled to WebAssembly and published on npm. No server, no install - just DynamoDB running on the page, on the official SQLite wasm build. It persists to OPFS, so a table you create survives a reload. Nothing leaves the page.
It runs in a Web Worker and needs no special server headers - no cross-origin isolation, no COOP/COEP - so the whole thing, around 990 KB gzipped, drops onto ordinary static hosting.
Create-table, put, get, delete, query, scan and PartiQL all work, over base tables and both secondary index types. So does SearchVectors over a vector index, running the same exact-KNN search as the native build. It covers a subset of that build - streams, TTL, tags and write transactions aren't wired yet - and it reports the exact set it supports at boot.
The console below is accesspatterns.dev, embedded on this page and running on this same wasm build. It holds a product catalogue with a vector index and a GSI over one table: SearchVectors answers "something like this, in stock", and a Query on the GSI answers "everything in a price band". Run it live fetches the engine into your tab and answers from there, with the cost of every operation beside the response.
Local DynamoDB emulator startup, visualised
Time from zero to accepting requests. Dynoxide's bar is so small you might miss it.
Measured on GitHub Actions runners. Local development on Apple Silicon is even faster.
Built for CI,
not just your laptop
A fast emulator doesn't just save you time locally - it changes what's practical in your pipeline. When startup takes milliseconds instead of seconds, you can spin up a fresh database per test. No shared state. No cleanup. No flaky tests.
Pair that with dynoxide import and you're running integration tests against real data shapes - anonymised, compressed, loaded in seconds from a snapshot of production.
A ~3 MB download with no dependencies means no Docker layer caching, no JVM warmup eating into your build minutes, and no "works on my machine" divergence between local and CI.
Already built around amazon/dynamodb-local in a container? Swap the image. The official ghcr.io/nubo-db/dynoxide is a ~5 MB drop-in - same API, where you'd otherwise pull 225 MB. You don't need Docker, but if you want it, it's no longer the slow part.
Drop-in replacement for dynalite
If you're using dynalite for local DynamoDB during development, switching is one line. You don't need to know or care that it's Rust under the hood.
The npm package ships platform-specific binaries - the same approach used by esbuild, Biome, and Turbo. A thin wrapper pulls in the right binary for your OS at install time. No compilation, no native dependencies, no surprises.
Your existing dev setup stays the same. Same SDK calls, same endpoint, same table definitions. The only difference is the name in your package.json - and the fact that your local DynamoDB starts in milliseconds instead of seconds.
Tested against the real thing
1251 conformance tests, run against real DynamoDB on AWS to fix the expected answer, then against every emulator the same way. Each target comes out with two figures, and they are never added together: the share of the suite it answers differently, and the share it implements at all.
See the live results on Parity Suite →| Grade | Target | Divergence | Coverage |
|---|---|---|---|
| A | Dynoxide | 0.2% | 98.9% |
| B | ExtendDB coverage holds this at B | 1.8% | 78.7% |
| B | extenddb sqlite coverage holds this at B | 2.1% | 82.8% |
| B | LocalStack | 8.1% | 95.3% |
| C | Dynalite coverage holds this at C | 11.5% | 69.1% |
| C | DynamoDB Local | 15.7% | 94.2% |
| C | Ministack | 17.6% | 95.8% |
| D | Floci | 26.9% | 95.1% |
A skip and a fail are not the same problem. An operation an emulator declines is something you find in minutes and plan around; one it gets quietly wrong is something you find in production. Divergence sets the letter and coverage can only lower it. The suite also only tests what it tests, so a behaviour with no test is a blind spot rather than a pass. How the grading works.
Conformance suite: paritysuite/dynamodb-conformance
Frequently asked questions
How fast does Dynoxide start?
Does Dynoxide require Docker?
Is Dynoxide compatible with DynamoDB?
Can I use Dynoxide as a local DynamoDB emulator?
How does Dynoxide compare to DynamoDB Local?
Try it in ten seconds
The fastest DynamoDB Local alternative. One install, one command, works with any DynamoDB SDK.