TracePath Cloud
From an empty account to a trace on screen. Three steps, plus a smoke test you can run before touching your application — and no TracePath-specific dependency at any point.
1. Create an account
Sign up at app.tracepath.dev/register (opens in a new tab).
- Register with an email address and a password, or with one of the sign-in providers offered on that page.
- If you registered with a password, confirm the verification link we email you, then sign in.
- On first sign-in you name your organization. An organization owns your projects, your members and your plan; you are its owner.
Sign-in supports TOTP two-factor authentication, with automatic lockout after repeated failed codes. Self-serve enrolment is not in the dashboard yet — write to [email protected] if you need it on your organization before it lands.
2. Create a project and copy its token
A project is one instrumented system with its own ingest token, its own dashboards and its own issue feed. Most teams run one project per deployable service, plus one per environment that has to stay separate — see Project Structure.
Create one from the dashboard and pick the framework OpenTelemetry for anything that runs on a server. Then open the project's Connection page and copy the project token: a 32-character hex string with no prefix.
The project token is the only credential the ingest endpoint accepts, and it is scoped to that one project. It carries no user identity, but anyone holding it can write telemetry into the project, so treat it like any other deployment secret — environment variable, not source control. Organization members with the read-only role never see it.
3. Point an exporter at the ingest endpoint
Every OpenTelemetry SDK and the OpenTelemetry Collector read the standard OTEL_*
environment variables. These are the ones that matter here:
export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.tracepath.dev/api/otel"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <project token>"
export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
export OTEL_SERVICE_NAME="checkout-api"The SDK appends /v1/traces, /v1/metrics and /v1/logs to the endpoint itself, so
set the base path and nothing else. OTEL_EXPORTER_OTLP_PROTOCOL is not optional in
practice: TracePath has no gRPC endpoint, and several SDKs pick gRPC when the
variable is unset, which fails without an error message.
A Node.js service wired by hand, with the same two settings:
import { NodeSDK } from '@opentelemetry/sdk-node'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
const sdk = new NodeSDK({
traceExporter: new OTLPTraceExporter({
url: 'https://ingest.tracepath.dev/api/otel/v1/traces',
headers: { Authorization: `Bearer ${process.env.TRACEPATH_TOKEN}` },
}),
})
sdk.start()Traces, metrics and logs are three independent signals with three separate exporters. Wiring a trace exporter does not start sending logs. OpenTelemetry Integration has the per-signal and per-language details.
4. Send a first span without touching your app
If you want to prove the token and the endpoint work before you change any code, post
one span by hand. This is a complete, runnable request — paste your token in place of
<project token>:
TRACEPATH_TOKEN="<project token>"
NOW_NS="$(date +%s)000000000"
END_NS="$(( $(date +%s) + 1 ))000000000"
curl -i -X POST https://ingest.tracepath.dev/api/otel/v1/traces \
-H "Authorization: Bearer ${TRACEPATH_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"resourceSpans\": [{
\"resource\": {
\"attributes\": [
{\"key\": \"service.name\", \"value\": {\"stringValue\": \"quickstart\"}}
]
},
\"scopeSpans\": [{
\"scope\": {\"name\": \"manual\"},
\"spans\": [{
\"traceId\": \"5b8efff798038103d269b633813fc60c\",
\"spanId\": \"eee19b7ec3c1b174\",
\"name\": \"GET /hello\",
\"kind\": \"SPAN_KIND_SERVER\",
\"startTimeUnixNano\": \"${NOW_NS}\",
\"endTimeUnixNano\": \"${END_NS}\",
\"attributes\": [
{\"key\": \"http.request.method\", \"value\": {\"stringValue\": \"GET\"}},
{\"key\": \"http.route\", \"value\": {\"stringValue\": \"/hello\"}},
{\"key\": \"http.response.status_code\", \"value\": {\"intValue\": \"200\"}}
]
}]
}]
}]
}"A successful export answers 200 OK with the body {}, in the same encoding you
sent. Within a few seconds GET /hello appears under Endpoints for the project,
attributed to the service quickstart.
The same request with a bad token answers 401 with an empty body. The
Authorization header value must literally begin with Bearer .
What you get back
A span carrying HTTP attributes becomes an endpoint. Spans for queue consumers
and scheduled work become tasks. Exception events recorded on any span become
issues, grouped and ranked. Spans carrying gen_ai.* attributes become AI
traces with token counts and cost. Nothing in your code has to know about any of
those categories — see Architecture Overview.
Next steps
- OpenTelemetry Integration — protocol limits, compression, content types and the language guides.
- Logs and Metrics — the two signals that need wiring beyond the trace exporter.
- Monitors — synthetic checks against your public endpoints.
- On-call — schedules, escalation policies and paging.
- Invite your team from the Settings page, under Team Members. Every member of the organization uses one seat, whatever their role.
- Billing and plans — watch your ingest against the plan allowance before it surprises you.