{"id":35729216,"url":"https://github.com/moolen/spectre","last_synced_at":"2026-04-14T21:00:59.684Z","repository":{"id":326593272,"uuid":"1104154803","full_name":"moolen/spectre","owner":"moolen","description":"👻  connects changes to impact. Automatically.","archived":false,"fork":false,"pushed_at":"2026-04-10T11:37:09.000Z","size":45794,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-10T12:35:53.894Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moolen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-25T20:41:21.000Z","updated_at":"2026-04-10T11:15:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/moolen/spectre","commit_stats":null,"previous_names":["moolen/spectre"],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/moolen/spectre","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fspectre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fspectre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fspectre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fspectre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moolen","download_url":"https://codeload.github.com/moolen/spectre/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moolen%2Fspectre/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31815080,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-06T10:16:35.265Z","updated_at":"2026-04-14T21:00:59.643Z","avatar_url":"https://github.com/moolen.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spectre\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"ui/public/ghost.svg\" alt=\"Spectre\" width=\"200\"\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n📚 **[Documentation](https://moolen.github.io/spectre/)** | 🚀 **[Quick Start](#quick-start)** | 🤖 **[MCP Integration](#mcp-integration)**\n\n\u003c/div\u003e\n\n## What is Spectre?\n\nSpectre is a Kubernetes observability system that captures resource changes across your cluster and stores them in its embedded event store. It provides timeline visualization, relationship mapping, anomaly detection, and root cause analysis through both a web UI and MCP integration for AI assistants.\n\n\u003cdiv align=\"center\"\u003e\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"./assets/screenshot-2.png\" alt=\"Timeline View\" /\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"./assets/screenshot-1.png\" alt=\"Graph View\" /\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cem\u003eTimeline View\u003c/em\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cem\u003eGraph View with Causal Paths\u003c/em\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n### Features\n\n- **Event Capture** - Watches Kubernetes resources and records all create, update, delete operations\n- **Embedded Storage** - Persists events and derived relationship data without an external graph database\n- **Timeline View** - Visualizes resource state changes over time with diff inspection\n- **Graph View** - Displays resource relationships within a namespace with anomaly highlighting\n- **Anomaly Detection** - Identifies crash loops, image pull failures, config errors, scaling issues\n- **Causal Path Analysis** - Traces root causes through resource relationships using graph traversal\n- **MCP Server** - Exposes cluster data to AI assistants for incident investigation\n\n## Quick Start\n\n### Using Helm\n\n```bash\nhelm install spectre oci://ghcr.io/moolen/charts/spectre \\\n  --namespace monitoring \\\n  --create-namespace\n\nkubectl port-forward -n monitoring svc/spectre 8080:8080\n\n# Open your browser to http://localhost:8080\n```\n\n## Configuration\n\n### Watcher Configuration\n\nCreate a `watcher.yaml` file to specify which resources to monitor:\n\n```yaml\nresources:\n  - group: \"\"\n    version: \"v1\"\n    kind: \"Pod\"\n    namespace: \"\"\n  - group: \"apps\"\n    version: \"v1\"\n    kind: \"Deployment\"\n    namespace: \"\"\n```\n\n## MCP Integration\n\nSpectre runs an integrated MCP server on **port 8080** at the **/v1/mcp** endpoint. The MCP server runs in-process within the main Spectre server (not as a separate container) and provides AI assistants with direct access to cluster data during incident investigation.\n\n### Connection\n\nAfter port-forwarding the Spectre service (see [Quick Start](#quick-start)), connect your AI assistant to:\n\n```\nhttp://localhost:8080/v1/mcp\n```\n\nThe MCP server exposes three tools:\n\n### Tools\n\n**cluster_health** - Returns cluster health overview for a time window. Reports resource counts by status (healthy, warning, error), lists unhealthy resources with their conditions, and identifies top issues. Supports filtering by namespace.\n\n**resource_timeline** - Returns status timeline for resources matching kind/name/namespace filters. Shows status segments with durations, state transitions, and associated Kubernetes events. Used to understand when and how a resource's state changed.\n\n**resource_timeline_changes** - Returns field-level diffs for specific resource UIDs. Filters out noise (managedFields, resourceVersion) and summarizes status condition changes. Shows what actually changed in the resource spec/status between versions.\n\n### Prompts\n\nThe MCP server provides two investigation prompts:\n\n**post_mortem_incident_analysis** - Guides systematic historical incident investigation. Calls cluster_health, then resource_timeline on affected resources, builds chronological timeline, identifies contributing factors.\n\n**live_incident_handling** - Guides real-time incident triage. Focuses on recent data around incident start, identifies likely root cause, recommends immediate mitigation steps.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoolen%2Fspectre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoolen%2Fspectre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoolen%2Fspectre/lists"}