Public docs

Logtura Docs

How the hosted control panel, open-source forwarder, and deployment model fit together.

GitHub

Architecture

Logtura has two parts:

  1. A hosted control plane at logtura.com. It stores connection metadata, source inventories, monitor and destination definitions, and deployment state.
  2. An open-source forwarder built on Vector. It runs in infrastructure you control and ships logs from providers to destinations.

The forwarder runs on your own machine, Fly app, container, or VM. Log payloads pass from the provider, through the forwarder, to the destination. They do not pass through logtura.com.

Components

ComponentWhere it runsWhat it holds
Control plane APICloudflare Workers + D1Accounts, encrypted credentials, source lists, monitor/destination configs
Web UICloudflare Workers (static)React app served from the same Worker
ForwarderYour Fly app / VM / containerVector binary, generated config, driver helpers (e.g. logtura-cf-tail)
Heartbeat + metrics endpointControl planeLiveness pings and per-source event counters posted by the forwarder

Data flow

provider API ──► forwarder (Vector) ──► destination (Slack, Datadog, S3, …)
                       │
                       └─► control plane: heartbeat, event counters

Log content stays on the left-to-right arrow. The downward arrow carries only operational signals:

  • Forwarder liveness timestamp
  • Per-source event counts in 60-second buckets
  • Vector internal metrics (component errors, buffer depth)
  • Deploy job status

Source kinds

Each source kind has a driver package under packages/:

DriverTransportSelection model
cloudflare-worker-tailWorkers Tail API (per-script multiplex)List of scripts
cloudflare-ai-gatewayAI Gateway logs APIList of gateways
fly-log-tailFly NATS log streamList of apps
railway-logsRailway GraphQL log subscriptionList of services
supabase-edge-logsSupabase logs HTTP pollList of projects
vercel-logsVercel Log Drains receiverAll-of-team
custom-vectorAny Vector sourcePass-through

Destination kinds

DriverSink type
slackSlack incoming webhook
webhookGeneric HTTP POST
datadog-metricsDatadog Metrics API
prometheus-remote-writePrometheus remote-write
custom-vectorAny Vector sink