VS Code Extension
autotel-vscode puts the receiver in your editor. It listens for OTLP/HTTP
on 127.0.0.1:4318, buffers traces and logs in memory, and surfaces them
in the activity bar. Spans that carry code.filepath and code.lineno
jump straight to the source line.
No daemon, no separate collector, no account. Point any OTLP-compatible
exporter at http://127.0.0.1:4318 and the data shows up in the
sidebar.
Installation
Section titled “Installation”The extension publishes to the VS Code Marketplace as jagreehal.autotel.
Install from the Extensions view, or from the command line:
code --install-extension jagreehal.autotelReload the window. A radio-tower icon appears in the status bar once the receiver is up.
Sending data
Section titled “Sending data”Most OTLP/HTTP exporters need no extra configuration. The OpenTelemetry SDK defaults already match.
OTEL_EXPORTER_OTLP_PROTOCOL=http/json \OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 \node app.jsWith autotel, the same applies. init() honours OTEL_EXPORTER_OTLP_ENDPOINT,
so no code change is needed:
import { init, withTracing } from 'autotel';
init({ service: 'my-app' });
const checkout = withTracing({ name: 'checkout' })( (ctx) => async (req, res) => { ctx.setAttribute('order.id', req.body.id); // ... },);What the activity bar shows
Section titled “What the activity bar shows”The Services view lists every service that has sent a span, with span and error counts. The Traces view is the recent trace list, newest first; expand a trace to see its spans and click a span to open it. The Logs view shows the most recent log records with severity hints.
The Errors view is the one that earns its keep on a noisy day: it
groups exceptions by fingerprint, so the same TypeError across ten
traces collapses into one row with a count of ten, not ten separate
rows.
The buffer is in-memory. When it fills up, older entries are dropped and the dropped count shows in the status bar tooltip. The defaults (10,000 spans, 10,000 logs) are enough for hours of typical local development.
Span detail
Section titled “Span detail”Right-click any span and pick Open Span Detail to open it in a webview. The view shows identity, timing, status, attributes (sorted), and any events. If the span has source metadata, a Reveal Source button opens the file at the right line.
The webview talks back to the extension over postMessage. It can ask
the extension to reveal source or copy the span ID; it cannot mutate
buffer state. CSP is locked down with a per-render nonce, so only the
bundled webview script runs.
Commands
Section titled “Commands”| Command | Description |
|---|---|
Autotel: Start Receiver |
Start the OTLP HTTP receiver. |
Autotel: Stop Receiver |
Stop the receiver and free the port. |
Autotel: Set Receiver Port |
Change the listen port. Saved to workspace settings. |
Autotel: Clear Buffered Data |
Drop all buffered spans, logs, and error groups. |
Autotel: Reveal Span Source |
Jump to code.filepath:code.lineno for the selected span. |
Autotel: Copy Span ID |
Copy the span ID to the clipboard. |
Autotel: Open Span Detail |
Open the span in the detail webview. |
Autotel: Open Devtools UI |
Open the receiver’s embedded devtools UI. |
Autotel: Open Metrics |
Show local service and operation latency/error summaries. |
Autotel: Open Service Map |
Show cross-service edges from buffered traces. |
Autotel: Query Remote Backend |
Pull recent traces from the configured read backend. |
Autotel: Set Remote Backend Credential |
Save a backend credential in VS Code SecretStorage. |
Autotel: Clear Remote Backend Credential |
Remove a saved backend credential. |
Settings
Section titled “Settings”| Setting | Default | Description |
|---|---|---|
autotel.receiver.autoStart |
onAutotelProject |
off, start only for an Autotel workspace, or always. |
autotel.receiver.host |
127.0.0.1 |
Bind host. Non-loopback values require confirmation. |
autotel.receiver.port |
4318 |
TCP port. Standard OTLP/HTTP port. |
autotel.buffer.maxSpans |
10000 |
Span buffer cap. Older entries drop first. |
autotel.buffer.maxLogs |
10000 |
Log buffer cap. |
autotel.buffer.maxAgeMs |
1800000 |
Reserved for future age-based eviction. |
autotel.devtools.url |
null |
Devtools UI override; otherwise uses the receiver host and port. |
autotel.backend.type |
none |
jaeger, tempo, honeycomb, datadog, logfire, or signoz. |
autotel.backend.url |
null |
Remote read API base URL. |
autotel.backend.dataset |
null |
Dataset/scope required by backends such as Honeycomb. |
autotel.codeLens.enabled |
true |
Show count, p50, p95, and error rate above instrumented functions. |
The default auto-start mode scans workspace package.json files and binds the
receiver only when it finds an autotel or autotel-* dependency. Use
Autotel: Start Receiver in other workspaces.
Querying remote traces
Section titled “Querying remote traces”Choose autotel.backend.type, autotel.backend.url, and any required dataset
in workspace settings. Store credentials with Autotel: Set Remote Backend
Credential; they are written to VS Code SecretStorage, not settings.json.
| Backend | Credential entered in the command |
|---|---|
| Jaeger | none |
| Tempo | optional bearer token |
| Honeycomb | API key; also set autotel.backend.dataset |
| Datadog | <api-key>:<application-key> |
| Logfire | read-scope token |
| SigNoz | optional API key for authenticated deployments |
Run Autotel: Query Remote Backend, select a service, and the extension pulls
up to 50 recent traces into the same in-memory buffer used by the tree views,
span detail, CodeLens, metrics panel, and embedded devtools UI. Vendor adapters
retry HTTP 429 responses using Retry-After when provided.
When the port is taken
Section titled “When the port is taken”If something else is already on 4318 (an OpenTelemetry Collector is the
usual culprit), the extension cannot bind. The status bar shows
“Autotel port busy” and a warning fires. Run Autotel: Set Receiver Port
and pick another port. Update your app’s OTEL_EXPORTER_OTLP_ENDPOINT
to match.
Security notes
Section titled “Security notes”- The receiver binds to
127.0.0.1by default. Setting the host to something non-loopback prompts before starting. - The
revealSourcecommand rejects paths outside any workspace folder. The check usespath.relativeagainst the resolved workspace root, so symlink games and..traversal cannot escape. - Maximum request body is 10 MB. Anything larger returns
413 Payload too large. - Remote-backend credentials live in
vscode.SecretStorage; only backend type, URL, and dataset live in workspace settings.
Compatibility
Section titled “Compatibility”- VS Code
1.120or later. - OTLP/HTTP with JSON. Protobuf is not yet supported.
- Works with autotel and with vanilla OpenTelemetry SDKs.