Skip to content

Releases: tinythings/logjet

0.9.0

16 May 21:40

Choose a tag to compare

Summary

OTLP/HTTP ingest now runs on an async hyper+tokio runtime, replacing the previous synchronous tiny_http implementation. No config migration needed — ingest.protocol: otlp-http works identically; only the underlying transport is different.

Async HTTP Ingest

ingest.max-clients now properly gates concurrent HTTP connections (plain and TLS). gRPC, wire, and plugin ingest paths are unchanged.

Rustls Crypto Provider

Rustls 0.23 requires an explicit crypto provider at startup. ljd now installs the ring provider on boot, guarding against future crate updates that may drop the implicit default.

What's Changed

  • Add view tailing by @isbm in #19
  • Add CLI query by @isbm in #20
  • Fix TUI pop-ups when they get ruined by terminal resize by @isbm in #21
  • Extended log view by @isbm in #22
  • Plugins loading path by @isbm in #23
  • Plugins to multiple ingestors by @isbm in #24
  • Multipass! by @isbm in #25
  • Extend ABI for different OTel types by @isbm in #26
  • Ingestor implementation for Google Perfetto by @isbm in #27
  • Cover all perfetto types by @isbm in #28
  • Implement ingestor of Perfetto traces using RPC by @isbm in #29
  • Add metrics and traces support by @isbm in #30
  • Add parquet metrics and traces export by @isbm in #31
  • Operation hardening by @isbm in #32
  • Implement async HTTP by @isbm in #33

Full Changelog: 0.8.0...0.9.0

0.8.0

22 Apr 18:27
3b4c9b8

Choose a tag to compare

What's Changed

  • Address issue where IterMut violates Stacked Borrows by invalidating … by @isbm in #16
  • Add gRPC/mTLS/TLS and fan-out bridge proxy to collectors by @isbm in #17
  • Add version bumping by @isbm in #18

Full Changelog: 0.7.0...0.8.0

0.7.0

20 Apr 23:24
c39662d

Choose a tag to compare

Added exporter C/C++ ABI and headers. This release allows to build your own exporter and load it as .so shared object.

0.6.0

16 Apr 18:43

Choose a tag to compare

What's Changed

Full Changelog: 0.5.0...0.6.0

0.5.0

15 Apr 13:41

Choose a tag to compare

What's Changed

Full Changelog: 0.4.0...0.5.0

0.4.0

13 Apr 16:47

Choose a tag to compare

logjet 0.4.0

Wire protocol

  • CRC32C trailing checksum on every wire frame
  • LZ4 per-record compression — ~60% bandwidth savings on typical OTLP payloads
  • Auto-skip: incompressible payloads sent raw
  • Configurable: wire.compression = true|false for low-power CPUs
  • Single write_all for all wire frames (record, hello, request, ack)
  • Persistent TCP keep-alive to OTLP collectors with auto-reconnect

Storage

  • Multi-record blocks — removed per-record flush, 200ms timed flush
  • Zstd codec added (file.codec = lz4 | zstd | none) — 66% savings on protobuf
  • BufWriter wrapping for flash-friendly I/O
  • Block-aligned writes (4 KiB default) — avoids read-modify-write on eMMC/SD
  • Pre-allocated segment files via fallocate — reduces flash fragmentation
  • Automatic retention: file.max-bytes deletes oldest segments on rotation
  • Configurable fsync policy: file.fsync = none | block | interval

OTLP export

  • Re-batching on file replay and backpressure export paths
  • Merges by Resource+Scope, configurable batch size and timeout
  • collector.batch-size, collector.batch-timeout-ms

Build

  • make check and make fix now cover all crates including demos

New demos

  • demo/compression-bench/ — compares none vs LZ4 vs Zstd on real workloads

0.3.0: Add liblogjet for dynamic use

17 Mar 16:34

Choose a tag to compare

What's Changed

  • Add logjet export as a sharedlib by @isbm in #7

Full Changelog: 0.2.0...0.3.0

0.2.0: Merge pull request #6 from tinythings/isbm-ljd-rename

09 Mar 22:58

Choose a tag to compare

Release Notes

What’s New

New: ljx file toolbox

This release introduces ljx, a new standalone CLI for working with .logjet files.

You can now:

  • inspect and browse stored data locally
  • filter records into new files
  • count and summarize records quickly
  • split and join .logjet files for offline workflows

New: interactive TUI viewer

ljx view adds an interactive terminal UI for browsing filtered records in real time.

Highlights:

  • fast keyboard-driven navigation
  • live filtering with string and regex modes
  • record detail viewing
  • export/save filtered results

Usability Improvements

  • Improved typing in the filter field (q now types normally while editing).
  • Refined TUI visuals for better readability and consistency.

Daemon Naming Update

The daemon command is now ljd (previously logjetd).

Docs and demo run scripts have been updated to use ljd.

0.1.0: Merge pull request #1 from tinythings/isbm-add-workflows

08 Mar 20:51

Choose a tag to compare

0.1.0

Initial public release.

logjet

  • append-only .logjet container format for raw OTLP protobuf payloads
  • block-based layout with sync marker, per-block CRC32C, and forward resynchronisation
  • lz4 and none block codecs
  • sequential reader with corruption recovery and replay statistics
  • append writer for compact block-oriented storage

logjetd

  • OTLP/HTTP ingest
  • OTLP/gRPC ingest
  • internal wire-protocol ingest
  • in-memory ring retention with buffer.keep
  • file-mode append-only segment output with size-based rotation
  • replay listener with per-client cursor handling
  • bridge mode for backlog plus live forwarding
  • keep and drain upstream modes
  • persisted bridge resume with upstream stream identity tracking
  • TLS on replay and bridge transport
  • TLS on OTLP ingest
  • HTTPS collector export
  • ingest guardrails for payload size and concurrent clients
  • ingest overload policy with rate limiting and severity-aware shedding
  • bridge backpressure modes: block, disconnect, drop-newest
  • replay client caps and replay client timeouts
  • file inspection, segment listing, and archive pruning commands

Tooling and docs

  • Makefile targets for build, test, integration test, lint, demos, manpage, and cross-builds
  • Markdown manpage source and generated manpage
  • demo suite covering file, memory, bridge, resume, TLS, overload, corruption recovery, and multi-client flows
  • unit tests and child-process daemon integration tests suitable for CI