{
  "markdown": "<!-- SPDX-License-Identifier: Apache-2.0 OR MIT -->\n\n<p align=\"center\">\n  <img src=\"https://cloudcdn.pro/rlg/v1/logos/rlg.svg\" alt=\"RLG logo\" width=\"128\" />\n</p>\n\n<h1 align=\"center\">rlg — RustLogs</h1>\n\n<p align=\"center\">\n  Near-lock-free structured logging for Rust, plus an ecosystem of\n  companion crates: CLI tooling, MCP server, OTLP exporter, tower\n  middleware, WebAssembly bindings, PII redaction, test utilities,\n  and aggregation reports.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/sebastienrousseau/rlg/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/sebastienrousseau/rlg/ci.yml?style=for-the-badge&logo=github\" alt=\"Build\" /></a>\n  <a href=\"https://github.com/sebastienrousseau/rlg/actions/workflows/miri.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/sebastienrousseau/rlg/miri.yml?style=for-the-badge&logo=rust&label=Miri\" alt=\"Miri\" /></a>\n  <a href=\"https://crates.io/crates/rlg\"><img src=\"https://img.shields.io/crates/v/rlg.svg?style=for-the-badge&color=fc8d62&logo=rust\" alt=\"Crates.io\" /></a>\n  <a href=\"https://docs.rs/rlg\"><img src=\"https://img.shields.io/badge/docs.rs-rlg-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs\" alt=\"Docs.rs\" /></a>\n  <a href=\"https://codecov.io/gh/sebastienrousseau/rlg\"><img src=\"https://img.shields.io/codecov/c/github/sebastienrousseau/rlg?style=for-the-badge&logo=codecov\" alt=\"Coverage\" /></a>\n  <a href=\"https://lib.rs/crates/rlg\"><img src=\"https://img.shields.io/badge/lib.rs-rlg-orange.svg?style=for-the-badge\" alt=\"lib.rs\" /></a>\n</p>\n\n---\n\nThis is the Cargo workspace root. The library lives at\n[`crates/rlg`](crates/rlg). Ten companion crates ship from this\nworkspace, all at lockstep version `0.0.11`.\n\n## The rlg ecosystem\n\n| Crate | What it does | Use case |\n|---|---|---|\n| **[`rlg`](crates/rlg/README.md)** | Near-lock-free structured logging engine. 65k-slot ring buffer, deferred formatting, 14 output formats, native OS sinks (`os_log` via `syslog(3)`, `journald`). | Embed structured logging in any Rust binary or library. |\n| **[`rlg-cli`](crates/rlg-cli/README.md)** | `rlg` binary — `jq` for structured logs. Tail, filter, convert across all 14 formats. | Pipe `my-service \\| rlg --min-level error --format ecs` from the shell. |\n| **[`rlg-mcp`](crates/rlg-mcp/README.md)** | Model Context Protocol server exposing rlg streams as tools to LLM agents. | Claude Desktop, Cursor, mcp.run agents reading your logs. |\n| **[`rlg-otlp`](crates/rlg-otlp/README.md)** | OpenTelemetry network exporter (OTLP/HTTP JSON). | Ship records to Honeycomb, Datadog, Tempo, Jaeger, otelcol. |\n| **[`rlg-tower`](crates/rlg-tower/README.md)** | `tower::Layer` emitting per-request structured access logs. | axum, tonic, hyper, `lambda_runtime` — any `tower::Service`. |\n| **[`rlg-wasm`](crates/rlg-wasm/README.md)** | `wasm-bindgen` wrapper for browser / Deno / Cloudflare Workers / Bun, plus a WASI 0.2 component interface for wasmtime hosts. | Structured logging from JS or WASI 0.2 components. |\n| **[`rlg-redact`](crates/rlg-redact/README.md)** | PII / secret redaction between `Log::fire()` and the sink. Aho-Corasick fused alternation regex. | Compliance, GDPR, audit-trail safety. Built-in patterns for cards, JWTs, bearers, emails, IPs, AWS keys. |\n| **[`rlg-test`](crates/rlg-test/README.md)** | Test utilities — capture rlg records in a `#[test]` scope and assert on them with `assert_logged!`. | Downstream library tests verifying their structured log output. |\n| **[`rlg-report`](crates/rlg-report/README.md)** | Log digest / analytics: count by level, top components, top errors, latency percentiles. CLI + library mode. | Operational dashboards, daily error reports, oncall triage. |\n| **[`rlg-ebpf`](crates/rlg-ebpf/README.md)** | `Enricher` trait + `ProcessEnricher` (portable) + `EbpfEnricher` scaffold (Linux, behind the `ebpf` feature) for automatic PID / process-name attributes. | Automatic host-level context on every record without app code changes. |\n| `xtask` *(internal, unpublished)* | `cargo xtask check-all / coverage / audit / doc / examples / bench / release`. | Maintainer automation. |\n\n### Install one, install all\n\n```toml\n[dependencies]\nrlg         = \"0.0.12\"\nrlg-otlp    = \"0.0.12\"  # ship to an OTLP collector\nrlg-tower   = \"0.0.12\"  # HTTP middleware\nrlg-redact  = \"0.0.12\"  # PII redaction\n\n[dev-dependencies]\nrlg-test    = \"0.0.12\"  # assertions in your tests\n```\n\nCLI binaries:\n\n```bash\ncargo install rlg-cli       # the `rlg` binary\ncargo install rlg-mcp       # the `rlg-mcp` MCP server\ncargo install rlg-report    # the `rlg-report` digest tool\n```\n\n## Tools\n\nThe MCP server crate, [`rlg-mcp`](crates/rlg-mcp/README.md), exposes rlg\nlog streams to LLM agents as three MCP tools over the stdio transport:\n\n- `tail_log` — `path`, optional `n` (default 100) → last `n` parseable records, rendered in Logfmt.\n- `filter_log` — `path`, optional `min_level` / `component` / `format` → records matching every supplied filter, in the chosen `LogFormat`.\n- `summarize_errors` — `path` → JSON map of `component → error_count` for ERROR-and-above records.\n\n## Workspace layout\n\n```text\n.\n├── Cargo.toml            # workspace manifest (profiles, members)\n├── README.md             # ← you are here\n├── CHANGELOG.md / CONTRIBUTING.md / SECURITY.md\n├── LICENSE-{APACHE,MIT}\n├── crates/\n│   ├── rlg/              # core library\n│   ├── rlg-cli/          # `rlg` binary + filter/render lib\n│   ├── rlg-mcp/          # MCP server\n│   ├── rlg-otlp/         # OTLP/HTTP exporter\n│   ├── rlg-tower/        # tower::Layer\n│   ├── rlg-wasm/         # wasm-bindgen + WASI 0.2 component\n│   ├── rlg-redact/       # PII / secret scrubber (Aho-Corasick)\n│   ├── rlg-test/         # test utilities\n│   ├── rlg-report/       # log digest binary + lib\n│   ├── rlg-ebpf/         # Enricher trait + eBPF (Linux) scaffold\n│   └── xtask/            # internal automation (publish = false)\n└── .github/\n    └── workflows/\n        ├── ci.yml        # delegates to sebastienrousseau/pipelines\n        └── release.yml   # workspace-aware crates.io publisher\n```\n\n## Quick links\n\n- **Core docs:** [`crates/rlg/README.md`](crates/rlg/README.md) · [docs.rs/rlg](https://docs.rs/rlg)\n- **Contributing & signing policy:** [`CONTRIBUTING.md`](CONTRIBUTING.md)\n- **Security policy:** [`SECURITY.md`](SECURITY.md)\n- **Release notes:** [`CHANGELOG.md`](CHANGELOG.md)\n\n## License\n\nDual-licensed under [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) or [MIT](https://opensource.org/licenses/MIT), at your option.\n",
  "bytes": 6543,
  "sha": "697bc5bdea9614a01fb7d3aa5ea952299989860ab07719320041d6310db6308a",
  "repo_slug": "sebastienrousseau/rlg",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sebastienrousseau_rlg_mcp_fddd9558/readme"
}