{"id":50956738,"url":"https://github.com/langfuse/claude-observability-plugin","last_synced_at":"2026-06-18T08:01:55.721Z","repository":{"id":363587436,"uuid":"1250204172","full_name":"langfuse/claude-observability-plugin","owner":"langfuse","description":"The Langfuse Observability Plugin for the Claude Code Marketplace","archived":false,"fork":false,"pushed_at":"2026-06-09T13:57:08.000Z","size":330,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-09T15:21:15.741Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/langfuse.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":"2026-05-26T12:03:30.000Z","updated_at":"2026-06-09T14:16:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/langfuse/claude-observability-plugin","commit_stats":null,"previous_names":["langfuse/claude-observability-plugin"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/langfuse/claude-observability-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langfuse%2Fclaude-observability-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langfuse%2Fclaude-observability-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langfuse%2Fclaude-observability-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langfuse%2Fclaude-observability-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/langfuse","download_url":"https://codeload.github.com/langfuse/claude-observability-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/langfuse%2Fclaude-observability-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34481332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-06-18T08:01:55.057Z","updated_at":"2026-06-18T08:01:55.715Z","avatar_url":"https://github.com/langfuse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Langfuse Observability Plugin for Claude Code\n\nTrace every Claude Code session to [Langfuse](https://langfuse.com) — turns, generations, tool calls, and token usage — with zero code changes.\n\n## Install\n\n```bash\nclaude plugin marketplace add langfuse/Claude-Observability-Plugin\nclaude plugin install langfuse-observability@langfuse-observability\n```\n\nRestart Claude Code after install.\n\nOn enable, you'll be prompted for:\n\n| Field                 | Description                                                                                          |\n| --------------------- | ---------------------------------------------------------------------------------------------------- |\n| `LANGFUSE_SECRET_KEY` | Your Langfuse secret key (`sk-lf-...`). Stored in your OS keychain.                                  |\n| `LANGFUSE_PUBLIC_KEY` | Your Langfuse public key (`pk-lf-...`).                                                              |\n| `LANGFUSE_BASE_URL`   | https://us.cloud.langfuse.com (default), https://cloud.langfuse.com for EU, or your self-hosted URL. |\n| `LANGFUSE_USER_ID`    | Optional. User identifier attached to every trace (shown as the user in Langfuse).                   |\n| `CC_LANGFUSE_DEBUG`   | Verbose logging to `~/.claude/state/langfuse_hook.log`.                                              |\n| `CC_LANGFUSE_MAX_CHARS` | Truncate captured inputs/outputs to this many characters (default 20000).                          |\n| `CC_LANGFUSE_SKILL_TAGS` | Tag traces with `skill:\u003cname\u003e` for every skill invoked in the turn (default true).                 |\n| `CC_LANGFUSE_CAPTURE_SKILL_CONTENT` | Include injected skill instruction text in the Skill tool span output (default false).  |\n\nGet keys from your Langfuse project settings → API Keys.\n\n## Requirements\n\nOne of:\n\n- [uv](https://docs.astral.sh/uv/) (recommended) — installs the langfuse SDK automatically, no setup needed.\n- Python 3.10+ as `python3` with `pip install \"langfuse\u003e=4.0,\u003c5\"` (fallback when uv is not on PATH).\n\nIf neither is set up, the hook exits silently — no impact on Claude Code.\n\n## How it works\n\nA hook reads the session transcript incrementally on every turn (Stop) and at session end (SessionEnd), and emits a Langfuse trace with one span per turn, nested generations per assistant message, and child tool spans for every tool call. Token usage is captured when present.\n\nState is kept in `~/.claude/state/langfuse_state.json` so re-runs only emit new turns.\n\n## Privacy\n\nThis plugin transmits your Claude Code session data — conversation turns, assistant\ngenerations, tool calls, and token-usage statistics — to the Langfuse endpoint you\nconfigure (`LANGFUSE_BASE_URL`, default `https://us.cloud.langfuse.com`; EU and\nself-hosted endpoints are supported). Data is sent at the end of each turn (the\n`Stop` hook) and at session end (`SessionEnd`) using the Langfuse API keys you\nprovide, which are stored in your OS keychain. No data is sent anywhere other than\nthe endpoint you configure.\n\nFor how Langfuse Cloud handles data it receives, see the Langfuse privacy policy:\nhttps://langfuse.com/privacy . When using a self-hosted Langfuse instance, your data\nstays within your own infrastructure.\n\n## Reconfigure\n\n```bash\nclaude plugin disable langfuse-observability\nclaude plugin enable langfuse-observability\n```\n\n## Uninstall\n\n```bash\nclaude plugin uninstall langfuse-observability\n```\n\n## Troubleshooting\n\n- Nothing in Langfuse: check `~/.claude/state/langfuse_hook.log` (enable `CC_LANGFUSE_DEBUG`).\n- Hook not firing: confirm with `claude plugin list` that langfuse-observability is enabled; restart Claude Code.\n- langfuse import errors (no uv): ensure the `python3` on your PATH has the SDK installed, or install uv.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flangfuse%2Fclaude-observability-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flangfuse%2Fclaude-observability-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flangfuse%2Fclaude-observability-plugin/lists"}