OP

Opik

Evaluate, test, and ship LLM applications with a suite

Developer Tools & Git ★ 22.2k stars Medium setup Apache-2.0

Evaluate, test, and ship LLM applications with a suite of observability tools to calibrate language model outputs across your dev and production lifecycle.

Key features

  • LLM call tracing
  • Evaluation datasets and metrics
  • Prompt playground
  • Production monitoring dashboards

Pros & cons

Strengths

  • Tracing and eval suite
  • Backed by Comet
  • Docker deployment

Trade-offs

  • Relatively young project
  • Multi-container stack

Opik replaces

Last reviewed Sep 13, 2026 · 814 words

Opik and Langfuse solve the same problem from opposite ends, and choosing between them is easier once you see that. Langfuse started as tracing with evaluation added on. Opik started from Comet's experiment-tracking background as an evaluation framework with tracing bolted underneath. If your pain is "I cannot see what my agent did on that request", Langfuse is the shorter path. If your pain is "I changed the prompt and I have no idea whether it got better", Opik was built around that question, and it has grown to 21,778 stars in a short time on the strength of it.

The stack is heavier than the SDK suggests

pip install opik gets you a decorator, and the hosted version gets you a dashboard in a minute. Self-hosting is a different scale of commitment. The compose stack runs the frontend, a Java backend, a Python backend for evaluation code, ClickHouse for traces, MySQL for metadata, Redis, and MinIO for attachments. That is 7 containers, and while the 512 MB figure covers the app processes, ClickHouse wants memory of its own and will be happier with 4 GB total on the host. The project ships a launcher script that brings the whole thing up:

git clone https://github.com/comet-ml/opik.git
cd opik
./opik.sh

The UI answers on port 5173 once the stack is healthy, which takes a minute or two on first start while ClickHouse initialises. Volumes hold everything, so treat the ClickHouse and MySQL directories as the backup targets. This is not a container you drop next to your media server on a Raspberry Pi; it belongs on the box that already runs your LLM stack.

Tracing is a decorator and one environment variable

import opik
from openai import OpenAI
from opik.integrations.openai import track_openai

client = track_openai(OpenAI())

@opik.track
def answer(question: str) -> str:
    r = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": question}],
    )
    return r.choices[0].message.content

Set OPIK_URL_OVERRIDE to your instance's API path, run opik configure once, and every call inside a tracked function shows up as a nested span with inputs, outputs, token counts, and latency. Integrations exist for the common SDKs and frameworks, and the raw decorator handles anything else. The tracing model is close enough to Langfuse's that switching later is an afternoon's work, which lowers the cost of picking wrong.

Evaluation is the part that justifies the containers

Datasets, experiments, and metrics are first-class objects. You store a set of inputs with expected outputs, run your application over them, and score each result with a built-in metric (hallucination, answer relevance, moderation, exact match, and a set of LLM-as-judge scorers) or your own function. Each run becomes an experiment you can compare against the last one, column by column. That workflow is what most teams do badly in a spreadsheet, and the evals before vibes argument is the case for doing it at all. Opik also ships a prompt playground and prompt versioning, so the loop of edit, run, compare lives in one tab. Online evaluation rules can score a sample of production traces continuously, which is how you catch drift without re-running a suite by hand.

Young, well-funded, moving fast

Opik is backed by Comet, which means paid engineers and a roadmap, and it also means the open-source edition sits beside a commercial cloud with features that land there first. The project is younger than its star count suggests and the release cadence is quick; expect the compose stack to change shape between versions and read the upgrade notes before pulling. Apache-2.0 keeps your exit clean.

Against the rest of the field

Langfuse is the more common self-hosted pick, with a longer track record and a similarly heavy backend. Arize Phoenix is the lighter option when you want traces and evals from a single container and do not need multi-user management. Promptfoo is a CLI, not a server, and covers the offline evaluation half with far less to operate. The LLM observability tracing post compares the approaches; the LangSmith alternatives page covers the same tools from the switching angle.

What I'd do

For a solo developer or a homelab, I would run Promptfoo for evals and Phoenix for traces and skip the 7-container stack entirely. For a team shipping an LLM feature that needs a shared dashboard, I would pick Opik over Langfuse when the evaluation workflow is the thing you will use daily, and Langfuse when tracing volume is. Run it on a host with 4 GB to spare, back up the ClickHouse volume, and put the prompt versioning to work on day one; that feature pays for the operational cost by itself.

Similar developer tools & git apps