thingd
A fast object-first data engine for applications and AI agents.
🌐 sayanmohsin.github.io/thingd — landing page ☁️ thingd.cloud — managed cloud
thingd is a high-performance object-first data engine built for modern applications and AI agents. It combines persistent storage, durable queues, event streams, full-text search, and MCP-native access into a single system that can run embedded, standalone, or in a cluster.
thingd stores versioned JSON objects in collections, with built-in durable queues, append-only event streams, and full-text search — no stitching together separate infrastructure. The same API works in-memory, persisted locally, or connected to a remote sidecar.
Status
thingd is in early-to-mid stage prototype (0.x track). The core engine, SDK, CLI, and MCP server are functional and tested, but the project is not production-ready yet.
See the full feature status and roadmap for a consolidated view of both the engine and thingd Cloud.
Shipped
- Rust engine (thingd — crates.io) — memory + Fjall adapters, Tantivy FTS, embedvec vector search, queue lifecycle, graph links, aggregate analytics, NLQ
- Node.js SDK (@thingd/sdk) — three drivers: memory (default in-memory TS store), native (napi-rs Rust SQLite), cloud (remote HTTP REST)
- Browser/Edge client (@thingd/client) — zero-dependency REST client for browsers, Cloudflare Workers, AWS Lambda, Bun, Deno
- CLI (@thingd/cli) — TUI dashboard, 30+ subcommands (search, objects, events, queues, export/import/snapshot/backup, doctor, bench, db maintenance). Support for importing from Postgres/MySQL via sidecar REST.
- MCP server — 36 tools, stdio + Streamable HTTP, audit events, collection allowlists, read-only mode (tool count defined in packages/thingd/src/constants.ts)
- Docker — multi-stage image, compose + K8s for leader/follower cluster
- CI/tooling — semantic-release, biome, lefthook, doc tests, cargo audit, cargo deny, CodeQL
What's next
- In-process vector search with HNSW (Fjall) + cosine similarity (memory)
- Browser and edge runtime via WASM compilation
- Leader/follower clustering for high availability
The default public Node.js SDK path uses the TypeScript in-memory store for API exploration and local integration tests. The Rust core has Fjall-backed object, event, and queue persistence (pure Rust LSM-tree, 100K+ ops/s). Node apps can use the cloud driver to talk to a thingd sidecar through THINGDURL.
For browsers, edge runtimes, and non-Node.js environments, use the standalone @thingd/client package — a zero-dependency REST client.
| Entry point | Driver | Protocol | | --- | --- | --- | | ThingD.open() (Node.js) | memory / native / cloud | In-process / napi / HTTP REST | | @thingd/client (browser/edge) | cloud | HTTP REST | | thingd mcp / mcp-http | native | stdio MCP / Streamable HTTP |
Why thingd?
SQLite is excellent. It is small, fast, local, durable, and easy to deploy. But modern apps often need a friendlier layer above raw SQL.