{"id":48959127,"url":"https://github.com/svix/diom","last_synced_at":"2026-04-18T01:01:14.246Z","repository":{"id":351841712,"uuid":"1129062561","full_name":"svix/diom","owner":"svix","description":"💎 Diom - components platform for robust services","archived":false,"fork":false,"pushed_at":"2026-04-16T18:51:54.000Z","size":10986,"stargazers_count":3,"open_issues_count":128,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T19:26:58.837Z","etag":null,"topics":["cache","idempotency","kafka","kv","queue","raft","rate-limiting","redis"],"latest_commit_sha":null,"homepage":"https://diom.svix.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/svix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-06T14:53:09.000Z","updated_at":"2026-04-16T18:31:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/svix/diom","commit_stats":null,"previous_names":["svix/diom"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/svix/diom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svix%2Fdiom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svix%2Fdiom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svix%2Fdiom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svix%2Fdiom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/svix","download_url":"https://codeload.github.com/svix/diom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/svix%2Fdiom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31952206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"ssl_error","status_checked_at":"2026-04-18T00:39:20.671Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cache","idempotency","kafka","kv","queue","raft","rate-limiting","redis"],"created_at":"2026-04-18T01:00:47.780Z","updated_at":"2026-04-18T01:01:09.508Z","avatar_url":"https://github.com/svix.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003ca style=\"text-decoration: none\" href=\"https://diom.svix.com\"\u003e\n      \u003cimg width=\"120\" src=\"https://diom.svix.com/icon.svg\" /\u003e\n      \u003cp align=\"center\"\u003eDiom - Components for Robust Services\u003c/p\u003e\n    \u003c/a\u003e\n\u003c/h1\u003e\n\u003ch2 align=\"center\"\u003e\n  \u003ca href=\"https://diom.svix.com\"\u003eWebsite\u003c/a\u003e | \u003ca href=\"https://diom.svix.com/docs\"\u003eDocumentation\u003c/a\u003e | \u003ca href=\"https://svix.com/slack\"\u003eCommunity Slack\u003c/a\u003e\n\u003ch2\u003e\n\n![GitHub tag](https://img.shields.io/github/tag/svix/diom.svg)\n[![Build Status](https://github.com/svix/diom/workflows/Server%20CI/badge.svg)](https://github.com/svix/diom/actions)\n[![Server Security](https://github.com/svix/diom/actions/workflows/server-security.yml/badge.svg)](https://github.com/svix/diom/actions/workflows/server-security.yml)\n[![Twitter Follow](https://img.shields.io/twitter/follow/SvixHQ?style=social)](https://twitter.com/SvixHQ)\n[![Join our slack](https://img.shields.io/badge/Slack-join%20the%20community-blue?logo=slack\u0026style=social)](https://www.svix.com/slack/)\n\n## Diom is the backend components platform\n\nDiom (pronounced: dye-omm/daɪəm) is a backend components platform for building robust, idiomatic services.\n\nIt 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.\n\n\n[![PyPI](https://img.shields.io/pypi/v/diom.svg)](https://pypi.python.org/pypi/diom/)\n[![Crates.io](https://img.shields.io/crates/v/diom)](https://crates.io/crates/diom)\n[![NPM version](https://img.shields.io/npm/v/@diomhq/diom.svg)](https://www.npmjs.com/package/@diomhq/diom)\n[![Maven Central (Java)](https://img.shields.io/maven-central/v/com.svix/diom?label=maven-central%20(java))](https://search.maven.org/artifact/com.svix/diom)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/svix/diom)](https://pkg.go.dev/diom.com/go/diom)\n\n\nUseful links:\n\n  - [Website](https://diom.svix.com) - the Diom homepage.\n  - [Documentation](https://diom.svix.com/docs) - information on how to use Diom.\n  - [GitHub Issues](https://github.com/svix/diom/issues) - report issues and make suggestions.\n  - [Community Forum](https://github.com/svix/diom/discussions) - ask questions, and start discussions!\n  - [Slack](https://www.svix.com/slack/) - come and chat with us!\n\nTo stay up-to-date with new features and improvements be sure to watch our repo!\n\n## Interacting with Diom\n\nDiom ships with client libraries for a variety of languages, as well as a CLI named `diom`.\n\n\u003ctable style=\"table-layout:fixed; white-space: nowrap;\"\u003e\n  \u003cth colspan=\"6\"\u003e⚡️ Feature Breakdown ⚡️\u003c/th\u003e\n  \u003ctr\u003e\n    \u003cth\u003eLanguage\u003c/th\u003e\n    \u003cth\u003eOfficially Supported\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003eOther Notes\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/go/\"\u003eGo\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/python/\"\u003ePython\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003eSync and async.\u003c/th\u003e\n  \u003c/tr\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/javascript/\"\u003eTypeScript/JavaScript\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/java/\"\u003eJava\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003eAsync support planned.\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/kotlin/\"\u003eKotlin\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e🔜\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/ruby/\"\u003eRuby\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e🔜\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/csharp/\"\u003eC# (dotnet)\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e🔜\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/rust/\"\u003eRust\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/php/\"\u003ePHP\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e🔜\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth\u003e\u003ca href=\"https://github.com/svix/diom/tree/main/z-clients/cli/\"\u003eCLI\u003c/a\u003e\u003c/th\u003e\n    \u003cth\u003e✅\u003c/th\u003e\n    \u003cth colspan=\"4\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n\n\u003c/table\u003e\n\n## Trying out the CLI\n\nThe 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:\n\n```sh\nnpx @diomhq/diom-cli --help\n```\n\nOr install it globally:\n\n```sh\nnpm install -g @diomhq/diom-cli\ndiom --help\n```\n\n## Running the server\n\nDiom 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.\n\nThe `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)\n\n## Server configuration\n\nThere are two main ways to configure `diom-server`: environment vars, and a configuration file.\n\nConfiguring the server is described in the [configuration section of the docs](https://diom.svix.com/docs/self-hosting/configuration).\n\n## Observability using OpenTelemetry\n\nObservability configuration described in the [observability section of the docs](https://diom.svix.com/docs/self-hosting/observability).\n\n\n## Developing\n\nThis 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).\n\nA [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`.\n\nMany 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.\n\n### Building\n\n`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`\n\n### Making changes\n\nChanges 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvix%2Fdiom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsvix%2Fdiom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsvix%2Fdiom/lists"}