Qortora · Search · Indexed page

diom.svix.comFetched 2026-08-13T18:27:18Z

Diom: Components for robust services

Cache, key-value storage, idempotency, rate limiting, msgs, and more. The components your service needs.

Open original source · Full cached text

Diom: Components for robust services Open source Components for robust services Cache, key-value storage, idempotency, rate limiting, msgs, and more. The building blocks your service needs available from the Diom components platform. Get startedView docs Built by One binary for the primitives you keep rebuilding Every backend primitive you need, without the infrastructure sprawl. One binary, self-hosted, and open-source. The common components you need Cache, rate limiting, idempotency, queues, streams, key-value, and more. All in a single service, one SDK, and a consistent API. Patterns are well established, there's no reason why to build them from scratch. Replaces Redis, Kafka, custom code, and more… Avoid infrastructure sprawl. Diom can replace Redis, Kafka, RabbitMQ, and a lot of custom code for many use-cases. Less to run, less to learn, less to maintain. Just one open-source binary. Highly-available and easy to operate Self-contained, manages its own storage, and can be run as a single node or a highly-available cluster. Focusing on easy operations for 95% of products, instead of benchmarking against FAANG scale. Robust by default Use pre-built idiomatic components rather than building fragile versions on top of Postgres and Redis, or running a zoo of specialized services that each need their own backups, monitoring, and maintenance. Idiomatic building blocks The building blocks you need for building robust backends. CacheKVIdempotencyRate LimitMsgsPlannedAuth TokenPlannedFeature FlagsPlannedSettingsSuggestions Cache Fast, distributed caching with TTL support. Keep hot data close to your application and reduce load on your primary data store. Diom caching uses a hybrid of memory and disk storage with configurable backing (ramfs, ephemeral SSDs, persistent disk) for large cache sizes and fast access. Try it liveView docs Set and get cache values with a TTL Rust client.cache().set( "my-key".to_string(), b"cached value".to_vec(), CacheSetIn::new(Duration::from_secs(10)) ) .await?; let out = client.cache() .get("my-key".to_string(), CacheGetIn::new()) .await?; match out.value { Some(bytes) => println!("Got: {}", String::from_utf8_lossy(&bytes)), None => println!("Key not found"), } Built for your backend needs Works with most common deployment environments and frameworks. High availability Supports deploying as a Raft-powered cluster to stay up when a node fails and have zero-downtime upgrades. Stateless HTTP API Works in every environment and with the wider ecosystem. No proprietary protocols or special drivers required. Fine-grained authorization Per-tenant and per-user data isolation at the data layer, enabling secure multi-tenancy and least-privilege setups out of the box. Low latency Having the implementation and the storage layer on the same node enables low latency operations (e.g. 100μs hot reads). Developer experience SDKs for the most popular languages (with more planned), so you can integrate Diom into your stack with minimal friction. Easy to operate Easy to setup, monitor, and operate. Self-healing clusters, built-in backups, and more. Built with operations in mind. Built with 100% safe Rust Written entirely in safe, async Rust for memory safety, fearless concurrency, and high performance. Open source Diom is free and open source software with the source code available on GitHub. Contributions and suggestions are welcome! Diom Playground Try Diom live in a playground environment. Use the CLI from the browser or from your own terminal. diom — sandbox Connected to sandbox.diom.dev:8443 Type Diom CLI commands below (same as diom …). Try: kv get <key>, help, or --help ———————————————————————————————————————————————— diom> kv set greeting "Hello, world!" OK diom> kv get greeting "Hello, world!" diom> cache set user:42 '{"name":"Ada"}' --ttl 3600 OK diom>Enter command… Try it live Diom Cloud Diom Cloud is a fully managed version of Diom, with multi-region support. Coming soon. client.cache().set( "my-key".to_string(), b"cached value".to_vec(), CacheSetIn::new(Duration::from_secs(10)) ) .await?; let out = client.cache() .get("my-key".to_string(), CacheGetIn::new()) .await?; match out.value { Some(bytes) => println!("Got: {}", String::from_utf8_lossy(&bytes)), None => println!("Key not found"), }