Source: https://seerepo.com/r/thanos-io/thanos/built
Markdown source: https://seerepo.com/r/thanos-io/thanos/built.md
Description: thanos is a Go repo built with net/http and React.

# What is thanos built with?

thanos is a Go repo built with net/http and React. It stores its data in github.com/thanos-io/objstore, github.com/bradfitz/gomemcache, HashiCorp, github.com/golang/groupcache, and github.com/redis/rueidis, signs people in with golang.org/x/oauth2, connects to Google, makes its content with sanitize-html, is tested with github.com/stretchr/testify, github.com/google/go-cmp, github.com/alicebob/miniredis/v2, go.uber.org/goleak, github.com/prometheus/compliance, and 10 more, and deploys with github.com/go-kit/log, Prometheus, github.com/prometheus/client_golang, github.com/prometheus/common, go.opentelemetry.io/otel/sdk, and 14 more. It has 190,225 written lines, with 282 test files.

Read on November 9, 2026, at commit df1f3f3.

Repository: https://github.com/thanos-io/thanos

## Frontend (/)

### Interface

- **[github.com/olekukonko/tablewriter](https://seerepo.com/uses/githubcom-olekukonko-tablewriter)**: 1 file

## Backend (/)

### The base

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

### Data

- **github.com/thanos-io/objstore**: 33 files
- **github.com/bradfitz/gomemcache**: 5 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 5 files
- **github.com/golang/groupcache**: 2 files
- **github.com/redis/rueidis**: 2 files

### Sign-in

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

### Services

- **[Google](https://seerepo.com/uses/google)**: 2 files · [pkg/clientconfig/http.go, line 32](https://github.com/thanos-io/thanos/blob/df1f3f3d5e72769dc639cb6006a7972b168672ce/pkg/clientconfig/http.go#L32)

## Support (/)

### Testing

- **github.com/stretchr/testify**: 72 files
- **github.com/google/go-cmp**: 5 files
- **github.com/alicebob/miniredis/v2**: 4 files
- **go.uber.org/goleak**: 3 files
- **github.com/prometheus/compliance**: 2 files
- **github.com/chromedp/cdproto**: 1 file
- **github.com/chromedp/chromedp**: 1 file
- **github.com/fortytw2/leaktest**: 1 file
- **github.com/onsi/gomega**: 1 file

### Deploy

- **github.com/go-kit/log**: 138 files
- **[Prometheus](https://seerepo.com/uses/prometheus)**: 129 files
- **github.com/prometheus/client_golang**: 101 files
- **[github.com/prometheus/common](https://seerepo.com/uses/githubcom-prometheus-common)**: 57 files
- **[go.opentelemetry.io/otel/sdk](https://seerepo.com/uses/goopentelemetryio-otel-sdk)**: 7 files
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 7 files
- **[go.opentelemetry.io/otel/trace](https://seerepo.com/uses/goopentelemetryio-otel-trace)**: 5 files
- **[github.com/coreos/go-systemd/v22](https://seerepo.com/uses/githubcom-coreos-go-systemd-v22)**: 2 files
- **github.com/mwitkow/go-conntrack**: 2 files
- **github.com/prometheus/alertmanager**: 2 files
- **go.opentelemetry.io/otel/exporters/jaeger**: 2 files
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace-otlptracegrpc)**: 2 files
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace-otlptracehttp)**: 2 files
- **github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace**: 1 file
- **github.com/prometheus/client_golang/exp**: 1 file
- **[github.com/prometheus/client_model](https://seerepo.com/uses/githubcom-prometheus-client-model)**: 1 file
- **github.com/tjhop/slog-gokit**: 1 file
- **github.com/uber/jaeger-client-go**: 1 file
- **[go.opentelemetry.io/otel/exporters/otlp/otlptrace](https://seerepo.com/uses/goopentelemetryio-otel-exporters-otlp-otlptrace)**: 1 file

### Tools

- **github.com/alecthomas/kingpin/v2**: 5 files
- **github.com/felixge/fgprof**: 1 file

### Other

- **protobuf**
- **structtag**
- **github.com/efficientgo/core**: 163 files
- **github.com/pkg/errors**: 135 files
- **github.com/opentracing/opentracing-go**: 53 files
- **github.com/oklog/ulid/v2**: 37 files
- **gopkg.in/yaml.v2**: 26 files
- **golang.org/x/sync**: 16 files
- **github.com/oklog/run**: 14 files
- **github.com/cespare/xxhash/v2**: 11 files
- **github.com/gogo/protobuf**: 9 files
- **github.com/grpc-ecosystem/go-grpc-middleware/v2**: 9 files
- **Uber**: 9 files
- **go.opentelemetry.io/collector/pdata**: 7 files
- **github.com/alecthomas/units**: 6 files
- **github.com/klauspost/compress**: 5 files
- **github.com/gogo/status**: 4 files
- **github.com/golang/snappy**: 4 files
- **gopkg.in/yaml.v3**: 4 files
- **github.com/json-iterator/go**: 3 files
- **github.com/sony/gobreaker**: 3 files
- **github.com/facette/natsort**: 2 files
- **github.com/fsnotify/fsnotify**: 2 files
- **github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus**: 2 files
- **github.com/jpillora/backoff**: 2 files
- **github.com/miekg/dns**: 2 files
- **golang.org/x/net**: 2 files
- **VictoriaMetrics**: 2 files
- **github.com/blang/semver/v4**: 1 file
- **github.com/caio/go-tdigest**: 1 file
- **github.com/cristalhq/hedgedhttp**: 1 file
- **github.com/dustin/go-humanize**: 1 file
- **github.com/go-openapi/strfmt**: 1 file
- **github.com/google/uuid**: 1 file
- **github.com/KimMachineGun/automemlimit**: 1 file
- **github.com/mitchellh/go-ps**: 1 file
- **github.com/opentracing/basictracer-go**: 1 file
- **github.com/prometheus/exporter-toolkit**: 1 file
- **github.com/prometheus/otlptranslator**: 1 file
- **github.com/seiflotfy/cuckoofilter**: 1 file
- **go.opentelemetry.io/collector/semconv**: 1 file
- **go.opentelemetry.io/contrib/propagators/autoprop**: 1 file
- **go.opentelemetry.io/contrib/samplers/jaegerremote**: 1 file
- **go.opentelemetry.io/proto/otlp**: 1 file
- **golang.org/x/crypto**: 1 file
- **golang.org/x/text**: 1 file
- **golang.org/x/time**: 1 file
- **google.golang.org/grpc/examples**: 1 file
- **google.golang.org/protobuf**: 1 file

## Frontend (pkg/ui/react-app)

### The base

- **[React](https://seerepo.com/uses/react)**: 54 files

### Interface

- **reactstrap**: 39 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 2 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 1 file
- **jquery.flot.tooltip**: 1 file
- **rc-slider**: 1 file
- **[react-copy-to-clipboard](https://seerepo.com/uses/react-copy-to-clipboard)**: 1 file
- **react-infinite-scroll-component**: 1 file
- **react-resize-detector**: 1 file
- **[react-select](https://seerepo.com/uses/react-select)**: 1 file
- **tempusdominus-bootstrap-4**: 1 file
- **tempusdominus-core**: 1 file

### Icons

- **[Font Awesome](https://seerepo.com/uses/font-awesome)**: 11 files

## Support (pkg/ui/react-app)

### Content

- **[sanitize-html](https://seerepo.com/uses/sanitize-html)**: 1 file

### Testing

- **enzyme**: 28 files
- **enzyme-to-json**: 4 files
- **jest-fetch-mock**: 4 files
- **sinon**: 2 files
- **@testing-library/react-hooks**: 1 file
- **enzyme-adapter-react-16**: 1 file

### Other

- **moment**: 7 files
- **nexucis**: 5 files
- **jQuery**: 4 files
- **moment-timezone**: 4 files
- **use-query-params**: 2 files
- **css.escape**: 1 file
- **mutationobserver-shim**: 1 file
- **use-media**: 1 file

## Other repos with a similar stack

- [prometheus/prometheus](https://seerepo.com/r/prometheus/prometheus/built): Google, React, golang.org/x/oauth2, Prometheus, github.com/prometheus/client_golang, go.opentelemetry.io/otel/sdk, OpenTelemetry, go.opentelemetry.io/otel/trace, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, github.com/prometheus/client_model, go.opentelemetry.io/otel/exporters/otlp/otlptrace, CodeMirror, @lezer/highlight, react-copy-to-clipboard, react-infinite-scroll-component, react-resize-detector, Font Awesome, sanitize-html · [Compare](https://seerepo.com/compare/prometheus/prometheus/vs/thanos-io/thanos)
- [traefik/traefik](https://seerepo.com/r/traefik/traefik/built): github.com/go-kit/log, Prometheus, go.opentelemetry.io/otel/sdk, OpenTelemetry, go.opentelemetry.io/otel/trace, github.com/coreos/go-systemd/v22, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, github.com/prometheus/client_model, go.opentelemetry.io/otel/exporters/otlp/otlptrace · [Compare](https://seerepo.com/compare/thanos-io/thanos/vs/traefik/traefik)
- [etcd-io/etcd](https://seerepo.com/r/etcd-io/etcd/built): net/http, github.com/olekukonko/tablewriter, Prometheus, go.opentelemetry.io/otel/sdk, OpenTelemetry, github.com/coreos/go-systemd/v22, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc, github.com/prometheus/client_model · [Compare](https://seerepo.com/compare/etcd-io/etcd/vs/thanos-io/thanos)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): net/http, Google, React, golang.org/x/oauth2, OpenTelemetry, go.opentelemetry.io/otel/trace, react-copy-to-clipboard · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/thanos-io/thanos)
- [moby/moby](https://seerepo.com/r/moby/moby/built): net/http, Prometheus, go.opentelemetry.io/otel/sdk, OpenTelemetry, go.opentelemetry.io/otel/trace, github.com/coreos/go-systemd/v22, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp · [Compare](https://seerepo.com/compare/moby/moby/vs/thanos-io/thanos)
- [ethereum/go-ethereum](https://seerepo.com/r/ethereum/go-ethereum/built): net/http, go.opentelemetry.io/otel/sdk, OpenTelemetry, go.opentelemetry.io/otel/trace, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc, go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, go.opentelemetry.io/otel/exporters/otlp/otlptrace · [Compare](https://seerepo.com/compare/ethereum/go-ethereum/vs/thanos-io/thanos)

## Frequently asked questions

### What language is thanos written in?

thanos is written in Go, with 190,225 written lines.

### What framework does thanos use?

thanos is built with net/http and React.

### What database does thanos use?

thanos stores its data in github.com/thanos-io/objstore, github.com/bradfitz/gomemcache, HashiCorp, github.com/golang/groupcache, and github.com/redis/rueidis.

### What does thanos sign people in with?

thanos signs people in with golang.org/x/oauth2.

### What services does thanos use?

thanos connects to Google.

The proof: [pkg/clientconfig/http.go, line 32](https://github.com/thanos-io/thanos/blob/df1f3f3d5e72769dc639cb6006a7972b168672ce/pkg/clientconfig/http.go#L32)

### Does thanos have tests?

Yes. thanos has 282 test files and is tested with github.com/stretchr/testify, github.com/google/go-cmp, github.com/alicebob/miniredis/v2, go.uber.org/goleak, github.com/prometheus/compliance, github.com/chromedp/cdproto, github.com/chromedp/chromedp, github.com/fortytw2/leaktest, github.com/onsi/gomega, enzyme, enzyme-to-json, jest-fetch-mock, sinon, @testing-library/react-hooks, and enzyme-adapter-react-16.

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

The ones that share most of its stack: prometheus/prometheus, traefik/traefik, and etcd-io/etcd.

## 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.
