diff --git a/.github/logos/dragonfly.svg b/.github/logos/dragonfly.svg
new file mode 100644
index 0000000..da32712
--- /dev/null
+++ b/.github/logos/dragonfly.svg
@@ -0,0 +1 @@
+
diff --git a/README.md b/README.md
index 923dffb..15e23c4 100644
--- a/README.md
+++ b/README.md
@@ -96,6 +96,7 @@ All of it is data. None of it ships in the binary.
| | Service | What it is |
|:-:|---|---|
|
| `beanstalkd` | Beanstalkd work queue |
+|
| `dragonfly` | Dragonfly, the Redis-compatible cache (coexists with Redis) |
|
| `kafka` | Apache Kafka event streaming broker |
|
| `memcached` | Memcached in-memory cache |
|
| `mercure` | Mercure hub for server-sent events, the Symfony realtime transport |
diff --git a/schema/2/services/index.json b/schema/2/services/index.json
index 9bc2331..e49d66c 100644
--- a/schema/2/services/index.json
+++ b/schema/2/services/index.json
@@ -385,6 +385,16 @@
"icon": "cube",
"color": "#6368c2"
},
+ {
+ "name": "dragonfly",
+ "description": "Dragonfly in-memory store (Redis-compatible)",
+ "family": "dragonfly",
+ "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2",
+ "category": "cache",
+ "icon": "bolt",
+ "color": "#5a3ee0",
+ "env_role": "redis"
+ },
{
"name": "spamassassin",
"description": "SpamAssassin scoring backend for the Mailpit catcher",
diff --git a/services/dragonfly.svg b/services/dragonfly.svg
new file mode 100644
index 0000000..b5d16c7
--- /dev/null
+++ b/services/dragonfly.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/services/dragonfly.yaml b/services/dragonfly.yaml
new file mode 100644
index 0000000..6876f87
--- /dev/null
+++ b/services/dragonfly.yaml
@@ -0,0 +1,26 @@
+name: dragonfly
+description: Dragonfly in-memory store (Redis-compatible)
+family: dragonfly
+env_role: redis
+image: ghcr.io/dragonflydb/dragonfly:v2.0.2
+update_strategy: minor
+# Dragonfly starts one io thread per core and refuses to run unless it has
+# 256MiB for each, so a many-core machine exits at start; two threads and a
+# 1GiB cap are plenty for local work. The entrypoint prepends the binary.
+exec: --proactor_threads=2 --maxmemory=1gb
+# Dragonfly speaks the Redis protocol on 6379 inside the container; it is
+# published on 6381 so it can coexist with the redis and valkey presets.
+ports:
+ - "6381:6379"
+data_dir: /data
+env_vars:
+ - REDIS_HOST=lerd-dragonfly
+ - REDIS_PORT=6379
+ - REDIS_PASSWORD=null
+ - CACHE_STORE=redis
+ - SESSION_DRIVER=redis
+ - QUEUE_CONNECTION=redis
+connection_url: redis://127.0.0.1:6381
+category: cache
+color: "#5a3ee0"
+icon: bolt
diff --git a/services/index.json b/services/index.json
index 7e5c34c..5618bbb 100644
--- a/services/index.json
+++ b/services/index.json
@@ -381,6 +381,16 @@
"category": "testing",
"icon": "cube",
"color": "#6368c2"
+ },
+ {
+ "name": "dragonfly",
+ "description": "Dragonfly in-memory store (Redis-compatible)",
+ "family": "dragonfly",
+ "image": "ghcr.io/dragonflydb/dragonfly:v2.0.2",
+ "category": "cache",
+ "icon": "bolt",
+ "color": "#5a3ee0",
+ "env_role": "redis"
}
]
}