Opik (opik)
Open source LLM observability and evaluation: traces, datasets, experiments and online scoring rules.
Generated from catalog/services/opik.yaml: do not edit by hand.
Summary
| Version | 1.8.16 |
| Use | install and configure, configure and connect |
| Layer | functional (AI catalog) |
| Category | Evaluation and LLM operations |
| Installation methods | podman |
| External connection | no |
| Sandbox only | no |
Licence
| SPDX identifier | Apache-2.0 |
| Licence policy | core licence (MIT or Apache-2.0) |
| Licence exception | - |
| Platform component | opik |
Packages and artifacts
A package the project of the service publishes (its image, its binary archive, its Python or OS package) carries the licence of the service; a third-party package carries the licence written on its row, read from the official upstream metadata.
| Kind | Package | Version | Licence | Details |
|---|---|---|---|---|
| container image | ghcr.io/comet-ml/opik/opik-backend | 1.8.16 | Apache-2.0 | image key backend, used by backend, digest sha256:3235c026ff3d3c79c14a4019d7cb5939d5c656ce339c1e3d8ad871acefc87d1d |
| container image | ghcr.io/comet-ml/opik/opik-python-backend | 1.8.16 | Apache-2.0 | image key python-backend, used by python-backend, digest sha256:dece136e60eb8c6005182753e0f5ae927b865188d006599ccbdb09be2d7e5c87 |
| container image | ghcr.io/comet-ml/opik/opik-frontend | 1.8.16 | Apache-2.0 | image key frontend, used by frontend, digest sha256:eefeef6e4fca4ede768b01aa5e104ca762bd89ea249b2d37708d08072503acba |
Images are pinned by tag in the descriptor, and by digest when the descriptor declares one (the offline bundle then refuses a pulled image that does not carry it); the digest is recorded in the mirror of the Manager when the offline bundle is imported, and every pull or load is checked against it.
Supported systems and architectures
| Method | Operating systems | Architectures |
|---|---|---|
podman | RHEL family (dnf), Debian family (apt), Arch Linux (pacman) | x86_64, aarch64 (not restricted by the descriptor) |
Certified host systems: RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). The host preflight accepts these systems (other releases of a known family give a warning, end of life releases are refused) and the x86_64 and aarch64 architectures.
Prerequisites
Host
- at least 4096 MB of memory (warning,
memory).
Network and ports
| Component | Port name | Port | Opened in the host firewall |
|---|---|---|---|
python-backend | http | 8000/tcp | no |
backend | api | 8080/tcp | yes |
backend | admin | 3003/tcp | no |
frontend | ui | 5180/tcp | yes |
Services and connections needed
mysql:mysql.clickhouse:clickhouse.redis:redis.s3:seaweedfs.
Details and resolution: see Dependencies.
Installation methods and modes
| Method | Default | What the method uses |
|---|---|---|
podman | yes | the container images of the descriptor, run by Podman under systemd |
Components
| Component | Kind | Installation methods | Ports |
|---|---|---|---|
Python backend (python-backend) | master | podman | 8000/tcp |
Backend (backend) | master | podman | 8080/tcp, 3003/tcp |
Interface (frontend) | master | podman | 5180/tcp |
backendruns only on a host that also runspython-backend.frontendruns only on a host that also runsbackend(modesingle).
Single (single) (default)
One instance of each component.
What the mode deploys:
| Component | Placement |
|---|---|
python-backend | min 1, max 1 |
backend | min 1, max 1 |
frontend | min 1, max 1 |
Replicated (replicated)
Several stateless instances behind the load balancer, sharing the MySQL state database, ClickHouse, Redis and the attachment bucket of the bindings; place a Python backend on every backend host, each interface balances over every backend.
What the mode deploys:
| Component | Placement |
|---|---|
python-backend | min 2, recommended 2 |
backend | min 2, recommended 2 |
frontend | min 1, recommended 2 |
Install this service
The install wizard of the Navin Manager plans, validates and runs the installation; you need the services:install permission on the cluster.
-
Open the wizard. In Clusters, choose the row action Install services of the target cluster. The wizard opens on its first step, Service.
-
Choose the service. On the Service step, select Opik. The card shows the licence
Apache-2.0and the dependencies the installation needs. -
Choose the hosts and the mode. On the Hosts step, tick the hosts, then choose the Mode:
single(default),replicated. Each mode deploys the components listed in Installation methods and modes. With several components, place each one on its hosts in Component placement (Suggest placement proposes a placement that respects the cardinalities). -
Bind the dependencies. On the Bindings step, choose for each dependency (
mysql,clickhouse,redis,s3) Install with the platform or Use an existing connection; an optional dependency can stay on No binding. -
Configure. On the Configure step, review the parameters (see Configuration parameters). Passwords left empty with a generated default are generated and sealed by the Manager.
-
Review and install. On the Install step the Manager validates the plan and shows the installation order; when it says "The plan is valid. Ready to install.", choose Install. A highly available mode is installed only when its HA checks pass.
-
Verify. The operation ends when the health checks of every instance pass (see Health checks); the service then shows as running in Services.
Connect an existing service
| Schemes | https, http |
| Default port | 8080 |
| Authentication | optional |
| Health check | health_url + /health-check |
| Authentication method | Fields | Description |
|---|---|---|
none | - | Self-hosted open source Opik: no authentication. |
api_key | api_key | Opik Cloud or Enterprise: API key, sent without Bearer, with the workspace of the Workspace field. |
Official documentation: https://www.comet.com/docs/opik/reference/rest_api/opik-rest-api/
| Field | Type | Default | Description | Notes |
|---|---|---|---|---|
Health endpoint URL (health_url) | url | - | Health endpoint URL of the existing service. | - |
Workspace (workspace) | string | default | Workspace used by the platform. | - |
High availability
| Cluster | replicas (replication) |
| High availability | external (external) |
| Failover | load balancer (load-balancer) |
| Replication | shared store (shared-store) |
| Quorum | none (none) |
| Discovery | none (none) |
| Entry point | load balancer (load-balancer) |
| Official documentation | https://www.comet.com/docs/opik/self-host/scaling |
Prerequisites
| Prerequisite | Must be highly available | Modes | Description |
|---|---|---|---|
mysql | yes | modes of level ha or cluster | Highly available MySQL (state database). |
clickhouse | yes | modes of level ha or cluster | Highly available ClickHouse (traces and spans). |
redis | yes | modes of level ha or cluster | Highly available Redis. |
s3 | yes | modes of level ha or cluster | Highly available object storage for the attachments. |
Topology per mode
| Modes | Highest catalog level | Distribution | Quorum component | Fault domains | Description |
|---|---|---|---|---|---|
single | standalone (standalone) | single (single) | - | 1 | One instance of each component. |
replicated | ha (ha) | active-active (active-active) | - | 2 | Several stateless backends, Python backends and frontends sharing MySQL, ClickHouse, Redis and the bucket. |
Configuration parameters
General
| Parameter | Type | Default | Allowed values | Required | Secret | Restart | Description |
|---|---|---|---|---|---|---|---|
Backend port (backend_port) | port | 8080 | - | no | no | no | Port of the REST and OTLP API. |
Backend admin port (backend_admin_port) | port | 3003 | - | no | no | no | Port of the health and metrics endpoints of the backend. |
Python backend port (python_backend_port) | port | 8000 | - | no | no | no | Port of the Python evaluator. |
Interface port (frontend_port) | port | 5180 | - | no | no | no | Port of the web interface (nginx). |
TLS (tls_enabled) | bool | false | - | no | no | yes | Serve the web interface and its /api/ entry (REST API and OTLP of the SDK through the interface) in HTTPS with a certificate of the Manager CA (nginx of the image, TLS 1.2 and 1.3). The backend port itself stays HTTP: point the SDK and the OTLP exporters at https://<interface>/api. |
Dependencies
For each active dependency the Manager takes the first of: the binding chosen in the wizard; a service of the same installation that provides it; a service already installed in the cluster; the only connection of the expected type. Otherwise an optional dependency stays unbound, and a required one is added to the installation in its default mode (the column below names the catalog service added).
| Binding | Provided by | Connection type | Endpoint | Optional | When nothing is bound | Description |
|---|---|---|---|---|---|---|
mysql | - | mysql | - | no | mysql is added to the installation | State database: MySQL 8.4 (GPL-2.0) provided by the client or installed separately, never shipped with Opik. |
clickhouse | - | clickhouse | - | no | clickhouse is added to the installation | Analytical store of traces and spans. |
redis | - | redis | - | no | redis is added to the installation | Cache and locks. |
s3 | seaweedfs | s3 | s3 | no | seaweedfs is added to the installation | Bucket of attachments (SeaweedFS of the platform by default, or an existing S3 connection). |
Endpoints
| Endpoint | Scheme | Component | Port | Path | TLS parameter | Binding parameters | Binding secrets | Provisioning command |
|---|---|---|---|---|---|---|---|---|
api | http | backend | 8080 (backend_port) | - | - | - | - | - |
ui | http | frontend | 5180 (frontend_port) | - | tls_enabled | - | - | - |
Health checks
Liveness (per instance)
| Component | Check | Details |
|---|---|---|
python-backend | HTTP http://127.0.0.1:{{ config.python_backend_port }}/healthcheck | Expected 200; 60 retries; interval 3 s; timeout 5 s |
backend | HTTP http://127.0.0.1:{{ config.backend_admin_port }}/health-check | Expected 200; 90 retries; interval 3 s; timeout 5 s |
frontend | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.ip or '127.0.0.1' }}:{{ config.frontend_port }}/ | Expected 200; 30 retries; interval 2 s; timeout 5 s |
Preflight checks
| Check | Type | Meaning | Severity | Components |
|---|---|---|---|---|
memory | memory_mb {"min": 4096} | at least 4096 MB of memory | warning | every component |
Uninstall
Paths removed when the data is purged: {{ paths.data }}, {{ paths.log }}.
Quick links
- Opik:
{{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.frontend_port }}/
Upstream documentation
- Homepage: https://www.comet.com/site/products/opik/
- Source: https://github.com/comet-ml/opik
- High availability: https://www.comet.com/docs/opik/self-host/scaling
- Authentication: https://www.comet.com/docs/opik/reference/rest_api/opik-rest-api/