Why most LLM tools need your prompts and responses
Tools like Langfuse, Helicone, and LangSmith are tracing / observability platforms. Their whole job is to capture each request and response so you can open a trace later and inspect exactly what went in and what came out. That's genuinely useful โ but it means the full prompt and completion are captured and stored on their platform. Self-hosting keeps that data on your own infrastructure, but the content is still recorded; it doesn't make the capture go away.
How ChirpPal is different
ChirpPal isn't a trace store โ it's a smoke alarm. You wrap a call in one line, and the checks (valid JSON, no refusal, required keywords, latency, whether the call errored) run inside your own process, against the response you already have in memory. By default, the only thing that leaves your machine is pass/fail metadata: which check failed, latency, the model id, token count. The prompt and the response themselves are never sent.
Even error reporting is content-safe: a failed call's error
field defaults to a short signature (the exception type plus a numeric
status/code, e.g. RateLimitError (429)), not the raw
message โ validated against a strict format so a fragment of your own
text can't slip through. And because both wrappers (Python and JS/TS)
are open source,
you can read every line and confirm this yourself rather than take our
word for it.