openllmetry CLAUDE.md

Repository instructions for OpenLLMetry, a collection of Python packages for monitoring software powered by large language models. The packages are managed together in an Nx workspace, which is a project containing several related packages.

In plain words
What is it for?
Use it to run tests and lint checks across packages, identify packages affected by changes, update lock files, inspect the project graph, and work with saved API-response test recordings.
Why use it?
It explains the project layout and the approved commands, so contributors can test, lint, and manage packages consistently.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/traceloop/openllmetry/claude-md
Clone the repo
git clone --depth 1 https://github.com/traceloop/openllmetry
Per session 636 This file is loaded in full into every session.
When invoked 636 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00636 $0.00636
Opus 5 $0.00318 $0.00318
Sonnet 5 $0.00127 $0.00127
Haiku 4.5 $0.00064 $0.00064

Measured 2d ago against content hash ffc80cec3877, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

openllmetry CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 90 lines

How it starts

The opening of the file, as written. The whole thing — 90 lines — stays where its author put it; the contents beside it link to each section on GitHub.

OpenLLMetry Repository Guide

Repository Structure

This repository contains multiple PyPI-publishable packages organized and orchestrated using Nx workspace management.

Nx Workspace Commands

# Run tests across all packages
nx run-many -t test

# Run linting across all packages
nx run-many -t lint

# Update lock files across all packages
nx run-many -t lock

# Run specific targets on specific packages
nx run <package-name>:test
nx run <package-name>:lint

# Show project graph
nx graph

# Show what's affected by changes
nx affected:test
nx affected:lint

Package Management

All packages use uv as the package manager. Always execute commands through uv:

uv run <command>

Testing with VCR Cassettes

Tests utilize VCR cassettes for API calls.

Commands

# Run tests normally (uses existing cassettes)
uv run pytest tests/

# Re-record all cassettes (requires API keys)
uv run pytest tests/ --record-mode=all

# Record only new test episodes
uv run pytest tests/ --record-mode=new_episodes

# Record cassettes once (if they don't exist)
uv run pytest tests/ --record-mode=once

# Run tests without recording (fails if cassettes missing)
uv run pytest tests/ --record-mode=none

# Run specific test files
uv run pytest tests/test_agents.py --record-mode=once

Guidance

Re-record cassettes when API interactions change to ensure test accuracy. Never commit secrets or PII. Scrub them using VCR filters (e.g., filter_headers, before_record) or your test framework's equivalent. Store API keys only in environment variables/secure vaults; never in code or cassettes. Typical record modes you may use: once, new_episodes, all, none (choose per test needs). Creating new cassettes requires valid API keys (OpenAI, Anthropic, etc.); ask the user to provide them if needed.

Debugging with Console Span Exporter

For debugging OpenTelemetry spans and hierarchy issues, use the console exporter:

from opentelemetry.sdk.trace.export import ConsoleSpanExporter
from traceloop.sdk import Traceloop

Traceloop.init(
    app_name="debug-app",
    exporter=ConsoleSpanExporter(),
    # other config...
)

Read the full file on GitHub · 90 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 90 lines · 636 tokens per session scan A ffc80cec3877

Subscribe to this mod's changes

openllmetry CLAUDE.md is an instructions file published in the GitHub repository traceloop/openllmetry (7,410 stars, last pushed 23d ago), licensed Apache-2.0. It adds 636 tokens to every session, about $0.0032 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.