https://github.com/svix/diom
💎 Diom - components platform for robust services
https://github.com/svix/diom
cache idempotency kafka kv queue raft rate-limiting redis
Last synced: 2 months ago
JSON representation
💎 Diom - components platform for robust services
- Host: GitHub
- URL: https://github.com/svix/diom
- Owner: svix
- License: mit
- Created: 2026-01-06T14:53:09.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-04-16T18:51:54.000Z (2 months ago)
- Last Synced: 2026-04-16T19:26:58.837Z (2 months ago)
- Topics: cache, idempotency, kafka, kv, queue, raft, rate-limiting, redis
- Language: Rust
- Homepage: https://diom.svix.com
- Size: 10.5 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 128
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
Diom - Components for Robust Services
Website | Documentation | Community Slack

[](https://github.com/svix/diom/actions)
[](https://github.com/svix/diom/actions/workflows/server-security.yml)
[](https://twitter.com/SvixHQ)
[](https://www.svix.com/slack/)
## Diom is the backend components platform
Diom (pronounced: dye-omm/daɪəm) is a backend components platform for building robust, idiomatic services.
It offers high-level APIs for commonly used components such as cache, rate-limiting, idempotency, queue, and more. It has zero runtime dependencies, uses its own storage, and can be run as a single node or a highly-available cluster.
[](https://pypi.python.org/pypi/diom/)
[](https://crates.io/crates/diom)
[](https://www.npmjs.com/package/@diomhq/diom)
[)](https://search.maven.org/artifact/com.svix/diom)
[](https://pkg.go.dev/diom.com/go/diom)
Useful links:
- [Website](https://diom.svix.com) - the Diom homepage.
- [Documentation](https://diom.svix.com/docs) - information on how to use Diom.
- [GitHub Issues](https://github.com/svix/diom/issues) - report issues and make suggestions.
- [Community Forum](https://github.com/svix/diom/discussions) - ask questions, and start discussions!
- [Slack](https://www.svix.com/slack/) - come and chat with us!
To stay up-to-date with new features and improvements be sure to watch our repo!
## Interacting with Diom
Diom ships with client libraries for a variety of languages, as well as a CLI named `diom`.
⚡️ Feature Breakdown ⚡️
Language
Officially Supported
Other Notes
Go
✅
Python
✅
Sync and async.
TypeScript/JavaScript
✅
Java
✅
Async support planned.
Kotlin
🔜
Ruby
🔜
C# (dotnet)
🔜
Rust
✅
PHP
🔜
CLI
✅
## Trying out the CLI
The Diom CLI is published on npm as [`@diomhq/diom-cli`](https://www.npmjs.com/package/@diomhq/diom-cli). You can run it directly with `npx` without installing anything:
```sh
npx @diomhq/diom-cli --help
```
Or install it globally:
```sh
npm install -g @diomhq/diom-cli
diom --help
```
## Running the server
Diom is designed to be run on a cluster of machines with stable network identities (e.g., a Kubernetes StatefulSet). It's recommended to run it as a three-node cluster for high-availability and easy operations, but it can also run as a single-node.
The `diom-server` binary is configured through a TOML file which can be passed with the `--config-path` command line option. Settings can also be overridden by setting environment variables; for more information, see [ENVIRONMENT_VARIABLES.md](./ENVIRONMENT_VARIABLES.md)
## Server configuration
There are two main ways to configure `diom-server`: environment vars, and a configuration file.
Configuring the server is described in the [configuration section of the docs](https://diom.svix.com/docs/self-hosting/configuration).
## Observability using OpenTelemetry
Observability configuration described in the [observability section of the docs](https://diom.svix.com/docs/self-hosting/observability).
## Developing
This application is written in Rust and targets the latest stable release of Rust. You should install Rust with `rustup` or your favorite package manager. This application is broken up into multiple crates using [Cargo workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html).
A [prek](https://prek.j178.dev/) config is included and all commits are expected to pass pre-commit checks (as well as more-intensive CI checks run through Github Actions). You should install `prek` and then configure it to run automatically on commits to this repo with `prek install`.
Many helpful commands are provided in the [justfile](.justfile) which can be invoked using [Just](https://github.com/casey/just), so you should make sure to have that installed too.
### Building
`cargo build` in the root should build the server by default. If you want the local CLI, you'll also need `cargo build --package diom-cli`
### Making changes
Changes should be done in branches prefixed with your username (e.g., `johnsmith/my-cool-feature`) and should have commit messages that describe the change. Prior to sending any PRs, commits must pass `prek`, `just lint`, and `just test`. Any changes that affect the client libraries / CLI will require running `just codegen` to rebuild all client libraries.