diff --git a/lib/fed/middlewares/eqp/sync.go b/lib/fed/middlewares/eqp/sync.go
index eaafdb0e7811ab2ff6c39e28129817d3b38abba5..2cc1be7dfc5ce6fa34d3a3be78c5ebe4a8c0e71b 100644
--- a/lib/fed/middlewares/eqp/sync.go
+++ b/lib/fed/middlewares/eqp/sync.go
@@ -1,11 +1,10 @@
 package eqp
 
 import (
-	"slices"
-
 	"gfx.cafe/gfx/pggat/lib/bouncer/backends/v0"
 	"gfx.cafe/gfx/pggat/lib/fed"
 	packets "gfx.cafe/gfx/pggat/lib/fed/packets/v3.0"
+	"gfx.cafe/gfx/pggat/lib/util/slices"
 )
 
 func preparedStatementsEqual(a, b *packets.Parse) bool {
diff --git a/lib/util/slices/equal.go b/lib/util/slices/equal.go
new file mode 100644
index 0000000000000000000000000000000000000000..d6f06964f3432ad22a7dfb6bf7e971206fa125be
--- /dev/null
+++ b/lib/util/slices/equal.go
@@ -0,0 +1,16 @@
+package slices
+
+func Equal[T comparable](a, b []T) bool {
+	if len(a) != len(b) {
+		return false
+	}
+
+	for i, av := range a {
+		bv := b[i]
+		if av != bv {
+			return false
+		}
+	}
+
+	return true
+}
diff --git a/presets/digitalocean_databases.Caddyfile b/presets/digitalocean_databases.Caddyfile
index 813c0ef6bf4aa38c20720ee244930296d9fe0931..c125794503d523a549c55a4944289f6258243abe 100644
--- a/presets/digitalocean_databases.Caddyfile
+++ b/presets/digitalocean_databases.Caddyfile
@@ -1,5 +1,16 @@
 :5432 {
 	ssl
 
-	discovery digitalocean {$PGGAT_DO_API_KEY}
+    @uniswap_ro {
+        user uniswap_ro
+    }
+
+    parameter @uniswap_ro hybrid.mode=ro
+    user @uniswap_ro uniswap
+
+	discovery {
+	    discoverer digitalocean {$PGGAT_DO_API_KEY}
+
+	    pool hybrid
+	}
 }