Move LLM trace data between systems: pull from providers, push to metergraph.
Project description
metergraphrelay
Try metergraph without installing its SDK: export the chat completions OpenAI already stores for you, and push them into metergraph.
- Your app calls OpenAI with
store=True— a one-line addition if it doesn't already (see below). OpenAI keeps the completion server-side. metergraphrelay pull openailists those stored completions via OpenAI's own API and writes them as JSONL, already shaped to metergraph's native trace schema.metergraphrelay pushuploads that file to metergraph.
No SDK, no instrumentation beyond the store=True flag — which is also
what OpenAI's own dashboard and evals features use.
This only reads what's associated with the API key you provide; it can't see or export anyone else's data. Built on OpenAI's List Chat Completions API — see the API reference for the underlying data model.
Setup
pip install metergraphrelay
cp .env.example .env
# edit .env and set OPENAI_API_KEY
Quickstart
metergraphrelay pull openai -n 25 --output traces.jsonl
metergraphrelay push traces.jsonl
No stored completions yet? Generate a couple first:
metergraphrelay demo openai
Enabling storage on your own calls
pull openai only finds completions created with store=True. Add it to
calls you're already making:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "..."}],
store=True,
metadata={"source": "my-app"}, # optional, filterable later
)
Before enabling this in production:
- Stored completions include full request/response content by default.
- There's no automatic expiry from OpenAI's side — delete via their
Delete chat completion
API;
metergraphrelaydoesn't do this for you.
Commands
metergraphrelay pull openai -n 25 --output my-traces.jsonl --stdout --include-content --route my-app/support-bot
metergraphrelay demo openai --model gpt-4o-mini
metergraphrelay push traces.jsonl
pull anthropic / pull langfuse accept the same shape but aren't
implemented yet — they check for ANTHROPIC_API_KEY /
LANGFUSE_PUBLIC_KEY+LANGFUSE_SECRET_KEY and report accordingly.
All subcommands accept --env-file PATH.
Trace record shape
Each line of pull openai's output is a JSON object already shaped for
metergraph's ingest API:
{
"ts": "2026-07-30T12:00:00+00:00",
"provider": "openai",
"model": "gpt-4o-mini",
"status": "success",
"endpoint": "chat.completions",
"input_tokens": 12,
"output_tokens": 34,
"error": false,
"error_type": null,
"request_id": "chatcmpl-...",
"tags": {},
"route": "openai/backfill",
"content_opted_in": false,
"request_json": null,
"response_text": null,
"sdk": "metergraphrelay",
"sdk_version": "0.1.1"
}
request_json/response_text are populated only when --include-content
is passed.
Every completion returned by the stored-completions list already succeeded,
so status is always "success". error/error_type flag a partial
record: --include-content was requested but the follow-up message fetch
failed, so token counts are still real while the content is missing.
Development
git clone https://github.com/VasiliyRad/metergraphrelay
cd metergraphrelay
pip install -e ".[dev]"
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file metergraphrelay-0.1.1.tar.gz.
File metadata
- Download URL: metergraphrelay-0.1.1.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31d27fd6132589f393b977a7fc11365f93c746b2ff983dd9c871b813cce793e0
|
|
| MD5 |
9b02226e7d91346ec14972ea6b9537a1
|
|
| BLAKE2b-256 |
e69ecee143049151d78fb0a2de2709f5435ef003f88a8e92badd65cf35efa33d
|
File details
Details for the file metergraphrelay-0.1.1-py3-none-any.whl.
File metadata
- Download URL: metergraphrelay-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa23ea371af766a16f12828d6f814210eb5d0aaac260323678ba29ef9f17d0e9
|
|
| MD5 |
5f2830e668f62265ec46ac823c19f665
|
|
| BLAKE2b-256 |
4b944ce0fad1784806449bb2dc4a3466c9bc7f065eebabe33a5039e40a94a764
|