Source: https://seerepo.com/r/comet-ml/opik/built
Markdown source: https://seerepo.com/r/comet-ml/opik/built.md
Description: opik is a Python repo built with FastAPI, JAX-RS, Flask, werkzeug, flask-cors, and 5 more. It signs people in with itsdangerous and stores files in AWS S3.

# What is opik built with?

opik is a Python repo built with FastAPI, JAX-RS, Flask, werkzeug, flask-cors, and 5 more. It signs people in with itsdangerous, stores files in AWS S3, uses AI through accelerate, spaCy, tiktoken, tokenizers, litellm, and 10 more, measures its use with PostHog, watches its errors with Sentry, makes its content with markdown-it-py, markupsafe, jinja2, pillow, mustache, and 10 more, validates its data with annotated-types, referencing, Pydantic, jsonschema, pydantic-core, and 3 more, is tested with com.google.guava:guava-testlib, pytest-timeout, pytest-xdist, reactor-test, testcontainers-bom, and 9 more, deploys with Gunicorn, OpenTelemetry, opentelemetry-instrumentation-flask, opentelemetry-instrumentation-logging, opentelemetry-instrumentation-requests, and 5 more, and uses redisson, s3, Redis, MySQL, and Hugging Face. It has 1,680,031 written lines, with 2,703 test files.

Read on November 4, 2026, at commit df61dd2.

Repository: https://github.com/comet-ml/opik

## Frontend (/)

### Interface

- **[Rich](https://seerepo.com/uses/rich)**: 46 files

## Backend (/)

### The base

- **[FastAPI](https://seerepo.com/uses/fastapi)**
- **JAX-RS**
- **[Flask](https://seerepo.com/uses/flask)**: 20 files
- **werkzeug**: 12 files
- **flask-cors**: 1 file

### Data

- **redisson**
- **s3**
- **[Redis](https://seerepo.com/uses/redis)**: 69 files · [apps/opik-python-backend/src/opik_backend/rq_worker_manager.py, line 20](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-python-backend/src/opik_backend/rq_worker_manager.py#L20)
- **[MySQL](https://seerepo.com/uses/mysql)**: 1 file · [apps/opik-backend/pom.xml, line 1](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-backend/pom.xml#L1)

### Sign-in

- **itsdangerous**

### AI

- **accelerate**
- **spaCy**
- **tiktoken**
- **tokenizers**
- **litellm**: 24 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 8 files
- **transformers**: 7 files
- **torch**: 6 files
- **datasets**: 5 files
- **peft**: 3 files
- **scikit-learn**: 1 file

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 7 files · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 1](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L1)
- **[Anthropic](https://seerepo.com/uses/anthropic)**: 5 files · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 6](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L6)
- **[Sentry](https://seerepo.com/uses/sentry)**: 5 files · [apps/opik-frontend/src/index.tsx, line 2](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/src/index.tsx#L2)
- **[AWS S3](https://seerepo.com/uses/aws-s3)**: 3 files · [apps/opik-backend/src/main/java/com/comet/opik/domain/attachment/AttachmentService.java, line 33](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-backend/src/main/java/com/comet/opik/domain/attachment/AttachmentService.java#L33)
- **Hugging Face**: 3 files · [apps/opik-guardrails-backend/opik_guardrails/schemas.py, line 5](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-guardrails-backend/opik_guardrails/schemas.py#L5)

## Support (/)

### The base

- **[AIOHTTP](https://seerepo.com/uses/aiohttp)**
- **anyio**

### Content

- **markdown-it-py**
- **markupsafe**
- **[jinja2](https://seerepo.com/uses/jinja2)**: 1 file
- **[pillow](https://seerepo.com/uses/pillow)**: 1 file

### Validation

- **annotated-types**
- **referencing**
- **[Pydantic](https://seerepo.com/uses/pydantic)**: 558 files
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file
- **pydantic-core**: 1 file

### Testing

- **com.google.guava:guava-testlib**
- **pytest-timeout**
- **pytest-xdist**
- **reactor-test**
- **testcontainers-bom**
- **testcontainers-junit-jupiter**
- **Pytest**: 549 files
- **org.assertj:assertj-core**: 547 files
- **org.junit.jupiter:junit-jupiter**: 524 files
- **org.mockito:mockito-core**: 166 files
- **org.awaitility:awaitility**: 95 files

### Deploy

- **Gunicorn**
- **OpenTelemetry**
- **opentelemetry-instrumentation-flask**
- **opentelemetry-instrumentation-logging**
- **opentelemetry-instrumentation-requests**
- **opentelemetry-instrumentation-system-metrics**
- **botocore**: 4 files
- **docker**: 1 file

### Tools

- **boto3-stubs**
- **iniconfig**
- **packaging**
- **pluggy**
- **pygments**
- **types-requests**
- **org.projectlombok:lombok**: 1,265 files
- **typing-extensions**: 96 files
- **click**: 28 files

### Other

- **charset-normalizer**
- **cloudpickle**
- **commons-compress**
- **commons-io**
- **distro**
- **filelock**
- **fsspec**
- **[Google](https://seerepo.com/uses/google)**
- **idna**
- **importlib-metadata**
- **lz4-java**
- **multidict**
- **netty-bom**
- **python-dotenv**
- **python-jsonpath**
- **regex**
- **s**
- **sniffio**
- **typing-inspection**
- **yarl**
- **com.fasterxml.jackson:jackson-bom**: 637 files
- **com.fasterxml.jackson.core:jackson-annotations**: 78 files
- **httpx**: 41 files
- **tenacity**: 8 files
- **com.jayway.jsonpath:json-path**: 5 files
- **certifi**: 4 files
- **requests**: 4 files
- **httpcore**: 2 files
- **pandas**: 2 files
- **pyyaml**: 2 files
- **rapidfuzz**: 2 files
- **tqdm**: 2 files
- **io.netty:netty-handler**: 1 file
- **pydantic-settings**: 1 file
- **urllib3**: 1 file

## Frontend (apps/opik-frontend)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in apps/opik-frontend/package.json](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/package.json)
- **[React](https://seerepo.com/uses/react)**: 1,278 files · [in apps/opik-frontend/package.json](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/package.json)
- **tanstack**: 124 files

### Styles

- **[class-variance-authority](https://seerepo.com/uses/class-variance-authority)**: 25 files
- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**: 1 file
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 1 file

### Interface

- **tanstack**: 167 files
- **[React Hook Form](https://seerepo.com/uses/react-hook-form)**: 64 files
- **[Radix UI](https://seerepo.com/uses/radix-ui)**: 36 files
- **@uiw/react-codemirror**: 21 files
- **[CodeMirror](https://seerepo.com/uses/codemirror)**: 21 files
- **[recharts](https://seerepo.com/uses/recharts)**: 15 files
- **[dnd-kit](https://seerepo.com/uses/dnd-kit)**: 11 files
- **react-hotkeys-hook**: 9 files
- **react-textarea-autosize**: 7 files
- **react18-json-view**: 5 files
- **[react-day-picker](https://seerepo.com/uses/react-day-picker)**: 4 files
- **[cmdk](https://seerepo.com/uses/cmdk)**: 3 files
- **react-intersection-observer**: 3 files
- **react-player**: 3 files
- **[@lezer/highlight](https://seerepo.com/uses/lezer-highlight)**: 2 files
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file
- **re-resizable**: 1 file
- **react-grid-layout**: 1 file
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 1 file
- **Vega**: 1 file
- **vega-lite**: 1 file

### Icons

- **[Lucide](https://seerepo.com/uses/lucide)**: 516 files

## Backend (apps/opik-frontend)

### AI

- **litellm**: 3 files
- **[LangChain](https://seerepo.com/uses/langchain)**: 1 file

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 10 files · [apps/opik-frontend/src/plugins/comet/WorkspacePreloader.tsx, line 17](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/src/plugins/comet/WorkspacePreloader.tsx#L17)
- **[Sentry](https://seerepo.com/uses/sentry)**: 5 files · [apps/opik-frontend/src/index.tsx, line 2](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/src/index.tsx#L2)
- **[OpenAI](https://seerepo.com/uses/openai)**: 2 files · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 1](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L1)
- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 6](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L6)

## Support (apps/opik-frontend)

### Content

- **mustache**: 3 files
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 3 files
- **remark-breaks**: 3 files
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 2 files
- **ansi-to-html**: 1 file
- **react-pdf**: 1 file
- **rehype-raw**: 1 file
- **rehype-sanitize**: 1 file
- **unist-util-visit**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 27 files
- **[@hookform/resolvers](https://seerepo.com/uses/hookform-resolvers)**: 23 files

### Testing

- **Vitest**: 345 files
- **Testing Library**: 198 files

### Other

- **Lodash**: 397 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 308 files
- **Axios**: 112 files
- **clipboard-copy**: 22 files
- **zustand**: 20 files
- **dayjs**: 18 files
- **uuid**: 12 files
- **fast-deep-equal**: 9 files
- **uniqid**: 8 files
- **file-saver**: 4 files
- **slugify**: 4 files
- **md5**: 3 files
- **@lezer/common**: 1 file
- **async**: 1 file
- **clsx**: 1 file
- **diff**: 1 file
- **requests**: 1 file

## Frontend (sdks/typescript)

### Interface

- **ora**: 1 file

## Backend (sdks/typescript)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 15 files
- **@ai-sdk/google**: 1 file

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 1 file · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 6](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L6)
- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [sdks/typescript/src/opik/evaluation/models/providerDetection.ts, line 1](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/sdks/typescript/src/opik/evaluation/models/providerDetection.ts#L1)

## Support (sdks/typescript)

### Content

- **mustache**: 2 files
- **Nunjucks**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 16 files

### Testing

- **Vitest**: 131 files
- **Jest**: 1 file

### Tools

- **tsup**: 1 file

### Other

- **chalk**: 2 files
- **ini**: 2 files
- **.ENV**: 1 file
- **ansi-escapes**: 1 file
- **date-fns**: 1 file
- **fast-deep-equal**: 1 file
- **uuid**: 1 file

## Frontend (sdks/typescript/src/opik/configure)

### Interface

- **[@clack/prompts](https://seerepo.com/uses/clack-prompts)**: 1 file

## Backend (sdks/typescript/src/opik/configure)

### AI

- **[LangChain](https://seerepo.com/uses/langchain)**: 1 file

### Services

- **[PostHog](https://seerepo.com/uses/posthog)**: 1 file · [apps/opik-frontend/src/plugins/comet/WorkspacePreloader.tsx, line 17](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-frontend/src/plugins/comet/WorkspacePreloader.tsx#L17)

## Support (sdks/typescript/src/opik/configure)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files
- **zod-to-json-schema**: 1 file

### Testing

- **Vitest**: 1 file

### Tools

- **fast-glob**: 1 file
- **yargs**: 1 file

### Other

- **chalk**: 10 files
- **SemVer**: 3 files
- **Axios**: 2 files
- **ini**: 1 file
- **uuid**: 1 file

## Backend (sdks/typescript/src/opik/integrations/opik-langchain)

### AI

- **[LangChain](https://seerepo.com/uses/langchain)**: 2 files

## Support (sdks/typescript/src/opik/integrations/opik-langchain)

### Testing

- **Vitest**: 3 files

## Support (sdks/typescript/src/opik/integrations/opik-otel)

### Testing

- **Vitest**: 2 files

### Deploy

- **@opentelemetry/sdk-trace-base**: 1 file

### Other

- **OpenTelemetry**: 1 file
- **uuid**: 1 file

## Backend (sdks/typescript/src/opik/integrations/opik-vercel)

### AI

- **[ai](https://seerepo.com/uses/ai)**: 2 files

## Support (sdks/typescript/src/opik/integrations/opik-vercel)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Vitest**: 2 files

### Deploy

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

### Other

- **OpenTelemetry**: 2 files

## Other repos with a similar stack

- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): FastAPI, Redis, OpenAI, Anthropic, Sentry, AIOHTTP, React, PostHog, Rich, spaCy, tiktoken, markdown-it-py, jinja2, pillow, Pydantic, jsonschema, docker, class-variance-authority, Tailwind CSS, tailwind-merge, React Hook Form, Radix UI, recharts, react-day-picker, cmdk, react-markdown, remark-gfm, Zod, @hookform/resolvers, ai · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/Significant-Gravitas/AutoGPT)
- [datawhalechina/hello-agents](https://seerepo.com/r/datawhalechina/hello-agents/built): FastAPI, Flask, Redis, OpenAI, Hugging Face, AIOHTTP, anyio, Vite, React, Rich, accelerate, spaCy, tiktoken, tokenizers, transformers, torch, datasets, peft, scikit-learn, jinja2, pillow, annotated-types, Pydantic, jsonschema, pydantic-core, OpenTelemetry, Tailwind CSS, Mermaid, react-markdown · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/datawhalechina/hello-agents)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): werkzeug, s3, Redis, MySQL, OpenAI, AWS S3, AIOHTTP, React, tanstack, OpenTelemetry, class-variance-authority, Tailwind CSS, tailwind-merge, React Hook Form, Radix UI, recharts, react-day-picker, cmdk, Mermaid, react-resizable-panels, Lucide, react-markdown, remark-breaks, remark-gfm, rehype-raw, rehype-sanitize, Zod, @hookform/resolvers · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/infiniflow/ragflow)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): OpenAI, Anthropic, Sentry, AWS S3, Vite, React, jsonschema, class-variance-authority, Tailwind CSS, tailwind-merge, Radix UI, CodeMirror, dnd-kit, cmdk, @lezer/highlight, Mermaid, react-resizable-panels, Lucide, react-markdown, remark-gfm, yaml, Zod, ai, @clack/prompts · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/paperclipai/paperclip)
- [langflow-ai/langflow](https://seerepo.com/r/langflow-ai/langflow/built): FastAPI, Redis, OpenAI, AIOHTTP, Vite, React, Rich, LangChain, pillow, Pydantic, jsonschema, class-variance-authority, Tailwind CSS, tailwind-merge, Radix UI, react-hotkeys-hook, react-day-picker, cmdk, Lucide, react-markdown, remark-gfm, rehype-raw, rehype-sanitize · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/langflow-ai/langflow)
- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): OpenAI, Sentry, Vite, React, tanstack, PostHog, class-variance-authority, Tailwind CSS, React Hook Form, Radix UI, recharts, dnd-kit, react-day-picker, cmdk, Mermaid, react-resizable-panels, Lucide, react-markdown, remark-gfm, unist-util-visit, Zod, @hookform/resolvers, ai · [Compare](https://seerepo.com/compare/comet-ml/opik/vs/supabase/supabase)

## Frequently asked questions

### What language is opik written in?

opik is written in Python, with 1,680,031 written lines.

### What framework does opik use?

opik is built with FastAPI, JAX-RS, Flask, werkzeug, flask-cors, AIOHTTP, anyio, Vite, React, and tanstack.

### What does opik sign people in with?

opik signs people in with itsdangerous.

### Does opik use AI?

Yes. opik uses AI through accelerate, spaCy, tiktoken, tokenizers, litellm, LangChain, transformers, torch, datasets, peft, scikit-learn, OpenAI, Anthropic, ai, and @ai-sdk/google.

### What services does opik use?

opik stores files in AWS S3, measures its use with PostHog, watches its errors with Sentry, and uses redisson, s3, Redis, MySQL, and Hugging Face.

The proof: [apps/opik-backend/src/main/java/com/comet/opik/domain/attachment/AttachmentService.java, line 33](https://github.com/comet-ml/opik/blob/df61dd21c66e5ed901dafba326bf29cb4b4fbcfb/apps/opik-backend/src/main/java/com/comet/opik/domain/attachment/AttachmentService.java#L33)

### Does opik have tests?

Yes. opik has 2,703 test files and is tested with com.google.guava:guava-testlib, pytest-timeout, pytest-xdist, reactor-test, testcontainers-bom, testcontainers-junit-jupiter, Pytest, org.assertj:assertj-core, org.junit.jupiter:junit-jupiter, org.mockito:mockito-core, org.awaitility:awaitility, Vitest, Testing Library, and Jest.

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

The ones that share most of its stack: Significant-Gravitas/AutoGPT, datawhalechina/hello-agents, 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.
