Wire-compatible Redis, PostgreSQL and MongoDB in one
npm install.
Built-in dashboard, deterministic fixtures, and an MCP server so AI coding agents
can reset, seed and query them on demand.
$ npm install -g localdb-simulator + localdb-simulator@0.1.0 $ lds init ✔ Created localdb-simulator.yaml $ lds start ✔ redis running 127.0.0.1:6379 ✔ postgres running 127.0.0.1:5432 ✔ mongodb running 127.0.0.1:27017 ◆ Dashboard http://127.0.0.1:8080 $ lds status NAME STATUS PORT UPTIME MEMORY redis running 6379 12s 4.2 MB postgres running 5432 12s 38.1 MB mongodb running 27017 12s 76.5 MB
Most teams settle for something that is almost a database. Each workaround hurts differently.
A daemon to install, images to pull, cold starts in CI. Many runners, sandboxes and locked-down machines simply do not have it.
redis-server, mongod and Postgres must be installed per machine, and versions drift between teammates and CI.
No wire protocol, no real dialect: tests pass against SQLite, then fail against production Postgres, Redis or MongoDB.
localdb-simulator removes all three. Wire-compatible Redis, PostgreSQL and MongoDB, zero Docker, zero system installs, deterministic state for developers and AI agents alike.
The tools you already know solve one problem and create another.
| localdb-simulator | Docker + Testcontainers | SQLite | |
|---|---|---|---|
| Wire-compatible with production | ✓ | ✓ | ✗ |
| No Docker daemon | ✓ | ✗ | ✓ |
| Redis + Postgres + Mongo, one tool | ✓ | per-project | ✗ |
| AI agent interface (MCP) | ✓ | ✗ | ✗ |
| Deterministic reset for tests | ✓ | ✗ | ✓ |
| One npm install, nothing else | ✓ | ✗ | usually |
One install, three wire-compatible databases, zero Docker, deterministic state.
Redis and PostgreSQL run as lightweight embedded processes; MongoDB uses a cached official binary. Nothing to install beyond npm i -g localdb-simulator.
Built-in dashboard at localhost:8080: service cards, live metrics charts, log streaming, and a data browser.
lds start, lds stop, lds logs, lds status. lds test --reset starts the server automatically if needed.
MCP server (lds mcp) gives Claude Code, Cursor and OpenCode 14 tools. Deterministic lds test --reset + fixtures + per-service compat_report.
Toggle persistence: true per service. Data survives restarts using LevelDB snapshots (Redis), pglite files (PostgreSQL), or WiredTiger (MongoDB).
Connect with your existing code. ioredis, redis, pg, node-postgres: all work without modification.
One process, three wire protocols. Agents drive it through MCP, your app through ordinary drivers.
Wire protocol is real: code that works locally works against production unchanged.
Each emulator is wire-compatible: use your existing client library unchanged.
RESP over TCP. 90+ commands: strings, hashes, lists, sets, sorted sets, pub/sub, TTL, SELECT, pipelines. Honest coverage in lds compat.
127.0.0.1:6379
ioredis · redis
Powered by pglite (WebAssembly). Multi-database, MD5/trust auth, JSONB, prepared statements, transactions.
127.0.0.1:5432
pg · node-postgres
Powered by mongodb-memory-server: official mongod binary (~77 MB, cached after first run). Multi-database, aggregation pipeline, indexes.
127.0.0.1:27017
mongodb driver
Requires Docker daemon. Spawns an official mysql:8 container. Gracefully disabled when Docker is unavailable.
127.0.0.1:3306
mysql2 · Sequelize
Works with your existing stack
Up and running in under a minute.
# npm $ npm install -g localdb-simulator # pnpm $ pnpm add -g localdb-simulator # yarn $ yarn global add localdb-simulator
# Generates localdb-simulator.yaml $ lds init # Or copy the sample config and edit # localdb-simulator.yaml: version: "1" services: redis: enabled: true port: 6379
$ lds start ✔ redis running 127.0.0.1:6379 ✔ postgres running 127.0.0.1:5432 ◆ Dashboard http://127.0.0.1:8080 # Or start a specific service $ lds start redis
// Redis import Redis from 'ioredis'; const redis = new Redis('redis://127.0.0.1:6379'); // PostgreSQL import { Pool } from 'pg'; const pool = new Pool({ host: '127.0.0.1', port: 5432, database: 'myapp_dev', });
The dashboard generates ready-to-paste .env connection strings for all running services.
Click the copy button, paste into your project: done.
# Redis REDIS_URL=redis://127.0.0.1:6379 # PostgreSQL DATABASE_URL=postgresql://postgres@127.0.0.1:5432/myapp_dev POSTGRES_HOST=127.0.0.1 POSTGRES_PORT=5432 POSTGRES_DB=myapp_dev # MongoDB MONGODB_URI=mongodb://127.0.0.1:27017/myapp_dev