Authorization: Bearer <jwt> (or an API token
— see Security), except the push connectors, which use a
connector token.
Supported protocols
| Protocol | Endpoint | Drop-in for |
|---|---|---|
| OTLP gRPC | :5082 | OpenTelemetry SDK / Collector |
| OTLP HTTP | POST /api/v1/{logs,metrics,traces} | OTel HTTP exporter |
| Prometheus remote_write | POST /api/v1/prometheus/api/v1/write | Prometheus / VictoriaMetrics |
Elasticsearch _bulk | POST /api/v1/_bulk | Filebeat, Vector ES sink, Logstash |
| Loki push | POST /api/v1/loki/api/v1/push | Promtail, Vector Loki sink |
| Syslog UDP/TCP | [syslog] udp/tcp bind | rsyslog, syslog-ng |
| Kinesis Firehose | POST /api/v1/_kinesis_firehose | AWS Firehose |
| Cloudflare Logpush | POST /api/v1/_cloudflare | Cloudflare Logpush |
| Heroku log drain | POST /api/v1/_heroku | Heroku |
| Native HTTP JSON | POST /api/v1/ingest/{type}/:stream | curl / app SDK |
Syslog has no authentication or org context, so it’s bound to a single org and stream through
[syslog] config (udp_bind / tcp_bind / org / stream); RFC3164 and RFC5424 are parsed
(PRI → facility/severity, hostname, app, message). Kinesis Firehose, Cloudflare Logpush, and Heroku
log drains are configured per source — see the Connectors guide.Syslog
Syslog can’t carry aBearer token, so it’s pinned to one organization and stream in config rather
than authenticated per request. Enable a listener and bind it to an org slug:
<PRI> priority (decoded to facility / severity), then as RFC5424
(1 …) or RFC3164, extracting hostname, app_name, and message. Point any standard daemon at it
— for example rsyslog: *.* @ms-host:5514 (UDP) or @@ms-host:5514 (TCP).
Native HTTP JSON
The simplest path. POST an array of records toingest/{logs,metrics,traces}/{stream}. Timestamps
are microseconds since the Unix epoch, in the _timestamp field.
OpenTelemetry
- OTLP HTTP
- OTLP gRPC
Point your OTel HTTP exporter at MoleSignal:Logs, metrics, and traces post to
/api/v1/logs, /api/v1/metrics, and /api/v1/traces.Prometheus remote_write
Add MoleSignal as a remote write target inprometheus.yml:
Loki and Elasticsearch
Pipeline functions
You can transform events on the ingest hot path with pipeline functions — reusable transforms attached to a pipeline step. Two languages are supported:- VRL — always available. Compiled per
(function_id, updated_at)with thevrl::compilerstdlib (del,parse_json,to_int,match,encrypt/decrypt, …). - JavaScript — opt-in, built on
deno_core(V8). Disabled by default; enabling it requires both a build feature (--features molesignal-bootstrap/js-runtime) and the TOML gate[functions] js_runtime_enabled = true.