Source: https://seerepo.com/r/ory/hydra/built
Markdown source: https://seerepo.com/r/ory/hydra/built.md
Description: hydra is a Go repo built with net/http. It stores its data in Postgres and SQLite and reaches it with github.com/jmoiron/sqlx.

# What is hydra built with?

hydra is a Go repo built with net/http. It stores its data in Postgres and SQLite, reaches it with github.com/jmoiron/sqlx, signs people in with github.com/gorilla/sessions, golang.org/x/oauth2, github.com/golang-jwt/jwt/v5, jsonwebtoken, and github.com/lestrrat-go/jwx, validates its data with govalidator and github.com/asaskevich/govalidator, is tested with github.com/stretchr/testify, Uber, github.com/go-faker/faker/v4, goleak, and Ory, deploys with OpenTelemetry, go.opentelemetry.io/otel/trace, github.com/sirupsen/logrus, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp, and 8 more, and uses pgx, ristretto, github.com/dgraph-io/ristretto/v2, github.com/cockroachdb/cockroach-go/v2, and MySQL. It has 114,964 written lines, with 268 test files.

Read on November 6, 2026, at commit 4174065.

Repository: https://github.com/ory/hydra

## Backend (/)

### The base

- **[net/http](https://seerepo.com/uses/net-http)**

### Data

- **[pgx](https://seerepo.com/uses/pgx)**
- **ristretto**
- **[Postgres](https://seerepo.com/uses/postgres)**: 2 files · [driver/registry_sql.go, line 16](https://github.com/ory/hydra/blob/4174065ffb052799890f7480f5360a877a67ffc1/driver/registry_sql.go#L16)

### Sign-in

- **github.com/gorilla/sessions**: 4 files
- **[golang.org/x/oauth2](https://seerepo.com/uses/golangorg-x-oauth2)**: 4 files
- **[github.com/golang-jwt/jwt/v5](https://seerepo.com/uses/githubcom-golang-jwt-jwt-v5)**: 2 files
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 1 file

## Support (/)

### Validation

- **govalidator**

### Testing

- **github.com/stretchr/testify**: 97 files
- **Uber**: 5 files
- **github.com/go-faker/faker/v4**: 2 files

### Deploy

- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 9 files
- **[go.opentelemetry.io/otel/trace](https://seerepo.com/uses/goopentelemetryio-otel-trace)**: 8 files
- **[github.com/sirupsen/logrus](https://seerepo.com/uses/githubcom-sirupsen-logrus)**: 2 files
- **[go.opentelemetry.io/otel/sdk](https://seerepo.com/uses/goopentelemetryio-otel-sdk)**: 2 files
- **[go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://seerepo.com/uses/goopentelemetryio-contrib-instrumentation-net-http-otelhttp)**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace-otlptracehttp)**: 1 file

### Tools

- **github.com/spf13/cobra**: 41 files

### Other

- **[Google](https://seerepo.com/uses/google)**
- **net**
- **text**
- **github.com/pkg/errors**: 46 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 5 files
- **github.com/rs/cors**: 4 files
- **github.com/tidwall/gjson**: 4 files
- **github.com/mohae/deepcopy**: 3 files
- **github.com/tidwall/sjson**: 3 files
- **dayjs**: 2 files
- **github.com/pborman/uuid**: 2 files
- **golang.org/x/sync**: 2 files
- **github.com/fatih/structs**: 1 file
- **github.com/gobwas/glob**: 1 file
- **github.com/miekg/pkcs11**: 1 file
- **github.com/spf13/pflag**: 1 file
- **github.com/tomnomnom/linkheader**: 1 file
- **github.com/toqueteos/webbrowser**: 1 file
- **github.com/twmb/murmur3**: 1 file
- **go.uber.org/automaxprocs**: 1 file
- **golang.org/x/crypto**: 1 file
- **golang.org/x/exp**: 1 file
- **uuid**: 1 file

## Backend (fosite)

### Data

- **github.com/dgraph-io/ristretto/v2**: 1 file

### Sign-in

- **[golang.org/x/oauth2](https://seerepo.com/uses/golangorg-x-oauth2)**: 15 files

## Support (fosite)

### Validation

- **github.com/asaskevich/govalidator**: 1 file

### Testing

- **github.com/stretchr/testify**: 100 files
- **Uber**: 38 files

### Deploy

- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 12 files
- **[go.opentelemetry.io/otel](https://seerepo.com/uses/goopentelemetryio-otel)**: 4 files

### Other

- **github.com/pkg/errors**: 25 files
- **golang.org/x/text**: 7 files
- **[Google](https://seerepo.com/uses/google)**: 5 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 4 files
- **github.com/mohae/deepcopy**: 3 files
- **github.com/tidwall/gjson**: 1 file
- **golang.org/x/crypto**: 1 file
- **golang.org/x/net**: 1 file

## Backend (oryx)

### Data

- **[pgx](https://seerepo.com/uses/pgx)**
- **github.com/dgraph-io/ristretto/v2**: 5 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [oryx/sqlcon/error_sqlite.go, line 10](https://github.com/ory/hydra/blob/4174065ffb052799890f7480f5360a877a67ffc1/oryx/sqlcon/error_sqlite.go#L10)
- **github.com/cockroachdb/cockroach-go/v2**: 1 file
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [oryx/go.mod, line 21](https://github.com/ory/hydra/blob/4174065ffb052799890f7480f5360a877a67ffc1/oryx/go.mod#L21)
- **[Postgres](https://seerepo.com/uses/postgres)**: 1 file · [driver/registry_sql.go, line 16](https://github.com/ory/hydra/blob/4174065ffb052799890f7480f5360a877a67ffc1/driver/registry_sql.go#L16)

### Data access

- **github.com/jmoiron/sqlx**: 3 files

### Sign-in

- **[github.com/golang-jwt/jwt/v5](https://seerepo.com/uses/githubcom-golang-jwt-jwt-v5)**: 1 file
- **github.com/lestrrat-go/jwx**: 1 file
- **[golang.org/x/oauth2](https://seerepo.com/uses/golangorg-x-oauth2)**: 1 file

## Support (oryx)

### Testing

- **goleak**
- **Uber**
- **github.com/stretchr/testify**: 17 files
- **Ory**: 1 file

### Deploy

- **[github.com/prometheus/client_model](https://seerepo.com/uses/githubcom-prometheus-client-model)**
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 17 files
- **[go.opentelemetry.io/otel/trace](https://seerepo.com/uses/goopentelemetryio-otel-trace)**: 14 files
- **[Prometheus](https://seerepo.com/uses/prometheus)**: 6 files
- **[github.com/sirupsen/logrus](https://seerepo.com/uses/githubcom-sirupsen-logrus)**: 3 files
- **[go.opentelemetry.io/otel/sdk](https://seerepo.com/uses/goopentelemetryio-otel-sdk)**: 3 files
- **[go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://seerepo.com/uses/goopentelemetryio-contrib-instrumentation-net-http-otelhttp)**: 2 files
- **github.com/grpc-ecosystem/go-grpc-prometheus**: 1 file
- **[github.com/moby/moby/client](https://seerepo.com/uses/githubcom-moby-moby-client)**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace)**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace-otlptracehttp)**: 1 file
- **go.opentelemetry.io/otel/exporters/zipkin**: 1 file

### Tools

- **github.com/spf13/cobra**: 15 files
- **github.com/pkg/profile**: 1 file

### Other

- **deepcopy**
- **go-toml**
- **go.opentelemetry.io/proto/otlp**
- **protobuf**
- **rawbytes**
- **websocket**
- **[yaml](https://seerepo.com/uses/yaml)**
- **github.com/pkg/errors**: 67 files
- **github.com/tidwall/gjson**: 11 files
- **github.com/spf13/pflag**: 8 files
- **golang.org/x/crypto**: 7 files
- **github.com/knadh/koanf/v2**: 5 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 5 files
- **github.com/tidwall/sjson**: 4 files
- **github.com/knadh/koanf/parsers/json**: 3 files
- **github.com/rs/cors**: 3 files
- **[Google](https://seerepo.com/uses/google)**: 3 files
- **github.com/fsnotify/fsnotify**: 2 files
- **github.com/gobwas/glob**: 2 files
- **github.com/google/go-jsonnet**: 2 files
- **github.com/inhies/go-bytesize**: 2 files
- **github.com/knadh/koanf/maps**: 2 files
- **github.com/knadh/koanf/providers/posflag**: 2 files
- **github.com/spf13/cast**: 2 files
- **go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace**: 2 files
- **golang.org/x/sync**: 2 files
- **github.com/evanphx/json-patch/v5**: 1 file
- **github.com/goccy/go-yaml**: 1 file
- **github.com/gofrs/flock**: 1 file
- **github.com/knadh/koanf/parsers/toml**: 1 file
- **github.com/landlock-lsm/go-landlock**: 1 file
- **github.com/Masterminds/sprig/v3**: 1 file
- **go.opentelemetry.io/contrib/samplers/jaegerremote**: 1 file
- **golang.org/x/net**: 1 file

## Other repos with a similar stack

- [istio/istio](https://seerepo.com/r/istio/istio/built): net/http, golang.org/x/oauth2, OpenTelemetry, go.opentelemetry.io/otel/trace, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, go.opentelemetry.io/otel, github.com/prometheus/client_model, Prometheus, github.com/grpc-ecosystem/go-grpc-prometheus, go.opentelemetry.io/otel/exporters/otlp/otlptrace · [Compare](https://seerepo.com/compare/istio/istio/vs/ory/hydra)
- [prometheus/prometheus](https://seerepo.com/r/prometheus/prometheus/built): golang.org/x/oauth2, OpenTelemetry, go.opentelemetry.io/otel/trace, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, github.com/prometheus/client_model, Prometheus, github.com/moby/moby/client, go.opentelemetry.io/otel/exporters/otlp/otlptrace · [Compare](https://seerepo.com/compare/ory/hydra/vs/prometheus/prometheus)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): net/http, pgx, Postgres, MySQL, golang.org/x/oauth2, github.com/golang-jwt/jwt/v5, OpenTelemetry, go.opentelemetry.io/otel/trace, go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/ory/hydra)
- [moby/moby](https://seerepo.com/r/moby/moby/built): net/http, Postgres, OpenTelemetry, go.opentelemetry.io/otel/trace, github.com/sirupsen/logrus, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, Prometheus · [Compare](https://seerepo.com/compare/moby/moby/vs/ory/hydra)
- [traefik/traefik](https://seerepo.com/r/traefik/traefik/built): OpenTelemetry, go.opentelemetry.io/otel/trace, github.com/sirupsen/logrus, go.opentelemetry.io/otel/sdk, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, github.com/prometheus/client_model, Prometheus, github.com/moby/moby/client, go.opentelemetry.io/otel/exporters/otlp/otlptrace · [Compare](https://seerepo.com/compare/ory/hydra/vs/traefik/traefik)
- [photoprism/photoprism](https://seerepo.com/r/photoprism/photoprism/built): pgx, Postgres, SQLite, MySQL, golang.org/x/oauth2, github.com/golang-jwt/jwt/v5, github.com/sirupsen/logrus, github.com/prometheus/client_model, Prometheus · [Compare](https://seerepo.com/compare/ory/hydra/vs/photoprism/photoprism)

## Frequently asked questions

### What language is hydra written in?

hydra is written in Go, with 114,964 written lines.

### What framework does hydra use?

hydra is built with net/http.

### What database does hydra use?

hydra stores its data in Postgres and SQLite and reaches it with github.com/jmoiron/sqlx.

The proof: [driver/registry_sql.go, line 16](https://github.com/ory/hydra/blob/4174065ffb052799890f7480f5360a877a67ffc1/driver/registry_sql.go#L16)

### What does hydra sign people in with?

hydra signs people in with github.com/gorilla/sessions, golang.org/x/oauth2, github.com/golang-jwt/jwt/v5, jsonwebtoken, and github.com/lestrrat-go/jwx.

### What services does hydra use?

hydra uses pgx, ristretto, github.com/dgraph-io/ristretto/v2, github.com/cockroachdb/cockroach-go/v2, and MySQL.

### Does hydra have tests?

Yes. hydra has 268 test files and is tested with github.com/stretchr/testify, Uber, github.com/go-faker/faker/v4, goleak, and Ory.

### Which repos have a stack like hydra's?

The ones that share most of its stack: istio/istio, prometheus/prometheus, and infiniflow/ragflow.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
