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

# Continuous profiling

> Send pprof data, inspect flame graphs, and compare CPU, memory, and contention across time windows.

Continuous profiling shows where a service spends CPU time, allocates memory, or waits on locks.
Open **Continuous Profiling** from the main navigation.

## Profile intake

MoleSignal accepts:

* OTLP profiles on the external OTLP gRPC receiver;
* Pyroscope-compatible intake at `/api/v1/profiles/intake`;
* direct pprof uploads at `/api/v1/profiles/upload`;
* individual profile files uploaded from the UI.

Profile metadata is queryable. Canonical pprof blobs are compressed and stored in object storage.

## Analyze a flame graph

Select a service, profile type, and time range. Choose one or more profiles to merge into the
analysis.

The flame graph supports:

* zooming into a stack frame;
* searching and highlighting functions;
* self and cumulative sample values;
* a ranked top-functions view;
* per-function details and stack context;
* live refresh for recent windows.

## Compare two windows

Open **Compare profiles** to select a baseline and comparison range. The diff flame graph highlights
functions that became hotter or cooler, which is useful after a release or configuration change.

Differential profiling requires the `profiling_enhanced` entitlement in Enterprise Edition.
Profile intake, listing, downloads, trace correlation, and single-window flame graphs remain
available without the entitlement.

## Separate application and node profiling

Application profiles belong to organization streams and appear in the product UI. MoleSignal also
has a node-local pprof listener for platform operations. That listener is disabled by default and
should normally remain bound to loopback.

See [Self-observability](/en-US/self-observability) for the node listener and scheduled
`_molesignal` profiles.

## Permissions

* `streams.read` discovers profile data.
* `streams.query` renders and compares flame graphs.
* `streams.write` or an intake credential sends profiles.

<Warning>
  Profiles can reveal function names, code layout, and resource-use patterns. Protect profile
  intake, downloads, and the node pprof listener as sensitive operational data.
</Warning>
