Application logs with correlation ids
A Logthread SDK. One line at startup, one id per request.
Developers
Pick what you need by language and by purpose. Logs get a small SDK with correlation ids; traces and metrics use standard OpenTelemetry, with optional one-line Logthread distros for Node.js, Python and .NET that set the endpoint, the key and a cardinality guard; LiveKit and the usual collectors have ready-made packs and configs.
Every package is built from source, with a SHA-256 you can check.
export LOGTHREAD_ENDPOINT=https://ingest.logthread.com export LOGTHREAD_INGEST_KEY=<your ingest key>
Find your download
Choose a purpose, then your language. Each link jumps to the exact package, install command and docs.
A Logthread SDK. One line at startup, one id per request.
Standard OpenTelemetry, plus optional one-line distros (@logthread/node/otel, logthread[otel], Logthread.OpenTelemetry) that reuse your endpoint and key.
The Logthread Agent collects logs and metrics from the machine itself.
Server, SIP, agents and webhooks, grouped by room.
Point the tools you already run at Logthread.
Logging SDKs
The SDKs never block your code: a log call joins a bounded queue and a background task delivers batches. Every log written while handling one request carries the same correlation_id, so Logthread shows that request as one story across services. They are optional; OpenTelemetry and the collectors below also deliver logs.
The packages are hosted here, not yet on npm, PyPI or NuGet. Each install command below pulls straight from downloads.logthread.com, the Logthread downloads site.
Application logs with correlation ids
Batched, non-blocking log delivery for Node.js 18+. No runtime dependencies, ESM and CommonJS. Captures console output and adds per-request correlation ids for Express, Fastify, Koa and plain http.
npm install https://downloads.logthread.com/sdk/node/0.2.1/logthread-node-0.2.1.tgzApplication logs with correlation ids
Standard-library logging in, searchable logs out. No runtime dependencies, Python 3.9+, with per-request correlation ids for FastAPI/Starlette, Flask/WSGI and Django.
pip install https://downloads.logthread.com/sdk/python/0.2.1/logthread-0.2.1-py3-none-any.whlCore client (no logging framework)
The non-blocking, bounded OTLP/JSON client on its own. netstandard2.1 and net8.0, no dependencies.
Once per repository, next to your .sln or .csproj, fetch the NuGet config (Logthread packages come only from the Logthread downloads site, everything else from nuget.org; already have a nuget.config? copy its lines in):
curl -fsSLo nuget.config https://downloads.logthread.com/sdk/nuget/nuget.configThen, in your project:
dotnet add package LogthreadMicrosoft.Extensions.Logging (ILogger) provider
Sends ILogger output to Logthread with builder.Logging.AddLogthread(). Pulls in the core client.
Once per repository, next to your .sln or .csproj, fetch the NuGet config (Logthread packages come only from the Logthread downloads site, everything else from nuget.org; already have a nuget.config? copy its lines in):
curl -fsSLo nuget.config https://downloads.logthread.com/sdk/nuget/nuget.configThen, in your project:
dotnet add package Logthread.Extensions.LoggingASP.NET Core per-request correlation ids
Middleware that gives every request a correlation id so one request reads as one story. Add it next to the logging provider.
Once per repository, next to your .sln or .csproj, fetch the NuGet config (Logthread packages come only from the Logthread downloads site, everything else from nuget.org; already have a nuget.config? copy its lines in):
curl -fsSLo nuget.config https://downloads.logthread.com/sdk/nuget/nuget.configThen, in your project:
dotnet add package Logthread.AspNetCoreTraces and metrics
For .NET, one line wires traces, metrics, slow queries and active users with safe defaults. For every other language, use the OpenTelemetry SDK or agent and point it at Logthread with these environment variables. The same key and endpoint carry logs too.
Traces, metrics, slow queries and active users
builder.AddLogthread() wires OpenTelemetry for ASP.NET Core, HttpClient, SQL Server and EF Core: request and endpoint metrics, normalised slow-query timings, active users and runtime health, with a cardinality guard. net8.0 and net9.0.
Once per repository, next to your .sln or .csproj, fetch the NuGet config (Logthread packages come only from the Logthread downloads site, everything else from nuget.org; already have a nuget.config? copy its lines in):
curl -fsSLo nuget.config https://downloads.logthread.com/sdk/nuget/nuget.configThen, in your project:
dotnet add package Logthread.OpenTelemetryRunnable example: ASP.NET Core, EF Core and SQL Server
A minimal API with EF Core (SQLite or SQL Server) that sends traces, metrics, slow queries and logs with builder.AddLogthread(). It restores Logthread.OpenTelemetry from the Logthread NuGet feed. The .NET end to end guide walks through it.
curl -fsSLO https://downloads.logthread.com/examples/dotnet-aspnetcore-efcore/0.2.1/logthread-dotnet-aspnetcore-efcore-0.2.1.zip && unzip logthread-dotnet-aspnetcore-efcore-0.2.1.zipexport OTEL_SERVICE_NAME="my-app" export OTEL_EXPORTER_OTLP_ENDPOINT="https://ingest.logthread.com" export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer%20$LOGTHREAD_INGEST_KEY" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp"
/v1/traces, /v1/metrics and /v1/logs itself.Node.js
HTTP servers, Express, database clients and more produce traces and metrics with no code changes. Logs from pino, winston or bunyan are exported too.
npm install @opentelemetry/api @opentelemetry/auto-instrumentations-node node --require @opentelemetry/auto-instrumentations-node/register app.js
Python
Web frameworks and clients are traced and measured, and standard library logging is bridged to OpenTelemetry.
pip install opentelemetry-distro opentelemetry-exporter-otlp opentelemetry-bootstrap -a install export OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED="true" opentelemetry-instrument python app.py
Java
The agent traces frameworks and clients, records JVM metrics and captures Logback and Log4j output. Download opentelemetry-javaagent.jar from the OpenTelemetry Java releases.
java -javaagent:./opentelemetry-javaagent.jar -jar app.jar
.NET
The OpenTelemetry .NET auto-instrumentation attaches to a running app. For application logs with correlation ids, combine it with the Logthread .NET packages above.
curl -L -O https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh sh ./otel-dotnet-auto-install.sh . $HOME/.otel-dotnet-auto/instrument.sh dotnet run
Go
Go has no zero-code agent, so you add the modules and initialise the SDK once in main. The app's Connect a source page generates the full main.go for your service name.
go get go.opentelemetry.io/otel \
go.opentelemetry.io/otel/sdk \
go.opentelemetry.io/otel/sdk/metric \
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp \
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttpLogthread Agent
An OpenTelemetry Collector distribution with ready profiles for Windows Server (Event Log and performance counters), IIS, SQL Server (metrics, slowest statements, ERRORLOG), Linux hosts and Docker. It sends standard OTLP to Logthread with your ingest key and runs as a service. The Linux path is verified; the Windows and macOS builds are beta.
Debian, Ubuntu, RHEL, Rocky, Alma, Amazon Linux, Fedora, SUSE; x64 and arm64
The installer picks the right package, verifies its SHA-256, writes the key to a root-only file and starts a systemd service. Add profiles such as docker or sqlserver with --profiles.
curl -sSL https://downloads.logthread.com/agent/install.sh | sudo sh -s -- --key YOUR_INGEST_KEY --profiles linux-hostWindows Server 2016 and later, Windows 10 and 11 (x64). Beta
Event Log, performance counters, IIS and SQL Server, as a Windows service. Run from an elevated PowerShell. The Windows parts are labelled beta until they have been verified on a real Windows machine; the zip is unsigned (checksums only).
Invoke-WebRequest https://downloads.logthread.com/agent/install.ps1 -OutFile install.ps1
.\install.ps1 -Key YOUR_INGEST_KEY -Profiles windows-server,iisApple silicon and Intel. Tarball only, beta
Download the tarball for your Mac, verify it against SHA256SUMS.txt and follow the macOS steps in the docs (binaries, profiles and a launchd job).
Not published yet
There is no hosted Logthread Agent image yet. To run the agent in a container today, build the image from the Linux tarball as described in the docs, or install the Linux package on the Docker host and enable the docker profile.
Checksums: SHA256SUMS.txt · manifest: manifest.json · installers: install.sh, install.ps1. Every package has a CycloneDX SBOM.
| File | For | Size | SHA-256 | SBOM |
|---|---|---|---|---|
| logthread-agent_0.2.6_linux_amd64.deb | Linux x64 (.deb) | 72.9 MB | dd9eec4c3cc7f95241fd54ca14ea31dca0ac26ba4ec86eb69ccd3169e056d278 | SBOM |
| logthread-agent_0.2.6_linux_amd64.rpm | Linux x64 (.rpm) | 75.0 MB | daf5c70ba76f420227519f29ad8af2ef3e4c536d40c0eb8d363d6f8260f0bef2 | SBOM |
| logthread-agent_0.2.6_linux_amd64.tar.gz | Linux x64 (.tar.gz) | 71.0 MB | 22031f1e736926c07c9dc2c733b67b05e8bc22e218a69208a4caeed344892092 | SBOM |
| logthread-agent_0.2.6_linux_arm64.deb | Linux arm64 (.deb) | 65.7 MB | de529b72bacda8ed0829874514dba8e4c381cd38a603afe349541131fdfc445d | SBOM |
| logthread-agent_0.2.6_linux_arm64.rpm | Linux arm64 (.rpm) | 67.4 MB | a50e57f4446009f02e7acc6c83b2863f0db7597269d628850a8d84abdf8b007a | SBOM |
| logthread-agent_0.2.6_linux_arm64.tar.gz | Linux arm64 (.tar.gz) | 63.5 MB | 0249071406de36b839e373c036b5984de9bdbc6c7243a4a352b8c86536420e95 | SBOM |
| logthread-agent_0.2.6_windows_amd64.zip (beta) | Windows x64 (.zip) | 72.7 MB | 54c590cf98ecb1cd4c209d2d052df6428074f588462643750898ce379eaece88 | SBOM |
| logthread-agent_0.2.6_darwin_arm64.tar.gz (beta) | macOS Apple silicon (.tar.gz) | 67.2 MB | 9cb17d245c90f9ba5c15b2217315fd3b5d3c2b5bf49e5db3f8ec0a812400ad34 | SBOM |
| logthread-agent_0.2.6_darwin_amd64.tar.gz (beta) | macOS Intel (.tar.gz) | 72.8 MB | 6fd3b35429c200e53c7a3fd8f1dffaa6bcf46a3d7a4eabba5f855d3c89ae21a7 | SBOM |
Agent documentation .NET, EF Core and SQL Server, end to end Manage agents in Fleet
LiveKit
Ship a self-hosted LiveKit deployment (Server, SIP, Egress, Ingress) with the collector pack, instrument your agents with a one-line helper, or connect LiveKit Cloud with a webhook. One room session reads as one story.
Server, SIP, Egress and Ingress logs and metrics
OpenTelemetry Collector config, Docker Compose service, Helm values and a metrics guide that ship a self-hosted LiveKit deployment to Logthread, with one room session read as one story.
curl -fsSLO https://downloads.logthread.com/sdk/livekit-collector-pack/0.1.1/logthread-livekit-collector-pack-0.1.1.zip && unzip logthread-livekit-collector-pack-0.1.1.zipParse LiveKit agent logs at ingest
A ready-made Pipelines preset for LiveKit agent logs. Import it under Pipelines in the app.
curl -fsSLO https://downloads.logthread.com/sdk/livekit-pipeline/0.1.1/livekit-agent-logs-pipeline-0.1.1.jsonLiveKit Agents helper
One line in a LiveKit agent sends its traces, token and audio usage, latency metrics and correlated logs. Python 3.10+. Needs the Python logging SDK, so the command installs both.
pip install https://downloads.logthread.com/sdk/python/0.2.1/logthread-0.2.1-py3-none-any.whl https://downloads.logthread.com/sdk/livekit-agents-python/0.1.1/logthread_livekit-0.1.1-py3-none-any.whlLiveKit Agents helper
The same one-line instrumentation for LiveKit Agents on Node.js 18+. Needs the Node.js logging SDK, so the command installs both.
npm install https://downloads.logthread.com/sdk/node/0.2.1/logthread-node-0.2.1.tgz https://downloads.logthread.com/sdk/livekit-agents-node/0.1.1/logthread-livekit-agents-0.1.1.tgz @opentelemetry/apiLiveKit Cloud and webhooks
For LiveKit Cloud, or any server that can send signed webhooks, open Integrations, choose Add LiveKit and paste the generated webhook URL into LiveKit. The app also creates the ingest key and the ready-made dashboards.
Collectors and shippers
Nothing to download: these are configuration snippets for tools you install from their own projects. They use the placeholder $LOGTHREAD_INGEST_KEY. The app's Connect a source page generates the same configs with your service name, attributes and a key already filled in.
OpenTelemetry Collector
Add this exporter to the Collector (contrib distribution) and put it in each pipeline you want to send.
exporters:
otlphttp/logthread:
endpoint: https://ingest.logthread.com
headers:
Authorization: "Bearer ${env:LOGTHREAD_INGEST_KEY}"
compression: gzip
retry_on_failure:
enabled: true
sending_queue:
enabled: trueOTLP gRPC is accepted too. Full config in Connect a source
Kubernetes
Run the Collector as a daemonset: it collects every pod's logs and accepts traces and metrics from your workloads. The key lives in a Kubernetes secret.
kubectl create secret generic logthread-ingest \ --from-literal=key="$LOGTHREAD_INGEST_KEY" helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm upgrade --install logthread-collector open-telemetry/opentelemetry-collector \ -f logthread-values.yaml
Prometheus
Needs Prometheus 3.0 or later. Remote write 1.0 is refused. Your scrape configs stay as they are. Prometheus cannot read environment variables, so paste the key or use credentials_file.
global:
scrape_native_histograms: true
remote_write:
- url: https://ingest.logthread.com/api/v1/write
protobuf_message: io.prometheus.write.v2.Request
authorization:
credentials: <your ingest key>Fluent Bit
Export LOGTHREAD_INGEST_KEY in Fluent Bit's environment. A Forward-over-TLS output is also available in Connect a source.
[OUTPUT]
Name http
Match *
Host ingest.logthread.com
Port 443
URI /v1/ndjson
Format json_lines
Json_date_key timestamp
Json_date_format iso8601
Header Authorization Bearer ${LOGTHREAD_INGEST_KEY}
Compress gzip
Tls On
Retry_Limit FalseFluentd
The same Forward handshake as Fluent Bit's forward output: the ingest key is both the shared key and the username. Check it against your Fluentd version with the keyed example in Connect a source.
<match app.**>
@type forward
transport tls
require_ack_response true
<security>
self_hostname "#{Socket.gethostname}"
shared_key "#{ENV['LOGTHREAD_INGEST_KEY']}"
</security>
<server>
host ingest.logthread.com
port 24224
username "#{ENV['LOGTHREAD_INGEST_KEY']}"
password logthread
</server>
<buffer>
@type file
path /var/log/fluent/logthread
retry_forever true
</buffer>
</match>Vector
Export LOGTHREAD_INGEST_KEY in Vector's environment.
sinks:
logthread:
type: http
inputs: [your_source_or_transform]
uri: https://ingest.logthread.com/v1/ndjson
method: post
compression: gzip
encoding:
codec: json
framing:
method: newline_delimited
auth:
strategy: bearer
token: "${LOGTHREAD_INGEST_KEY}"rsyslog and syslog-ng
Logthread accepts RFC 5424 syslog over TLS, octet-counted or newline framed, up to 64 KB per message. The key travels in the structured-data element logthread@53595 and is bound to the connection. rsyslog can also use the HTTP output (omhttp) shown in Connect a source.
rsyslog (package rsyslog-gnutls)
global(DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt") template(name="logthreadSyslog" type="string" string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% [logthread@53595 key=\"YOUR_INGEST_KEY\"] %msg%\n") action(type="omfwd" target="ingest.logthread.com" port="6514" protocol="tcp" template="logthreadSyslog" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="ingest.logthread.com" queue.type="LinkedList" queue.filename="logthread_syslog_q" action.resumeRetryCount="-1")
syslog-ng (same wire format; confirm on a test message)
destination d_logthread {
network("ingest.logthread.com" port(6514) transport("tls")
tls(ca-dir("/etc/ssl/certs") peer-verify(required-trusted))
template("<${PRI}>1 ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MSGID} [logthread@53595 key=\"YOUR_INGEST_KEY\"] ${MESSAGE}\n")
template-escape(no));
};
log { source(s_src); destination(d_logthread); };Plain JSON lines also work from anything that can run curl: POST https://ingest.logthread.com/v1/ndjson with Authorization: Bearer <key>. Connect a source has a tested example.
Fleet
Run the OpenTelemetry OpAMP Supervisor next to a Collector and manage it from Logthread: live inventory and health, versioned configs targeted by labels, rollout status and one-click rollback. Fluent Bit and Vector have no OpAMP support, so they stay as unmanaged sources.
No download from Logthread
Install the supervisor from the OpenTelemetry Collector project, then open Fleet and the Install tab for the OpAMP endpoint, the environment to set with one of your ingest keys, and supervisor config files with run commands. The collector appears in Fleet as soon as it connects.
Query and AI agents
Parse and aggregate logs at query time with the Explore query language, and connect AI coding agents to the same data over the Model Context Protocol. Both use Logthread keys and stay inside your workspace.
Explore
Filter with service:api severity:error, then pipe: | json, | logfmt, | regexp, | pattern, | where status >= 500, | fields to pick columns, and | stats p95(duration_ms) by route. The editor highlights and completes as you type.
service:web | pattern "<ip> - - [<_>] \"<method> <path> <_>\" <status>" | where status >= 500 | stats count() by pathMCP server
Claude Code, Cursor, VS Code, Codex and any Streamable HTTP MCP client can search logs, follow a request's full story, read traces, metrics, patterns and alerts. Create a read-only API key in the app, then add the server:
claude mcp add --transport http logthread https://logthread.com/mcp --header "Authorization: Bearer $LOGTHREAD_API_KEY"All files
Check a file with shasum -a 256 <file> (macOS, Linux) or Get-FileHash <file> (Windows). The same list is machine-readable at /sdk/manifest.json.
| File | For | Version | Size | SHA-256 |
|---|---|---|---|---|
| logthread-node-0.2.1.tgz | Node.js | 0.2.1 | 51.5 KB | fa8c1c712c91d95369a26d4acce9d7e6edc5569681c34ac78d6e5d56b5507f44 |
| logthread-0.2.1-py3-none-any.whl | Python | 0.2.1 | 54.6 KB | 163a3d620fd7552a858bc110a7b3b804947d9aa339f2b71e68b70cf864ccea73 |
| logthread.0.2.1.nupkg | .NET | 0.2.1 | 96.2 KB | 32b656fd450e4d09f47304bf47c1bb52916b591fc915d2fc68362e485d2e6e80 |
| logthread.extensions.logging.0.2.1.nupkg | .NET | 0.2.1 | 10.3 KB | e9b9919ef111262213c6415426488c8d24547572193327cf7541a7fac17ea524 |
| logthread.aspnetcore.0.2.1.nupkg | .NET | 0.2.1 | 7.7 KB | 70cc5ce00e669bdf7f6b99f95341ed444b44413dc3795c6bd4e8c55c34f6ec54 |
| logthread.opentelemetry.0.2.1.nupkg | .NET | 0.2.1 | 60.3 KB | 029e48f2606d719c2054a4fbef2fd34f29c4147c7dad5f3c5e150f6d8700868e |
| logthread-livekit-collector-pack-0.1.1.zip | Self-hosted LiveKit | 0.1.1 | 11.6 KB | 3c340e2f1f63f98ede6fee4352346997673a749ce0ce741a993415c364778ad5 |
| livekit-agent-logs-pipeline-0.1.1.json | Pipelines | 0.1.1 | 2.2 KB | 0d973aa1a52c75aa711092b713280f42b0a7abc36d0661928d649737dcc736bd |
| logthread_livekit-0.1.1-py3-none-any.whl | Python | 0.1.1 | 25.6 KB | d0d92c20a023924c6aa51bb09b87b254c4ee3679680c93d1cef0293b055c4cd4 |
| logthread-livekit-agents-0.1.1.tgz | Node.js | 0.1.1 | 23.2 KB | 6f0ca458f5024dba98480dc1cfe9d3dab875fe594bc130d75ded442fe2b2f360 |
| logthread-dotnet-aspnetcore-efcore-0.2.1.zip | .NET | 0.2.1 | 4.4 KB | 3dca1f7b0961307267e5123dce980f4713d21cdd10b78f47269476eb0a179563 |
Package indexes for mirrors and proxies: pip https://logthread.com/sdk/python/simple/ · NuGet https://downloads.logthread.com/sdk/nuget/index.json (with the source mapping).
FAQ
Right here. The Logthread SDKs for Node.js, Python and .NET, the Logthread Agent, the LiveKit collector pack and the LiveKit agent helpers are hosted on this page, grouped by language and purpose, each with a copyable install command, its size and SHA-256. They are not on npm, PyPI or NuGet yet, so the commands install from downloads.logthread.com. A machine-readable list is at downloads.logthread.com/sdk/manifest.json.
Install the Logthread Agent on the machine and enable the matching profiles (sqlserver, iis, windows-server). It needs only your ingest key; the SQL Server profile also needs a read-only monitoring login, which the docs show. The Windows builds are beta. See Logthread Agent and the .NET end to end guide.
Not necessarily. Traces and metrics use standard OpenTelemetry: set the endpoint and your ingest key as shown in the Traces and metrics section, or use the optional Logthread distros (@logthread/node/otel, logthread[otel], Logthread.OpenTelemetry), which do that in one line and add gzip and a metric cardinality guard. The Logthread SDKs add per-request correlation ids to application logs, and the LiveKit helpers add agent instrumentation.
Node.js: npm install followed by the tarball URL. Python: pip install followed by the wheel URL (in requirements.txt, logthread @ https://downloads.logthread.com/sdk/python/0.1.1/…whl). .NET: put the Logthread nuget.config next to your solution, then dotnet add package. Every command names Logthread's own files or feed, so a package with the same name on a public registry is never picked up by mistake.
Yes, through the Logthread MCP server at https://logthread.com/mcp. Create an API key in the app (read-only, scoped to one workspace, revocable), then add the server to Claude Code, Cursor, VS Code, Codex or any MCP client that speaks Streamable HTTP. Agents can search logs, follow a correlation id across services, and read traces, metrics, patterns and alerts. Ingest keys never grant read access. See AI agents (MCP).
Yes. In Explore, add pipe stages after your filters: | json, | logfmt, | regexp with named groups, or | pattern, then filter with | where, choose columns with | fields and aggregate with | stats. See the query language guide.
Compare its SHA-256 with the value shown on its card, in the table of all files, or in the manifest. Everything is served over HTTPS from downloads.logthread.com.
Node.js 18 or newer (ESM and CommonJS), Python 3.9 or newer (the LiveKit helper needs 3.10), and .NET 8 for the logging provider and ASP.NET Core package (the core client also targets netstandard2.1). Each README lists the details.
Use OpenTelemetry for it (Java and Go are covered above), or send JSON lines with curl or any HTTP client. Everything lands in the same place and is searchable the same way.
Ready when you are
Create a write-only ingest key, pick a package above, and watch your logs arrive.