Loggles

by bytesquashcom

Not rated
GitHub

About

Loggles is a local-first log sink with an MCP interface that lets coding agents (Claude Code, Cursor) query application logs directly

Details

Author
bytesquashcom
Categories
Developer Tools, Other, AI

Setup

Install Loggles in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/bytesquashcom/Loggles

Follow the installation instructions in the repository README, then restart your MCP client.

A local-first log sink that turns your coding agent into a runtime companion.

Instead of copy-pasting log output into Claude or Cursor, point your app at Loggles. Your agent queries exactly what it needs — filtered by service, level, trace ID, or time window — and gets back structured data it can reason over. No token waste, no manual copy-paste.

Your App ──OTLP──▶ Loggles ──MCP──▶ Claude Code / Cursor

- Investigating a bug— Claude reads your source, traces the failure through logs, and points to the line. You describe the problem; it does the digging.
- Watching runtime behaviour— Ask "what did my app do when I hit that endpoint?" and Claude tails the logs, traces the request, and narrates what happened. Like a live debugger, without attaching one.

docker run -d \ -p 5000:5000 \ -v loggles-data:/data \ ghcr.io/bytesquashcom/loggles:latest

Add-e Auth__ApiKey=your-secret-keyto enable API key protection (seeAuthentication).

git clone https://github.com/bytesquashcom/Loggles.git cd Loggles/src/Loggles.Api dotnet run # Listening on http://localhost:5000

Point your OTLP exporter athttp://localhost:5000/v1/logsusing HTTP/protobuf.

// dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol builder.Services.AddOpenTelemetry() .WithLogging(logging => { logging.AddOtlpExporter(otlp => { otlp.Endpoint = new Uri("http://localhost:5000/v1/logs"); otlp.Protocol = OtlpExportProtocol.HttpProtobuf; }); });
npm install @opentelemetry/sdk-node @opentelemetry/exporter-logs-otlp-http @opentelemetry/sdk-logs
const { LoggerProvider, SimpleLogRecordProcessor } = require('@opentelemetry/sdk-logs'); const { OTLPLogExporter } = require('@opentelemetry/exporter-logs-otlp-http'); const provider = new LoggerProvider(); provider.addLogRecordProcessor( new SimpleLogRecordProcessor( new OTLPLogExporter({ url: 'http://localhost:5000/v1/logs' }) ) ); provider.register();
pip install opentelemetry-exporter-otlp-proto-http opentelemetry-sdk
from opentelemetry import _logs from opentelemetry.sdk._logs import LoggerProvider from opentelemetry.sdk._logs.export import BatchLogRecordProcessor from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter provider = LoggerProvider() provider.add_log_record_processor( BatchLogRecordProcessor(OTLPLogExporter(endpoint="http://localhost:5000/v1/logs")) ) _logs.set_logger_provider(provider)
go get go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
exporter, _ := otlploghttp.New(context.Background(), otlploghttp.WithEndpointURL("http://localhost:5000/v1/logs"), otlploghttp.WithInsecure(), ) provider := log.NewLoggerProvider( log.WithProcessor(log.NewBatchProcessor(exporter)), ) global.SetLoggerProvider(provider)
<!-- pom.xml --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-otlp</artifactId> </dependency>
OtlpHttpLogRecordExporter exporter = OtlpHttpLogRecordExporter.builder() .setEndpoint("http://localhost:5000/v1/logs") .build(); SdkLoggerProvider provider = SdkLoggerProvider.builder() .addLogRecordProcessor(BatchLogRecordProcessor.builder(exporter).build()) .build(); OpenTelemetrySdk.builder().setLoggerProvider(provider).buildAndRegisterGlobal();
gem install opentelemetry-exporter-otlp opentelemetry-sdk
require 'opentelemetry/sdk' require 'opentelemetry/exporter/otlp' OpenTelemetry::SDK.configure do |c| c.add_span_processor( OpenTelemetry::SDK::Logs::Export::BatchLogRecordProcessor.new( OpenTelemetry::Exporter::OTLP::LogsExporter.new( endpoint: 'http://localhost:5000/v1/logs' ) ) ) end
composer require open-telemetry/exporter-otlp open-telemetry/sdk
$exporter = (new \OpenTelemetry\Contrib\Otlp\LogsExporter( \OpenTelemetry\Contrib\Otlp\OtlpUtil::createTransport('http://localhost:5000/v1/logs') )); $provider = new \OpenTelemetry\SDK\Logs\LoggerProvider( new \OpenTelemetry\SDK\Logs\Processor\BatchLogRecordProcessor($exporter) ); \OpenTelemetry\API\Logs\NoopLogger::setLoggerProvider($provider);

Set your OTLP exporter endpoint tohttp://localhost:5000/v1/logsusing HTTP/protobuf transport. HTTP/JSON is also supported withContent-Type: application/json.

claude mcp add loggles --transport http http://localhost:5000/mcp

If an API key is configured, Claude Code negotiates authentication automatically via the OAuth PKCE flow — no manual token setup required.

This repository ships a Claude Code skill (.claude/skills/loggles-debug/) that activates automatically when you describe a bug, ask Claude to investigate an error, or want to observe your app's runtime behaviour. It puts Claude in one of two modes:

- Reads your source code first to understand the relevant service, map its log output, and identify error branches — then queries logs with that context
- Cross-references log evidence against source to confirm a root cause and point to a specific file and line
- Calls out missing instrumentation (correlation_idnot propagated, IDs embedded in message strings) and explains the fix

Exploratory(observing runtime behaviour):

- Starts from the logs directly — no upfront source reading
- Tails live streams, traces requests by ID, and narrates what the service is actually doing
- Useful during development and testing: "what did my app do when I hit that endpoint?"

The skill is loaded automatically when you open this project in Claude Code. To use it inyour own application's repository, copy it:

mkdir -p /your-project/.claude/skills cp -r /path/to/loggles/.claude/skills/loggles-debug /your-project/.claude/skills/

Add to.cursor/mcp.jsonin your project root:

{ "mcpServers": { "loggles": { "url": "http://localhost:5000/mcp" } } }

If an API key is configured, add anAuthorization: Bearer <key>header in your MCP client configuration.

By default, with no key configured, all endpoints are open — zero friction for localhost use.

LeaveAuth__ApiKeyunset. All endpoints are publicly accessible. Suitable for localhost.

# Docker docker run ... -e Auth__ApiKey=your-secret-key ... # dotnet run export Auth__ApiKey=your-secret-key dotnet run

Once set, all ingest and query endpoints require:

MCP clients that support OAuth (such as Claude Code) negotiate authentication automatically. When an API key is configured, Loggles exposes a local OAuth 2.0 + PKCE flow (RFC 6749 / RFC 7636) that issues your API key as the access token. The client handles this handshake transparently.

Discovery endpoints used by OAuth-aware clients:

The OAuth flow can be toggled withMcp__OAuthEnabled(default:true). Set tofalseto suppress discovery endpoints if your client does not support OAuth.

All settings can be overridden with environment variables using__as separator (e.g.Retention__Hours=24).

docker run -d \ -p 5000:5000 \ -e Storage__Provider=postgres \ -e Storage__ConnectionString="Host=your-host;Database=loggles;Username=loggles;Password=secret" \ ghcr.io/bytesquashcom/loggles:latest

Beyond MCP, a REST API is available for scripting or manual queries.

Elastic License 2.0— free to use, self-host, and modify. You may not offer Loggles as a hosted or managed service to third parties.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

next-devtools-mcp is a MCP server that provides Next.js development tools and utilities for AI coding assistants like Claude and Cursor.

A demonstration server for ActionKit, providing access to Slack actions via Claude Desktop.

MCP server that lets Claude Code agents delegate tasks to agents in other project directories, with parallel dispatch, sessions, and async jobs.

Anchor Browser (https://anchorbrowser.io) is secure infrastructure for computer-use agents — stealth cloud browsers, authentication, captcha bypass, and a hosted MCP server for Cursor, Claude, and Windsurf.

Open-source Claude Code plugin replacing Read/Grep/Edit/Bash with token-efficient versions. Independently benchmarked at 57% token reduction on real codebases. 40 MCP tools.

Connects Blender to Claude AI via the Model Context Protocol (MCP), enabling direct interaction and control for prompt-assisted 3D modeling, scene creation, and manipulation.

Context-optimized security plugin for Claude Code that builds architecture maps and redacts secrets.

Charon gives AI clients scoped, auditable access to Lethe memory. connect to Chatgpt or Claude to store memories locally.

Score CLAUDE.md/AGENTS.md, validate clarx-manifest.json, generate CI workflows, and pull repo scan findings into Cursor, Claude, or Grok.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.