{
  "markdown": "# LogClaw\n\n**AI SRE that deploys in your VPC.** Real-time anomaly detection, trace-correlated incident tickets, and AI root cause analysis — your logs never leave your infrastructure.\n\n<p align=\"left\">\n  <img src=\"https://img.shields.io/badge/license-Apache%202.0-green\" />\n  <img src=\"https://img.shields.io/badge/helm-3.x-blue?logo=helm\" />\n  <img src=\"https://img.shields.io/badge/kubernetes-1.27%2B-blue?logo=kubernetes\" />\n  <img src=\"https://img.shields.io/badge/docker-compose-blue?logo=docker\" />\n  <a href=\"https://console.logclaw.ai\"><img src=\"https://img.shields.io/badge/try-managed%20cloud-orange\" /></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/overview.png\" alt=\"LogClaw Dashboard — real-time log monitoring with AI anomaly detection\" width=\"800\" />\n</p>\n\n---\n\n## TL;DR — Try It\n\n### Option A: Managed Cloud (no install — fastest)\n\nTry the full experience instantly at **[console.logclaw.ai](https://console.logclaw.ai)** — includes AI root cause analysis, API key management, multi-tenant isolation, and the complete incident pipeline. No Docker required.\n\n### Option B: Docker Compose (self-hosted, no Kubernetes)\n\n```bash\ncurl -O https://raw.githubusercontent.com/logclaw/logclaw/main/docker-compose.yml\ncurl -O https://raw.githubusercontent.com/logclaw/logclaw/main/otel-collector-config.yaml\ndocker compose up -d\n```\n\nOpen **http://localhost:3000** — the LogClaw stack is running:\n- Dashboard (`:3000`) — incidents, log ingestion, config\n- OTel Collector (`:4317` gRPC, `:4318` HTTP) — send logs via OTLP\n- Bridge (`:8080`) — anomaly detection + trace correlation\n- Ticketing Agent (`:18081`) — AI-powered incident management\n- OpenSearch (`:9200`) — log storage + search\n- Kafka (`:9092`) — event bus\n\nAll images are pulled from `ghcr.io/logclaw/` — no registry auth required.\n\n> **Note:** The local stack runs in single-tenant mode with LLM-powered root cause analysis disabled. For AI RCA, API key management, and multi-tenant isolation, use the [managed cloud](https://console.logclaw.ai) or deploy to Kubernetes with `LLM_PROVIDER=claude|openai|ollama`.\n\n### Option C: Kind Cluster (full Kubernetes stack)\n\n```bash\ngit clone https://github.com/logclaw/logclaw.git && cd logclaw\n./scripts/setup-dev.sh\n```\n\nThis creates a Kind cluster, installs all operators and services, builds the dashboard, and runs a smoke test. Takes ~20 minutes on a 16 GB laptop.\n\n### Container Images\n\nAll LogClaw images are published to GHCR as public packages:\n\n| Service | Image | Latest Stable |\n|---------|-------|---------------|\n| Dashboard | `ghcr.io/logclaw/logclaw-dashboard` | `stable` / `2.5.0` |\n| Bridge | `ghcr.io/logclaw/logclaw-bridge` | `stable` / `1.3.0` |\n| Ticketing Agent | `ghcr.io/logclaw/logclaw-ticketing-agent` | `stable` / `1.5.0` |\n| Flink Jobs | `ghcr.io/logclaw/logclaw-flink-jobs` | `stable` / `0.1.1` |\n\nPull any image directly:\n```bash\ndocker pull ghcr.io/logclaw/logclaw-dashboard:stable\n```\n\n---\n\n## See It in Action\n\n<table>\n  <tr>\n    <td align=\"center\"><b>Incident Management</b></td>\n    <td align=\"center\"><b>AI Root Cause Analysis</b></td>\n  </tr>\n  <tr>\n    <td><img src=\"docs/screenshots/incidents.png\" alt=\"Incident list with severity and blast radius\" width=\"400\" /></td>\n    <td><img src=\"docs/screenshots/ai-analysis.png\" alt=\"AI-powered root cause analysis\" width=\"400\" /></td>\n  </tr>\n  <tr>\n    <td align=\"center\"><b>Log Ingestion</b></td>\n    <td align=\"center\"><b>Dashboard Overview</b></td>\n  </tr>\n  <tr>\n    <td><img src=\"docs/screenshots/ingestion.png\" alt=\"OTLP log ingestion pipeline\" width=\"400\" /></td>\n    <td><img src=\"docs/screenshots/overview.png\" alt=\"LogClaw dashboard overview\" width=\"400\" /></td>\n  </tr>\n</table>\n\n> **Live demo:** [console.logclaw.ai](https://console.logclaw.ai) | **Video walkthrough:** [logclaw.ai](https://logclaw.ai)\n\n---\n\n## Open Source vs Cloud vs Enterprise\n\n| Capability | Open Source (free) | Cloud ($0.30/GB) | Enterprise (custom) |\n|---|---|---|---|\n| **Log Ingestion (OTLP)** | Unlimited | 1 GB/day free | Unlimited |\n| **Anomaly Detection** | Z-score statistical | Z-score + ML pipeline | Z-score + ML + custom models |\n| **AI Root Cause Analysis** | BYO LLM (Ollama/OpenAI/Claude) | Included | Included + fine-tuned models |\n| **Incident Ticketing** | PagerDuty, Jira, ServiceNow, OpsGenie, Slack, Zammad | All 6 platforms | All 6 + custom connectors |\n| **Dashboard** | Full UI (logs, incidents, config) | Full UI + hosted | Full UI + white-label option |\n| **Authentication** | None (open access) | Clerk OAuth + org management | SSO (SAML/OIDC) + RBAC |\n| **Multi-tenancy** | Single tenant | Multi-org, multi-project, multi-env | Full namespace isolation per tenant |\n| **API Keys** | N/A | Per-project, SHA-256 hashed, revocable | Per-project + custom scoping |\n| **Data Residency** | Your infrastructure | LogClaw-managed cloud | Your VPC (AWS/Azure/GCP) |\n| **Secrets Encryption** | At rest (OpenSearch) | At rest + in transit | AES-256-GCM for secrets + full TLS |\n| **Config Management** | Env vars | 6-tab settings UI | UI + API + GitOps |\n| **Retention** | Configurable via Helm | 9-day logs, 97-day incidents | Custom retention policies |\n| **Air-Gapped Mode** | Yes (Zammad + Ollama) | No | Yes |\n| **MCP Server** | Self-hosted | Hosted (mcp.logclaw.ai) | Both |\n| **Support** | GitHub Issues | Email (support@logclaw.ai) | Dedicated SRE team + SLA |\n| **Pricing** | Free forever (Apache 2.0) | $0.30/GB ingested | Custom |\n\n> **No per-seat fees. No per-host fees. AI features included at every tier.**\n\n<p align=\"center\">\n  <a href=\"https://console.logclaw.ai\"><b>Start Free (Cloud)</b></a> &nbsp;|&nbsp;\n  <a href=\"#tldr--try-it\"><b>Deploy from GitHub (OSS)</b></a> &nbsp;|&nbsp;\n  <a href=\"https://calendly.com/robelkidin/logclaw\"><b>Book a Demo (Enterprise)</b></a>\n</p>\n\n---\n\n## Architecture\n\n> All components below are included in every tier — Open Source, Cloud, and Enterprise.\n\n```\nLogClaw Stack (per tenant, namespace-isolated)\n│\n├── logclaw-auth-proxy       API key validation + tenant ID injection\n├── logclaw-otel-collector   OpenTelemetry Collector (OTLP gRPC + HTTP)\n├── logclaw-ingestion        Vector.dev edge ingestion (optional)\n├── logclaw-kafka            Strimzi Kafka 3-broker KRaft cluster\n├── logclaw-flink            ETL + enrichment + anomaly scoring\n├── logclaw-opensearch       OpenSearch cluster (hot-tier log storage)\n├── logclaw-bridge           OTLP ETL + trace correlation + lifecycle manager\n├── logclaw-ml-engine        Feast Feature Store + KServe/TorchServe + Ollama\n├── logclaw-airflow          Apache Airflow (ML training DAGs)\n├── logclaw-ticketing-agent  AI-powered RCA + multi-platform ticketing\n├── logclaw-agent            In-cluster infrastructure health collector\n├── logclaw-dashboard        Next.js web UI (ingestion, incidents, config, dark mode)\n└── logclaw-console          Enterprise SaaS console (multi-tenant)\n```\n\n**Data flow:** Logs → Auth Proxy (API key + tenant injection) → OTel Collector (OTLP ingestion) → Kafka → Bridge (ETL + anomaly + trace correlation) → OpenSearch + Ticketing Agent → Incident tickets\n\nAll charts are wired together by the **`logclaw-tenant` umbrella chart** — a single `helm install` deploys the full stack for one tenant.\n\n---\n\n## Quick Start (Production / ArgoCD)\n\n### Prerequisites\n\nOne-time cluster setup (operators, run once per cluster):\n\n```bash\nhelmfile -f helmfile.d/00-operators.yaml apply\n```\n\n### Onboard a new tenant\n\n1. Copy the template:\n   ```bash\n   cp gitops/tenants/_template.yaml gitops/tenants/tenant-<id>.yaml\n   ```\n\n2. Fill in the required values (`tenantId`, `tier`, `cloudProvider`, secret store config).\n\n3. Commit and push — ArgoCD will detect the new file and deploy the full stack in ~30 minutes.\n\n### Manual install (dev/staging)\n\n```bash\nhelm install logclaw-acme charts/logclaw-tenant \\\n  --namespace logclaw-acme \\\n  --create-namespace \\\n  -f gitops/tenants/tenant-acme.yaml\n```\n\n---\n\n## Running Locally (Step by Step)\n\n> Prefer the one-command setup? Run `./scripts/setup-dev.sh` and skip to [Step 6](#6--send-logs).\n\n### Prerequisites\n\n```bash\n# macOS (Homebrew)\nbrew install helm helmfile kind kubectl node python3\n\n# Helm plugins\nhelm plugin install https://github.com/databus23/helm-diff\nhelm plugin install https://github.com/helm-unittest/helm-unittest\n\n# Docker Desktop must be running\nopen -a Docker\n```\n\n### 1 — Create a local Kubernetes cluster\n\n```bash\nmake kind-create\n```\n\nVerify:\n```bash\nkubectl cluster-info --context kind-logclaw-dev\n```\n\n### 2 — Install cluster-level operators\n\n```bash\nmake install-operators\n```\n\nWait for operators to be ready (~3 min):\n```bash\nkubectl get pods -n strimzi-system -w\nkubectl get pods -n opensearch-operator-system -w\n```\n\n### 3 — Install the full tenant stack\n\n```bash\nmake install TENANT_ID=dev-local STORAGE_CLASS=standard\n```\n\nThis deploys all 16 helmfile releases in dependency order. Monitor progress:\n```bash\nwatch kubectl get pods -n logclaw-dev-local\n```\n\n| Time | Milestone |\n|---|---|\n| T+2 min | Namespace, RBAC, NetworkPolicies |\n| T+6 min | Kafka broker ready |\n| T+10 min | OpenSearch cluster green |\n| T+15 min | Bridge + Ticketing Agent running |\n| T+20 min | Full stack operational |\n\n### 4 — Build and deploy the Dashboard\n\nThe dashboard requires a Docker image build:\n```bash\ndocker build -t logclaw-dashboard:dev apps/dashboard/\nkind load docker-image logclaw-dashboard:dev --name logclaw-dev\n\nhelm upgrade --install logclaw-dashboard-dev-local charts/logclaw-dashboard \\\n  --namespace logclaw-dev-local \\\n  --set global.tenantId=dev-local \\\n  -f charts/logclaw-dashboard/ci/default-values.yaml\n```\n\n### 5 — Access the services\n\n```bash\n# Dashboard (main UI)\nkubectl port-forward svc/logclaw-dashboard-dev-local 3333:3000 -n logclaw-dev-local\nopen http://localhost:3333\n\n# OpenSearch (query API)\nkubectl port-forward svc/logclaw-opensearch-dev-local 9200:9200 -n logclaw-dev-local\n\n# Airflow (ML pipelines)\nkubectl port-forward svc/logclaw-airflow-dev-local-webserver 8080:8080 -n logclaw-dev-local\nopen http://localhost:8080   # admin / admin\n```\n\n### 6 — Send logs\n\nLogClaw ingests logs via **OTLP (OpenTelemetry Protocol)** — the CNCF industry standard. Port-forward the OTel Collector:\n\n```bash\nkubectl port-forward svc/logclaw-otel-collector-dev-local 4318:4318 -n logclaw-dev-local &\n```\n\n**Send a single log via OTLP HTTP:**\n```bash\ncurl -X POST http://localhost:4318/v1/logs \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"resourceLogs\": [{\n      \"resource\": {\n        \"attributes\": [\n          {\"key\": \"service.name\", \"value\": {\"stringValue\": \"payment-api\"}}\n        ]\n      },\n      \"scopeLogs\": [{\n        \"logRecords\": [{\n          \"timeUnixNano\": \"'$(date +%s)000000000'\",\n          \"severityText\": \"ERROR\",\n          \"body\": {\"stringValue\": \"Connection refused to database\"},\n          \"traceId\": \"abcdef1234567890abcdef1234567890\",\n          \"spanId\": \"abcdef12345678\"\n        }]\n      }]\n    }]\n  }'\n```\n\nAny OpenTelemetry SDK or agent can send logs to LogClaw — no custom integration needed. See [OTLP Integration Guide](docs/otlp-integration.md) for SDK examples.\n\n**Generate and ingest 900 sample Apple Pay logs:**\n```bash\n# Generate sample OTel logs\npython3 scripts/generate-applepay-logs.py    # → 500 payment flow logs\npython3 scripts/generate-applepay-logs-2.py  # → 400 infra/security errors\n\n# Ingest them\n./scripts/ingest-logs.sh scripts/applepay-otel-500.json\n./scripts/ingest-logs.sh scripts/applepay-otel-400-batch2.json\n```\n\nOr use the helper script:\n```bash\n./scripts/ingest-logs.sh --generate   # generates + ingests all sample logs\n./scripts/ingest-logs.sh --smoke      # single test log\n```\n\n### 7 — See it in action\n\nAfter ingesting error logs, the Bridge detects anomalies and the Ticketing Agent creates incident tickets. View them:\n\n```bash\n# Watch Bridge trace correlation in real-time\nkubectl logs -f deployment/logclaw-bridge-dev-local -n logclaw-dev-local\n\n# Check auto-created incidents\nkubectl port-forward svc/logclaw-opensearch-dev-local 9200:9200 -n logclaw-dev-local &\ncurl -s 'http://localhost:9200/logclaw-incidents-*/_search?size=5&sort=created_at:desc' | python3 -m json.tool\n\n# Or use the Dashboard\nopen http://localhost:3333/incidents\n```\n\n### 8 — Tear down\n\n```bash\n# Remove just the tenant\nmake uninstall TENANT_ID=dev-local\n\n# Remove everything including the Kind cluster\nmake kind-delete\n```\n\n---\n\n## Repository Layout\n\n```\ncharts/\n├── logclaw-tenant/           # Umbrella chart — single install entry point\n├── logclaw-auth-proxy/       # API key validation + tenant ID injection\n├── logclaw-otel-collector/   # OpenTelemetry Collector (OTLP gRPC + HTTP)\n├── logclaw-ingestion/        # Vector.dev edge ingestion\n├── logclaw-kafka/            # Strimzi Kafka + KafkaConnect + MirrorMaker2\n├── logclaw-flink/            # Flink ETL + enrichment + anomaly jobs\n├── logclaw-opensearch/       # OpenSearch cluster via Opster operator\n├── logclaw-bridge/           # OTLP ETL + trace correlation + lifecycle manager\n├── logclaw-ml-engine/        # Feast + KServe/TorchServe + Ollama\n├── logclaw-airflow/          # Apache Airflow\n├── logclaw-ticketing-agent/  # AI-powered RCA + multi-platform ticketing\n├── logclaw-agent/            # In-cluster infrastructure health agent\n├── logclaw-dashboard/        # Next.js web UI\n└── logclaw-console/          # Enterprise SaaS console\n\napps/\n├── bridge/                # Python — OTLP ETL + anomaly detection + trace correlation\n├── agent/                 # Go — infrastructure health collector\n├── dashboard/             # Next.js — web UI (incidents, logs, config, dark mode)\n├── ticketing-agent/       # Python — AI-powered RCA + multi-platform ticketing\n├── flink-jobs/            # Java — Flink stream processing jobs\n├── logclaw-auth-proxy/    # TypeScript/Express — API key validation + tenant injection\n├── logclaw-slack-bot/     # TypeScript/Hono — Slack incident bot (Cloudflare Workers)\n├── logclaw-mcp-server/    # TypeScript — MCP server for AI coding tools (8 tools)\n└── logclaw-mcp-remote/    # TypeScript — remote MCP client (OAuth 2.1)\n\ncli/                        # Go CLI (logclaw start/stop/status)\n\nscripts/\n├── setup-dev.sh                # One-command local dev setup (Kind cluster)\n├── setup-gke.sh                # GKE production cluster setup\n├── ingest-logs.sh              # Log ingestion helper (--generate, --smoke)\n├── generate-applepay-logs.py   # Generate 500 OTel sample logs (batch 1)\n├── generate-applepay-logs-2.py # Generate 400 infra/security logs (batch 2)\n├── trigger-anomaly.sh          # Trigger test anomaly for demo\n└── trigger-request-failure.sh  # Trigger test request failure for demo\n\noperators/                    # Cluster-level operator bootstrap (once per cluster)\n├── strimzi/                  # strimzi-kafka-operator 0.41.0\n├── flink-operator/           # flink-kubernetes-operator 1.9.0\n├── opensearch-operator/      # opensearch-operator 2.6.1\n├── eso/                      # external-secrets 0.10.3\n└── cert-manager/             # cert-manager v1.16.1\n\nhelmfile.d/                   # Ordered helmfile releases (00-operators → 90-dashboard)\ngitops/                       # ArgoCD ApplicationSet + per-tenant value files\ntests/                        # Helm chart tests + integration test pods\ndocs/                         # Architecture, onboarding, values reference\n```\n\n---\n\n## Key Features\n\n> For a side-by-side comparison across tiers, see [Open Source vs Cloud vs Enterprise](#open-source-vs-cloud-vs-enterprise) above.\n\n### Trace-Correlated AI Ticket Engine\n\nThe Bridge runs a 5-layer trace correlation engine:\n\n1. **ETL Consumer** — Consumes enriched logs from Kafka\n2. **Anomaly Detector** — Statistical anomaly scoring on error rates\n3. **OpenSearch Indexer** — Indexes logs for search and correlation\n4. **Lifecycle Engine** — Traces causal chains across services, computes blast radius, creates/deduplicates incidents\n\nWhen an anomaly is detected, the system:\n- Queries all logs sharing the same `trace_id`\n- Builds a causal chain showing error propagation across services\n- Computes blast radius (% of services affected)\n- Creates a deduplicated incident ticket with full trace context\n\n### Multi-Platform Ticketing\n\nThe `logclaw-ticketing-agent` supports **6 independently-toggleable platforms** simultaneously:\n\n| Platform | Type | Egress |\n|---|---|---|\n| PagerDuty | SaaS | External HTTPS |\n| Jira | SaaS | External HTTPS |\n| ServiceNow | SaaS | External HTTPS |\n| OpsGenie | SaaS | External HTTPS |\n| Slack | SaaS | External HTTPS |\n| Zammad | In-cluster | Zero external egress |\n\nPer-severity routing (`critical → PagerDuty`, `medium → Jira`, etc.) is configurable via `config.routing.*`.\n\n### Air-Gapped Mode\n\nWhen paired with **Zammad** (external ITSM chart) and **Ollama** for local LLM inference, the `needsExternalHttps` helper sets the NetworkPolicy to **zero external egress** — fully air-gapped. No logs, tickets, or model calls leave the cluster.\n\n### LLM Provider Abstraction\n```yaml\nglobal:\n  llm:\n    provider: ollama   # claude | openai | ollama | vllm | disabled\n    model: llama3.2:8b\n```\n\n### Dashboard\n\nThe Dashboard provides:\n- **Dark mode** — system-aware with manual toggle (Light/Dark/System), persisted in localStorage\n- **Drag-and-drop upload** supporting JSON, NDJSON, CSV, and plain text files\n- **Bulk incident actions** — select multiple incidents and acknowledge/resolve/escalate in batch\n- **CSV export** — download incidents as a CSV file\n- **Loading skeletons** — smooth animated placeholders during data fetches\n- **Error boundaries** — graceful crash recovery with retry UI\n- **LLM fallback badge** — indicates when AI RCA is unavailable and rule-based fallback was used\n- **Incident auto-deduplication** — prevents duplicate incidents for the same anomaly\n\n### Log Ingestion — OTLP Native\n\nLogClaw uses **OTLP (OpenTelemetry Protocol)** as its sole ingestion protocol — the CNCF industry standard supported by every major observability vendor (Datadog, Splunk, Grafana, AWS, GCP, Azure).\n\n**Supported transports:**\n- **gRPC** — `<collector>:4317` (recommended for high-throughput)\n- **HTTP/JSON** — `<collector>:4318/v1/logs`\n\nAny OpenTelemetry SDK, agent, or collector can send logs directly to LogClaw without custom integrations. The OTel Collector enriches each log with `tenant_id`, batches them, and writes to Kafka using `otlp_json` encoding.\n\n```json\n{\n  \"resourceLogs\": [{\n    \"resource\": {\n      \"attributes\": [\n        {\"key\": \"service.name\", \"value\": {\"stringValue\": \"my-service\"}},\n        {\"key\": \"host.name\", \"value\": {\"stringValue\": \"my-service-pod-abc12\"}}\n      ]\n    },\n    \"scopeLogs\": [{\n      \"logRecords\": [{\n        \"timeUnixNano\": \"1709510400000000000\",\n        \"severityText\": \"ERROR\",\n        \"body\": {\"stringValue\": \"Something went wrong\"},\n        \"traceId\": \"abcdef1234567890abcdef1234567890\",\n        \"spanId\": \"abcdef12345678\",\n        \"attributes\": [\n          {\"key\": \"environment\", \"value\": {\"stringValue\": \"production\"}}\n        ]\n      }]\n    }]\n  }]\n}\n```\n\nSee [OTLP Integration Guide](docs/otlp-integration.md) for Python, Java, and Node.js SDK examples.\n\n### MCP Server — AI Coding Tools\n\nThe `logclaw-mcp-server` connects AI coding tools to LogClaw incidents, logs, and anomalies via the [Model Context Protocol](https://modelcontextprotocol.io). Published as an npm package with **8 tools**.\n\n```bash\nnpx logclaw-mcp-server\n```\n\nWorks with **Claude Code**, **Cursor**, **Windsurf**, and any MCP-compatible client. Also available as a hosted server at `https://mcp.logclaw.ai` (OAuth 2.1, no install needed).\n\nSee [MCP Integration Guide](docs/integrations/mcp.mdx) for setup instructions.\n\n### Slack Bot — Incident Notifications\n\nThe `logclaw-slack-bot` delivers real-time incident notifications to Slack with rich Block Kit formatting, DM support, and OAuth. Runs on Cloudflare Workers.\n\nSee [Integrations](docs/integrations.mdx) for setup.\n\n### Auth Proxy — API Key Validation\n\nThe `logclaw-auth-proxy` sits between ingress and the OTel Collector. It validates API keys against PostgreSQL, injects `tenant_id` into OTLP payloads, and enforces rate limits (200 req/min unauthenticated, 6000 req/min per tenant). Stateless and horizontally scalable.\n\n---\n\n## Component Versions\n\n| Component | Version |\n|---|---|\n| Apache Kafka (Strimzi) | 3.7.0 |\n| Apache Flink | 1.19.0 |\n| OpenSearch | 2.14.0 |\n| External Secrets Operator | 0.10.3 |\n| cert-manager | v1.16.1 |\n| Apache Airflow | 1.14.0 |\n| Zammad | 12.4.1 |\n| OpenTelemetry Collector Contrib | 0.114.0 |\n| KServe | 0.13.0 |\n| Feast | 0.40.0 |\n| Next.js (Dashboard) | 16.1.6 |\n\n---\n\n## Development\n\n### Dashboard (Next.js)\n\n```bash\ncd apps/dashboard\nnpm install\nnpm run dev\n# → http://localhost:3000\n```\n\n### Bridge (Python)\n\n```bash\ncd apps/bridge\npip install -r requirements.txt\nexport KAFKA_BROKERS=\"localhost:9092\"\nexport OPENSEARCH_ENDPOINT=\"http://localhost:9200\"\npython main.py\n# → HTTP API on :8080 (/health, /metrics, /config)\n```\n\nSee [Bridge docs](docs/components/bridge.md) for configuration reference.\n\n### Ticketing Agent (Python)\n\n```bash\ncd apps/ticketing-agent\npip install -r requirements.txt\nexport KAFKA_BROKERS=\"localhost:9092\"\nexport OPENSEARCH_ENDPOINT=\"http://localhost:9200\"\npython main.py\n# → HTTP API on :8080\n```\n\n### Agent (Go)\n\n```bash\ncd apps/agent\ngo run main.go\n# → HTTP API on :8080 (/health, /ready, /metrics)\n```\n\n### Auth Proxy (TypeScript)\n\n```bash\ncd apps/logclaw-auth-proxy\nnpm install\nnpm run dev\n# → HTTP API on :4318\n```\n\nRequires a PostgreSQL database with API keys. See [API Keys docs](docs/api-keys.mdx).\n\n### MCP Server (TypeScript)\n\n```bash\ncd apps/logclaw-mcp-server\nnpm install && npm run build\nLOGCLAW_API_KEY=lc_proj_test npx .\n```\n\n### Helm Charts\n\n```bash\n# Lint all charts\nmake lint\n\n# Render templates (dry-run, no cluster needed)\nmake template TENANT_ID=ci-test\n\n# Diff current vs new\nmake template-diff TENANT_ID=dev-local\n\n# Package charts as .tgz\nmake package\n\n# Push to OCI registry\nmake push HELM_REGISTRY=oci://ghcr.io/logclaw/charts\n```\n\n---\n\n## Docs\n\nFull documentation is available at [docs.logclaw.ai](https://docs.logclaw.ai).\n\n**Getting Started:**\n- [Quick Start — Send Logs](docs/quickstart-send-logs.mdx)\n- [API Keys](docs/api-keys.mdx)\n- [Local Development](docs/local-development.md)\n- [Architecture](docs/architecture.md)\n\n**Components:**\n- [Bridge](docs/components/bridge.md) — anomaly detection + trace correlation\n- [Dashboard](docs/components/dashboard.md) — web UI\n- [Ticketing Agent](docs/components/ticketing-agent.md) — multi-platform incident routing\n- [OTel Collector](docs/components/otel-collector.md) — OTLP ingestion\n- [Incident Classification](docs/components/incident-classification.md) — composite scoring\n\n**Integrations:**\n- [Integrations Overview](docs/integrations.mdx) — PagerDuty, Jira, ServiceNow, OpsGenie, Slack\n- [MCP Server](docs/integrations/mcp.mdx) — Claude Code, Cursor, Windsurf\n\n**Reference:**\n- [OTLP Integration Guide](docs/otlp-integration.md) — Python, Java, Node.js, Go SDK examples\n- [Values Reference](docs/values-reference.md) — Helm chart configuration\n- [Onboarding a New Tenant](docs/onboarding.md)\n- [API Reference](docs/api-reference/overview.md)\n\n**Enterprise:**\n- [Enterprise Console](https://console.logclaw.ai) — multi-org, API key management, project settings\n\n---\n\n## Contributing\n\nWe welcome contributions! Please read our guidelines before opening a PR:\n\n- [Contributing Guide](CONTRIBUTING.md)\n- [Code of Conduct](CODE_OF_CONDUCT.md)\n- [Security Policy](SECURITY.md)\n\nUse the [issue templates](.github/ISSUE_TEMPLATE/) for bug reports and feature requests.\n\n---\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE)\n",
  "bytes": 23668,
  "sha": "608dfb42828b1029b184e91e6e45824e49e4caf2889c1a466d34692043a88154",
  "repo_slug": "logclaw/logclaw",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_robeldev_logclaw_mcp_server_6132d684/readme"
}