How Squasher finds services
A service is oneservice.name that sends server or consumer spans. Squasher reads the request
rate, error rate, and p50, p95, and p99 latency of each service from those spans. Set
OTEL_SERVICE_NAME to give each service a clear name.
To see the services of a project, open the project and select Services in the sidebar, under
Telemetry. Select Releases to see its releases.
Service health
Squasher sets the health of a service from its server error rate over the selected window:
A service also shows its operations, the services that call it (upstream), the services it calls
(downstream), the databases it calls, and its releases. The default window is the last 24 hours.
The longest window is 7 days.
The service map
The service map shows services and databases as nodes. An edge is a call from one service to another service, or from a service to a database. Each node and edge has a request count, an error rate, and an average latency. Squasher adds a database node for each database system that your client spans name in thedb.system.name attribute, for example postgresql or redis. Most OpenTelemetry database
instrumentations set this attribute.
How Squasher finds releases
A release is one version of one service in one environment. The version comes from theservice.version resource attribute. The environment comes from deployment.environment.name.
Each release has a confidence:
- Confirmed: a deployment record with the status
readynames the version. Deployment records come from connected Vercel, Railway, and GitHub providers, or from the Deployments API. - Inferred: only telemetry names the version. No deployment record matches it.
Send the version with your telemetry
Addservice.version to the resource attributes of each service. With the standard OpenTelemetry
variables:
Record a deploy
To confirm a release, record the deploy from your CI/CD pipeline withdeployments.create. Use
the same service name, version, and environment that your telemetry sends.
deployments:write scope. See the Deployments API.
Serving interval
A release starts at the deploy time or at its first span or log, whichever is earlier. It ends when the next release of the same service and environment starts. The release that serves now is the current release. When you roll back to an older version, that release keeps its first start time.Release health
Squasher compares each release with the release of the same service and environment that served before it:- It takes the first 24 hours of the release. When the release served for less time, it takes the whole serving time, and at least 5 minutes.
- It takes the same length of time just before the release started, while the previous release served.
- It compares the error rate, the p50, p95, and p99 latency, and the requests per minute of the two windows.
The comparison also lists the new issues of the service that were first seen in the release window.
The numbers cover the service over time, not one version. During a rolling deploy, the old and the
new version serve at the same time, so the first minutes mix both versions.
Use services and releases from the CLI and MCP
services.list, services.get, services.map, releases.list, and
releases.get through MCP Code Mode. All five are read-only.
Next steps
Services API
Read services and the service map from a script.
Releases API
Read releases and their health comparison.
Send traces with OpenTelemetry
Send spans and logs with a service name and version.
Deployments API
Record deploys from any CI/CD pipeline.