# ExtendDB > The DynamoDB API, open source, for local development, hybrid, and edge. ExtendDB is a DynamoDB-compatible API adapter for local development, hybrid, and edge environments, with pluggable storage backends. Write your application once with any DynamoDB client and run it in AWS Regions, in on-premises data centers, at the edge, or on a developer laptop. Released under the Apache 2.0 license. Developed in the open on GitHub. - Repository: https://github.com/ExtendDB/extenddb - Documentation: https://github.com/ExtendDB/extenddb/tree/main/docs - License: Apache-2.0 ## Why ExtendDB ### Write once, run anywhere The same application code runs against ExtendDB and the DynamoDB service. Any DynamoDB client works, from AWS SDKs to community libraries such as PynamoDB and Dynamoose. Endpoint configuration is the only difference. ### Pluggable storage Choose the storage backend that fits each deployment: PostgreSQL for enterprise familiarity, Apache Cassandra for horizontal scale. The pluggable interface is public and community backends are welcome. ### Apache 2.0 ExtendDB is developed in the open under the Apache 2.0 license. Inspect the source, fork the project, and run it anywhere. Explicit patent grant included. ## How it works ExtendDB is a protocol adapter that speaks the DynamoDB wire protocol and delegates persistence to a backend you choose. PostgreSQL is the reference backend, validated against the full ExtendDB test suite. Apache Cassandra and other community backends plug in through the same public interface. Applications interact with ExtendDB using any DynamoDB client. Endpoint configuration is the only change. Supported operations include CRUD, Query, Scan, batch, transactions, Streams, expressions, and TTL. ## Where it runs ### Local development Run ExtendDB on your laptop for unit tests, continuous integration, and day-to-day development without network calls to an AWS Region. High-fidelity API behavior with full expression support, condition evaluation, and error code parity with the cloud service. Example: Developers run ExtendDB in Docker against a lightweight backend. Tests execute in milliseconds with the same expression semantics, error codes, and pagination behavior as the cloud service. ### On-premises data centers Run ExtendDB in your own data centers on top of databases your operations team already manages. Standardize on the DynamoDB API across cloud and on-premises without introducing a new database dependency. Example: An enterprise runs ExtendDB on PostgreSQL in their data center while using the managed DynamoDB service in AWS Regions. One API across both environments, one set of application code. ### Edge and disconnected Run ExtendDB at the edge: factories, retail stores, vehicles, aircraft, and remote sites without dependence on cloud connectivity. Example: Edge nodes capture telemetry continuously against a local backend. Writes persist locally regardless of network state. ## Frequently asked questions ### What is ExtendDB? ExtendDB is a DynamoDB-compatible API adapter that runs on infrastructure you manage. It accepts the same requests a DynamoDB client sends to the service and delegates data persistence to a pluggable storage backend. PostgreSQL is the reference backend, with Apache Cassandra and other backends supported through the same pluggable interface. ExtendDB ships under the Apache 2.0 license. ### How is ExtendDB different from the DynamoDB service? The DynamoDB service is fully managed and operated by AWS in AWS Regions. ExtendDB implements the DynamoDB API on infrastructure you run yourself, which extends the programming model to local development, on-premises data centers, and edge locations. ExtendDB is wire-protocol compatible with the service. Features tied to fully managed operations such as global tables, auto-scaling, backup and restore, and DAX are not available in a self-hosted deployment. ### What storage backends are supported? At launch, ExtendDB ships with PostgreSQL as the reference backend, feature-complete and validated against the full ExtendDB test suite. The storage backend is defined as an interface, so additional backends (Apache Cassandra, MySQL, and more) can be added by the community without modifying ExtendDB itself. You can switch between backends as your needs change. ### Is ExtendDB open source? Yes. ExtendDB is released under the Apache 2.0 license, the same license used by [AWS CDK](https://aws.amazon.com/cdk/), [Firecracker](https://firecracker-microvm.github.io/), and [Bottlerocket](https://aws.amazon.com/bottlerocket/). Apache 2.0 provides an explicit patent grant and permits use, modification, and redistribution. ### Do I need to change my application code? No. Supported operations accept the same HTTP request format and return the same response structures that DynamoDB clients use with the service. Your existing application code works without modification for any supported operation. This includes AWS SDKs (JavaScript, Python, Java, Go, and others) and higher-level libraries that wrap them (PynamoDB, Dynamoose, DynamoDB Toolbox, awswrangler) because they delegate to the underlying SDK for HTTP communication. You change the endpoint configuration and nothing else. ### How does performance compare to cloud DynamoDB? Performance depends on your infrastructure sizing and storage backend choice. With PostgreSQL on appropriately sized instances, single-item operations achieve sub-10ms latency for reads and writes. With Apache Cassandra as the backend, ExtendDB supports horizontal scaling to thousands of requests per second. Performance characteristics differ from cloud DynamoDB because the underlying storage architectures differ, but the API behavior is identical across backends. ### What does ExtendDB cost? There is no charge for ExtendDB itself. You pay for the underlying compute and storage infrastructure based on your deployment and backend choice, or for your own infrastructure costs outside AWS. ### Can I use ExtendDB for local development and CI? Yes. ExtendDB is designed for development and continuous integration use. It matches cloud DynamoDB behavior with full expression support, condition evaluation, and error code parity. Run it via Docker against a lightweight backend for fast startup on developer machines.