> ## Documentation Index
> Fetch the complete documentation index at: https://allhandsai-vertex-agent-server-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics

> Deploy Laminar for trace analysis in OpenHands Enterprise.

This guide walks you through enabling Laminar in OpenHands Enterprise (OHE) so conversations automatically send traces for observability and analysis.

For SDK-level tracing concepts, OTEL environment variables, and non-Laminar backends, see [Observability & Tracing](/sdk/guides/observability).

## Who This Is For

This guide is for users who want to deploy Laminar alongside OpenHands Enterprise and inspect traces from Enterprise conversations.

## Why Laminar in OHE?

Laminar helps you understand what your OpenHands deployment is doing in production:

* Inspect prompts, tool calls, answers, and nested agent behavior in Laminar's [trace views](https://laminar.sh/docs/platform/viewing-traces).
* Use [session replay for browser agents](https://laminar.sh/docs/tracing/browser-agent-observability) when conversations drive browser automation.
* Define [signals](https://laminar.sh/docs/signals/introduction) to classify failures, measure outcomes, and monitor recurring patterns across many traces.

For more information on evaluating skills, see [Evaluating Agent Skills](https://www.openhands.dev/blog/evaluating-agent-skills).

## Prerequisites

Before you begin, complete the [Quick Start guide](/enterprise/quick-start).

## Enable Analytics

You should see an **Analytics Configuration** section on the application configuration page.

Check the **Enable Analytics** box to have the installer set up and configure Laminar for analytics.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-configure-analytics.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=1cbe3e4d3de141777cf2362bf1d0d0c6" alt="Configure Analytics" width="730" height="276" data-path="enterprise/images/laminar-configure-analytics.png" />

## Deploy

OpenHands will begin deploying. You can expect the deployment status to transition from **Missing** to **Unavailable** to **Ready**. This typically takes 10-15 minutes.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-deploy-in-progress.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=7975f619c8beea58600d7f0e644dd1e7" alt="Deployment in progress" width="1528" height="784" data-path="enterprise/images/laminar-deploy-in-progress.png" />

Click **Details** next to the deployment status to monitor individual resources. Resources shown in orange are still deploying, so wait until all resources are ready.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-deployment-status-details.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=7dc9798a4aefa72c0bb2c48376c1c2aa" alt="Deployment status details" width="774" height="1000" data-path="enterprise/images/laminar-deployment-status-details.png" />

## Access the Laminar UI

Once the deployment status shows **Ready**, navigate to `https://analytics.app.<your-base-domain>`.

Click the **Continue with Keycloak** button:

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-keycloak-auth.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=844c62adcad6ea21506026e93cbcade0" alt="Laminar Keycloak Auth" width="3004" height="1530" data-path="enterprise/images/laminar-keycloak-auth.png" />

If you want more background on Laminar Cloud versus self-hosting outside OHE, see Laminar's official [hosting options](https://laminar.sh/docs/hosting-options).

## Create a Laminar Project

Create a project in the Laminar UI:

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-create-project.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=6f17a908e2d806f0cdc2490a44ee73ee" alt="Laminar Create Project" width="2996" height="1520" data-path="enterprise/images/laminar-create-project.png" />

Once a project has been created, Laminar is ready to listen for traces.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-listen-traces.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=398d4968f7d72901f3821138186a7781" alt="Laminar Listen Traces" width="3000" height="1518" data-path="enterprise/images/laminar-listen-traces.png" />

## Create an Ingest-Only API Key

Always use ingest-only API keys when deploying OHE.

Ingest-only keys are recommended because OHE only needs permission to write traces. They cannot be used to read trace data.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-ingest-only-key.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=975fe7763b4d2f58d7b556f536ecaef6" alt="Configure Laminar Ingest Only Key" width="3004" height="1496" data-path="enterprise/images/laminar-ingest-only-key.png" />

## Set the Laminar Project API Key

Set the ingest-only key as the **Laminar Project API Key** in the Admin Console configuration. This is the same `LMNR_PROJECT_API_KEY` described in the [SDK observability guide](/sdk/guides/observability).

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-configure-key.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=3e1b920f32ae700856a9f59740894f8d" alt="Configure Laminar Project API Key" width="2538" height="1564" data-path="enterprise/images/laminar-configure-key.png" />

Click **Save config**.

## Forward `LMNR_` and `LLM_` Environment Variables

In OHE, environment variables whose names start with `LMNR_` or `LLM_` are automatically forwarded to the SDK runtime. This lets you configure Laminar ingestion settings and the LLM settings used for Laminar-backed workflows from the Admin Console.

For example, you can point the runtime at the managed Laminar endpoint and use an ingest-only project key:

```yaml theme={null}
LMNR_BASE_URL: "https://laminar-api.<your-base-domain>"
# Ingest-only API key, not a read-capable secret:
LMNR_PROJECT_API_KEY: ""
LMNR_FORCE_HTTP: "true"
```

You can also control which LLM Laminar uses for its AI features — chat-with-trace, SQL-with-AI, and [signals](https://laminar.sh/docs/signals/introduction) — by forwarding the standard `LLM_*` variables:

```yaml theme={null}
LLM_PROVIDER: "openai"
LLM_BASE_URL: "https://llm-proxy.<your-base-domain>"
LLM_MODEL_SMALL: "gpt-5.4-mini"
LLM_MODEL_MEDIUM: "gpt-5.4-mini"
LLM_MODEL_LARGE: "gpt-5.5"
```

`LLM_PROVIDER` accepts `gemini` (Laminar's default), `openai`, or `bedrock`, and `LLM_MODEL_SMALL` / `LLM_MODEL_MEDIUM` / `LLM_MODEL_LARGE` are optional per-tier model overrides. Set `LLM_PROVIDER` to `openai` whenever you point `LLM_BASE_URL` at an OpenAI-compatible gateway (for example LiteLLM, OpenRouter, or vLLM), not just the public OpenAI API.

For the full set of supported values, see Laminar's official [self-hosting configuration reference](https://laminar.sh/docs/self-hosting/configuration).

## Deploy Updated Configuration

Deploy the configuration change after setting the Laminar Project API Key in the Admin Console.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-deploy-again.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=5a9acc7413d8bde71062476181062c04" alt="Laminar Deploy Again" width="1610" height="242" data-path="enterprise/images/laminar-deploy-again.png" />

Wait for the deployment to complete.

## Start a Conversation

Navigate to the OpenHands UI at `https://app.<your-base-domain>`. Start a new conversation and try a prompt.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-openhands-conversation.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=cd791d46310e156bce25e1131e2472e8" alt="Start a Conversation" width="1428" height="1520" data-path="enterprise/images/laminar-openhands-conversation.png" />

Your conversations will now automatically send traces to Laminar.

<img src="https://mintcdn.com/allhandsai-vertex-agent-server-docs/ITD3Qw5O8od3DiSp/enterprise/images/laminar-trace.png?fit=max&auto=format&n=ITD3Qw5O8od3DiSp&q=85&s=6163c4090af07585a1de6a22e16ba33a" alt="Laminar Trace" width="3010" height="1516" data-path="enterprise/images/laminar-trace.png" />

<video controls className="w-full aspect-video" src="https://github.com/user-attachments/assets/0cdf1625-3246-4388-a989-765f00d33ffb" />

## What to Do Next in Laminar

Once traces are flowing, use Laminar's official docs to go deeper:

* [Viewing Traces](https://laminar.sh/docs/platform/viewing-traces) to inspect a single conversation in transcript, tree, or timeline views.
* [Signals](https://laminar.sh/docs/signals/introduction) to extract structured outcomes or failure modes across many traces.
* [Session replay for browser agents](https://laminar.sh/docs/tracing/browser-agent-observability) to debug browser-based automations.
* [Observability for OpenHands Software Agent SDK](https://laminar.sh/docs/tracing/integrations/openhands-sdk) for the OpenHands-specific tracing model.

## Next Steps

<CardGroup cols={2}>
  <Card title="Observability & Tracing" icon="activity" href="/sdk/guides/observability">
    Learn the full OpenHands tracing model, OTEL configuration options, and non-Laminar backends.
  </Card>

  <Card title="Prompting Best Practices" icon="lightbulb" href="/openhands/usage/tips/prompting-best-practices">
    Get more reliable traces by improving the prompts you give your agents.
  </Card>

  <Card title="Contact Support" icon="headset" href="https://openhands.dev/contact">
    Reach out to the OpenHands team for deployment assistance or questions.
  </Card>
</CardGroup>
