# Instrument your application

Setup guides for every language, framework and runtime Maple supports.

import GuideFilter from "../../components/docs/GuideFilter.astro"
import GuideGrid from "../../components/docs/GuideGrid.astro"

Maple ingests OpenTelemetry over OTLP/HTTP, so any OTLP exporter works without a Maple-specific plugin. Each guide below installs the SDK, points it at the ingest endpoint with an ingest key from **Settings → Ingestion**, and checks that the first trace arrives. New to Maple? The [Quickstart](/docs/getting-started/quickstart) gets a first trace in about five minutes. The [maple-onboard](https://github.com/MapleTechLabs/maple/tree/main/skills/maple-onboard) skill can do the same setup from a coding agent.

<GuideFilter />

<section data-guide-section="javascript">

## JavaScript and TypeScript

<GuideGrid section="javascript" />

</section>

<section data-guide-section="python">

## Python

<GuideGrid section="python" />

</section>

<section data-guide-section="jvm">

## Java and Kotlin

<GuideGrid section="jvm" />

</section>

<section data-guide-section="other">

## Go, Rust, .NET and PHP

<GuideGrid section="other" />

</section>

<section data-guide-section="frontend">

## Frontend and product analytics

<GuideGrid section="frontend" />

</section>

## AI agents and LLM calls

Agent frameworks and LLM gateways have their own guides, so each conversation shows up as one [Agent Session](/docs/agent-sessions/overview) with its transcript, tool calls, tokens and cost: Vercel AI SDK, OpenAI Agents SDK, LangChain and LangGraph, Mastra, Pydantic AI, CrewAI, Google ADK, OpenRouter, LiteLLM and more. See [Trace your AI agent](/docs/agent-tracing).

<section data-guide-section="infrastructure">

## Infrastructure and data sources

<GuideGrid section="infrastructure" />

</section>

## Anything that speaks OTLP

If your language or framework is not listed, point its OpenTelemetry SDK (or an OpenTelemetry Collector) at the ingest endpoint with the standard environment variables. Ingest keys are scoped to one organization and can only write telemetry. Only the public key (`maple_pk_…`) is safe to ship in client code; keep the private key (`maple_sk_…`) in an environment variable or a secret store. See [Authentication](/docs/reference/authentication).

```bash
export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.maple.dev"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer YOUR_INGEST_KEY"
export OTEL_SERVICE_NAME="my-service"
```

Maple reads the standard semantic conventions; the attributes it relies on for the service map, error grouping and sampling-aware throughput are listed in [OpenTelemetry conventions](/docs/concepts/otel-conventions). To develop against a local sink instead of the cloud, run [Maple Local](/docs/local-mode) and point the endpoint at `http://localhost:4318`.

## Data regions

Maple Cloud runs in two regions. An organization's region is chosen during onboarding and cannot be changed afterwards. Send telemetry to the ingest endpoint of your organization's region, with an ingest key created in that region's dashboard. A key from one region is rejected by the other.

| Region                     | Dashboard                  | Ingest endpoint               |
| -------------------------- | -------------------------- | ----------------------------- |
| United States              | `https://app.maple.dev`    | `https://ingest.maple.dev`    |
| European Union (Frankfurt) | `https://app.eu.maple.dev` | `https://ingest.eu.maple.dev` |

Every guide on this site uses the US endpoint. For an EU organization, replace `ingest.maple.dev` with `ingest.eu.maple.dev` and nothing else changes. See [Regions](/docs/reference/regions) for details and [EU hosting](/eu) for what the EU region covers.

Missing a guide for your stack? [Open an issue](https://github.com/MapleTechLabs/maple/issues) and tell us what you run.
