> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhands.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics

> Get started with LLM observability and tracing in OpenHands Enterprise.

This guide walks you through setting up and using Laminar for Analytics in OpenHands Enterprise.
You'll opt into Analytics and configure conversations to automatically send traces to Laminar.

## Who This Is For

This guide is for users who want to explore analytics on their OpenHands Enterprise conversations.

### Why Laminar?

[Laminar](https://laminar.sh/) is an open source observability platform for AI agents like OpenHands.

Use Laminar to view your conversation traces including prompts, tool calls, and answers. A trace is a record of what your agent did.

Laminar can help you see where the agent went wrong. From traces, you can create signals. A signal is a natural language instruction to extract structured data from traces. Use signals to analyze recurring behavior across traces. You can then create better situations for prompting and measure them in Laminar. You can also analyze and improve your skills.

For example, you can view all conversation traces related to a specific skill.

Laminar can help you answer the following questions:

* On a trace, did the agent do a good job using the skill?
* On another trace, did the agent do a bad job?

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

### Prerequisites

Before you begin, make sure you completed 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/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-configure-analytics.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=61ddfbb42a3007cd4ba5a3919422ad45" 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/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-deploy-in-progress.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=780d6367d09a1f8e7aeb9a60ba7c25d8" 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 -- wait until all resources are ready.

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-deployment-status-details.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=6a8ea4ee3f42125611e75ef380d8bf46" alt="Deployment status details" width="774" height="1000" data-path="enterprise/images/laminar-deployment-status-details.png" />

## Access 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/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-keycloak-auth.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=cbdeecc21b920b579ad3da3eb291e9d1" alt="Laminar Keycloak Auth" width="3004" height="1530" data-path="enterprise/images/laminar-keycloak-auth.png" />

## Create a Laminar project

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-create-project.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=e3ef12290be1f26646b0b4d0f10c3fd9" 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/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-listen-traces.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=d564233d383f473d2c14e52d4e171f57" alt="Laminar Listen Traces" width="3000" height="1518" data-path="enterprise/images/laminar-listen-traces.png" />

## Create an ingest only API Key

Important: Always use ingest API keys when deploying.

Create a key with the right permissions. Ingest only keys are recommended as they only have write access to write traces. They cannot be used to read data.

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-ingest-only-key.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=70a9a09fd9a67f8f082c44bf13eab7a7" alt="Configure Laminar Ingest Only Key" width="3004" height="1496" data-path="enterprise/images/laminar-ingest-only-key.png" />

## Set Laminar Project API Key to enable automatic conversation traces

Set the ingest only key as the Laminar Project API Key in the Admin Console configuration:

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-configure-key.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=1cb28a8e99ad1da3fe10a926a993f450" alt="Configure Laminar Project API Key" width="2538" height="1564" data-path="enterprise/images/laminar-configure-key.png" />

Click **Save config**.

## Deploy Updated Configuration

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

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-deploy-again.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=3567ab8beee56ba2166657b3e26efd4c" 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/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-openhands-conversation.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=b56b9978b4f3dd5b1112ce0b39371ee8" alt="Start a Conversation" width="1428" height="1520" data-path="enterprise/images/laminar-openhands-conversation.png" />

Your conversations will now automatically send a trace to Laminar.

<img src="https://mintcdn.com/allhandsai/cSWtxxDdwY5-Y2BK/enterprise/images/laminar-trace.png?fit=max&auto=format&n=cSWtxxDdwY5-Y2BK&q=85&s=067d1eb77207dabd5647cfe0a522af27" 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" />

## Next Steps

<CardGroup cols={2}>
  <Card title="Prompting Best Practices" icon="lightbulb" href="/openhands/usage/tips/prompting-best-practices">
    Get the most out of your AI coding agents with effective prompting techniques.
  </Card>

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

  <Card title="OpenHands Documentation" icon="book" href="/overview/introduction">
    Explore the full OpenHands documentation for usage guides and features.
  </Card>
</CardGroup>
