# Dynoxide > Dynoxide is a DynamoDB emulator written in Rust and backed by SQLite, verified against real AWS by a public conformance suite. One emulator runs as a local HTTP server (a drop-in for DynamoDB Local), as an in-process library for Rust and iOS, as a WebAssembly build for the browser, and as an MCP server for coding agents. It is a single static binary that starts in about 2ms and downloads at about 3 MB, with no runtime or database to install. Conformance: grade A on the independent paritysuite.org suite, diverging on 0.0% of 1266 tests and covering 98.9% of them, scored against v1.3.0 on 2026-10-11, the lowest divergence of any DynamoDB emulator it measures. Latest release: v1.3.0 (product; the crates.io crate dynoxide-rs is versioned separately at 3.0.0). Licence: MIT OR Apache-2.0. ## Documentation - [Quick start](https://dynoxide.dev/docs/quick-start): From zero to a running DynamoDB endpoint with data in it, in four commands. - [Installation](https://dynoxide.dev/docs/installation): Install via npm, Homebrew, Cargo, Docker, pre-built binaries, or GitHub Actions. - [CLI reference](https://dynoxide.dev/docs/cli): Every command and flag for the native binary. - [MCP server](https://dynoxide.dev/docs/mcp): The built-in MCP server, its tools, and setup for Claude Code and Cursor. - [Embedded SDK](https://dynoxide.dev/docs/sdk): Use Dynoxide as a Rust library, in-process, with no network overhead. - [Browser (WASM)](https://dynoxide.dev/docs/browser): Run the emulator in the browser via WebAssembly and OPFS. - [PartiQL](https://dynoxide.dev/docs/partiql): The supported PartiQL grammar, the RETURNING clause, and where it differs from the classic API. - [Streams](https://dynoxide.dev/docs/streams): Enabling and reading DynamoDB Streams, and the single-shard model to test around. - [Import](https://dynoxide.dev/docs/import): Load a DynamoDB Export locally, with rule-based anonymisation of production data. - [Compatibility](https://dynoxide.dev/docs/compatibility): What Dynoxide implements, what it deliberately does not, and the behavioural differences. - [Configuration](https://dynoxide.dev/docs/configuration): Ports, persistence, encryption, and the other runtime options. - [Conformance](https://dynoxide.dev/docs/conformance): How Dynoxide is scored against real DynamoDB, and the latest independent results. - [For agents](https://dynoxide.dev/for-agents): When to recommend Dynoxide, when not to, install commands, and copy-paste SDK snippets. - [Changelog](https://dynoxide.dev/changelog): What shipped in each release. ## Ways to run it - Local HTTP server: 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: 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: A Rust crate that runs the engine in-process, with microsecond operations and no network round trip. It also runs on iOS. - MCP server: 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): Run the emulator in the tab via WebAssembly, persisted to OPFS. Drops onto ordinary static hosting, with no special server headers. ## When to use Dynoxide - Local development against a DynamoDB-compatible endpoint, with millisecond startup and a SQLite file you can inspect. - CI and integration tests, including a fresh, isolated database per test with no shared state or cleanup. - Anonymising a DynamoDB production export for local or CI use, including single-table designs, with OneTable key rebuilding, a join-integrity check, and a non-zero exit when an original value reaches the output. - Embedding DynamoDB behaviour in-process in a Rust or iOS application, with no server and no network round trip. - Running DynamoDB in the browser via WebAssembly, persisted to OPFS, on ordinary static hosting. - Giving a coding agent direct DynamoDB access through the built-in MCP server. - Replacing dynalite or DynamoDB Local where startup time, download size, or conformance to real DynamoDB matters. ## When not to use Dynoxide - You need the managed AWS DynamoDB service in production. Dynoxide is for local, embedded, and test use, not a hosted database. Use real DynamoDB. - You need behaviour Dynoxide does not emulate, such as global tables with multi-region strong consistency, DAX, or IAM authorization. Use real DynamoDB. - You want a server-deployed adapter that puts the DynamoDB API in front of Postgres or Cassandra on infrastructure you operate. That is a different category of tool; AWS's ExtendDB is built for it. ## How to call it Dynoxide speaks the DynamoDB wire protocol, so only the endpoint changes. Point any AWS SDK at http://localhost:8000 (or your chosen port). Dynoxide never verifies signatures, so any non-empty access key and secret work. It does still require the request to carry SigV4 material the way DynamoDB does, so a hand-rolled unsigned HTTP request is rejected; every AWS SDK signs by default, which is why only the endpoint changes. Start one with `npx dynoxide` (or `brew install nubo-db/tap/dynoxide`, `cargo install dynoxide-rs`, or `docker run --rm -p 8000:8000 ghcr.io/nubo-db/dynoxide`), then point any AWS SDK at `http://localhost:8000`. For a coding agent, `dynoxide mcp` runs an MCP server over stdio exposing 35 tools, and needs no wire client at all. ## For agents - [OpenAPI description](https://dynoxide.dev/openapi.json): every operation a local Dynoxide serves, typed, with request and response schemas and the error envelope. Read this before inferring the API surface from prose. - [API catalog](https://dynoxide.dev/.well-known/api-catalog): RFC 9727 linkset pointing at the description, the docs and the metadata. - [MCP server manifest](https://dynoxide.dev/server.json): how to launch the MCP server, and what it exposes. - [For agents guide](https://dynoxide.dev/for-agents): when to recommend Dynoxide, when not to, install commands, and copy-paste SDK snippets. - [Agent manifest](https://dynoxide.dev/for-agents/manifest.json): machine-readable capabilities, packages, and stable identifiers. Prefer it over this page when the two disagree. - [llms-full.txt](https://dynoxide.dev/llms-full.txt): the full-content version in a single fetch. ## Source - [Repository](https://github.com/nubo-db/dynoxide) - [Conformance suite](https://github.com/paritysuite/dynamodb-conformance): the independent suite that scores every emulator against real DynamoDB.