AI Observability by OpenObserve - OpenTelemetry-native observability for agents and LLMs
by•
Your agent cost $40 and took 34 seconds. But why? OpenObserve traces every agent session across models, tools, services, datastores, and user sessions so you can see exactly where time, money, and quality went. Detect loops, run online evals, and follow failures from the LLM call through your backend and database, alongside the logs, traces, and metrics from the rest of your production stack.

Replies
Mesh
Congrats on the updates! 🎉🎉
Some minor feedback, last I checked (~ month ago) it only allows integration via manual integration or custom harnesses, which is great of course for many cases.
However in case is with an existing harness, such as OpenClaw, Hermes, and LobeHub, I didn't see an easy way to easily integrate this feature.
Ideally would leverage corresponding model's API or webhooks to allow all uses of inference to be hooked up even in cases where the harness isn't cooperative.
Maybe this is all solved now, but Iast I checked was an issue as much work is done via existing or well known harnesses.
Please keep it up, really great improvements over the last year!!
OpenObserve
@asherraph This is very useful feedback! You're right that the cleanest path today is OTel. If the harness emits OpenTelemetry, you point it at us and you're done. Claude Code and Codex work this way. Your own app works with the auto-instrumentation.
Harnesses that don't emit OTel and don't expose hooks are the gap you're describing. The workaround right now is sitting between the harness and the model with a gateway or proxy that emits spans for every inference call, so you get coverage even when the harness isn't cooperative. A first-class version of that, where you point the harness at an OpenObserve endpoint and it just works, is exactly the direction we're pushing.
BTW, which of the three matters most to you? That helps us prioritize where to start.
@asherraph You're right, and it's the sharpest version of a gap two other people hit today.
Right now it's OTel from the harness, which works when the harness cooperates — and plenty don't. The proxy idea is the general answer: sit in front of the provider endpoint and capture every inference regardless of what's calling it. We don't ship that today.
The trade-off worth naming: a proxy gives you complete coverage but loses structure — it sees the calls, not which agent, which tool, or which session they belonged to, unless the harness passes something through. OTel gives you structure but only where the harness cooperates. You end up wanting both, because they answer different questions.
Someone asked about Hermes specifically this morning and I opened an issue for it: https://github.com/openobserve/openobserve/issues/14410
Which harness is blocking you most right now? If it's OpenClaw or LobeHub I'll file those too.
Can I see what AI agents are doing when they interact with each other, and trace where things go wrong if one of them starts going off the rails?
@sara_dph Yes — that's the case it's built for.
The agent graph gives you the shape: which agent called which, where the tools and models sit. The session view gives you the sequence — turn by turn, with the input and output captured on each span, so you can see exactly what one agent handed to the next. That handoff is usually where things start going off the rails: the second agent got a truncated or badly worded brief, and everything after it is downstream of that one moment.
Repeats get flagged even when nothing errors, which is the nasty case — no exception, no timeout, just the same step eight times.
What does off the rails look like in your setup — wrong tool, or wrong plan?
@hengfei_yang Both, if they’re internal. What's tricky is when our agent interacts with other external agents we can’t observe directly. Can we trace what our agent sent, what came back, and how it reacted, so we can test and improve our own agent to produce the correct response, especially when that response is customer-facing?
@sara_dph Yes — and the way to think about it is that the boundary is what matters, not their internals.
Your agent's call to the external one is your span: what you sent, what came back, status and latency, sitting in the same session as everything your agent did next. So the response and your agent's reaction to it are side by side, which is the part you can actually fix.
Then the loop: sessions where the external response was odd get flagged into a review queue, become a dataset of responses you actually observed, and you re-run prompt changes against that set before shipping. Since the output is customer-facing, you can also score the final answer continuously in production.
One caveat — external agents drift. Capture their real responses as your test cases rather than assuming a stable contract.
Are those external agents over HTTP/MCP, or something more custom?
OpenObserve
@sara_dph Yes , You can trace agent-to-agent interactions, tool calls, and LLM calls in the same trace, so when one agent starts going off the rails, you can drill into the span hierarchy to see where the behavior changed.
It’s OpenTelemetry-native, so you don’t need a separate telemetry pipeline. We have integrations for frameworks like OpenAI Agents, AutoGen, CrewAI, LangChain, and more.
Does this integrate with products like Hermes? I tend to use this to as the main agent coordinator for my projects but it then also delegat3s to opencode. It would be amazing if this integrated with hermes so that it can monitor usage across all of my projects including the tasks that are delegated. I like the idea of b3ing able to better visualize and analyze usage directly, it is often the hidden layer that is missing and so telling when things are either not working or costing more than expected. Great work.
@dmoniz22 No first-party Hermes integration today — being straight with you. But two pieces make it workable right now.
OpenCode is already a one-command setup on our side, so the delegated half is covered. And Hermes can emit OTel via the community hermes-otel plugin, which ships traces, metrics and logs to any OTLP endpoint — point it at OpenObserve and the coordinator layer lands in the same place as everything else. We haven't tested that combination ourselves yet.
The seam worth watching is the one you're actually asking about: for a delegated task to show up inside the parent run rather than as its own separate trace, Hermes has to pass a session id down to OpenCode.
This is a good catch and we'll add proper Hermes support — I've opened an issue for it so you can follow along: https://github.com/openobserve/openobserve/issues/14410
Are you delegating to OpenCode from a single Hermes instance, or one per project?
@hengfei_yang at the moment I have one hermes instance managing a number of projects. I had been using separate instances but it honestly became more confusing. I find the one instance managing several projects easier for me to manage and coordinate.
Thanks for opening the issue, I will definitely be following it.
OpenObserve
@dmoniz22 Hengfei has the integration path covered, so I'll just add one thing. The "hidden layer" you describe is exactly what we hear most. Costs drift and behavior degrades quietly, and by the time someone notices, nobody can say which project or which delegated task did it. Getting coordinator and delegate usage into one place is the whole point, and your setup is a good test of it.
Watch the issue Hengfei linked. Once Hermes support lands, I'd like to hear whether the per-project view gives you what you need.
OpenObserve
Hey Product Hunt, DevRel at OpenObserve here.
We've been building AI Observability into OpenObserve for the last few months, and it's finally live.
Everyone is shipping agents, but most tools only tell you the request went through, not whether the answer was any good. a hallucination still returns 200 OK. that's the gap we're closing.
how?
- trace every agent, tool call and model request
- score quality on live traffic, and run experiments before you ship
- send weak traces to a human, then turn them into eval datasets
More importantly it's one unified platform. LLM traces sit next to your logs and infra, OpenTelemetry native, self host or cloud, priced per GB not per span.
It's in beta and we'd love practitioner feedback. if you're running agents in prod, what's painful for you today?
thanks for taking a look.
Hey PH - Eli from the GTM team at OpenObserve here! We've worked tons of different use cases and migrations, so if there are any questions feel free to drop them below!
OpenObserve
@elinickerson Thanks for replying Eli, glad you're here! I think it could be helpful to share one or two anecdotes you hear from folks as they're establishing more mature AI observability practices.
@jacob_swiss Good call! Two things we hear a lot:
Teams usually start by just watching if requests succeed or fail. Then a few weeks in, they realize that doesn't tell them if the answers were actually good, so they shift toward actually measuring quality, not just uptime.
On the evaluation side, most teams start out reviewing conversations by hand. That works for a while, but it doesn't scale. The real shift happens when they start using their actual production data to test and improve things automatically, instead of relying on someone eyeballing transcripts all day.
Happy to go deeper on either if useful!
OpenObserve
Hi Product Hunt community, I'm Jake and one of the team members at OpenObserve. We're so excited to hear your feedback and questions today. Please drop your message here and let us know what you think.
Macaly
otel native is the right call, nobody wants another agent sdk to install 🙌 congrats on #2
congrats team! quick question - since traces capture full prompts and outputs, whats the story for sensitive data? users paste all kinds of stuff into prompts and that ends up in the trace. can we redact/mask fields before ingest or does everything get stored as-is?
OpenObserve
@abhay_padamani1 sensitive or PII data can be handled both at ingest (which is before storage) or directly in the query layer.
Also, do you use a collector or agent? I guess we can handle some of it at source as well
@manas_sharma9 Great!! yeah, we run the otel collector, so makes sense to redact there before it even leaves our infra. curious about the query layer option though - if data is already stored raw, does masking at query time mean admins can still see the original? or is there rbac around who sees unmasked payloads?
OpenObserve
@abhay_padamani1 it can be handled in one of the three ways: Drop, Mask or Redact - no one can actually sees the unmasked payloads, but they can search for it with a hash.
are you familiar with regex patterns?
@manas_sharma9 hash search is clever, didnt expect that. yeah regex is fine, will set up the patterns and try it out
OpenObserve
@abhay_padamani1 Sensitive data Redaction handles it well for both incoming data or already ingested queryable data.
The Sensitive Data Redaction helps prevent accidental exposure of sensitive data by applying regex-based detection to values ingested into streams and to values already stored in streams.
@ashish_kolhe2 ah nice, works on already stored data too. good stuff 👍
Congrats on your launch!
One thing I'm curious about, since you're capturing full prompts and LLM responses, how do you handle PII that inevitably flows through agent traces? Is there a built-in redaction or masking layer before data hits storage, or is that left to the user's OTel pipeline to handle?
OpenObserve
@manas_sharma9 To be honest, I have no specific use case in mind haha just curious about how the tradeoff plays out in practice. And it sounds like a solid design !! I really appreciate for the detailed answer. heheh
@marketer_kim There's a built-in layer, and it runs at ingest, before anything is written — it's not left to your collector.
It's field-level: you bind a regex pattern to a stream and a field, pick a policy — drop the field, redact the match, or hash it (hashing keeps the value joinable without keeping the value) — and choose where it applies: at ingestion, at search, or both. At ingestion the value never reaches storage; at search it's stored but masked on the way out.
Prompts and responses are ordinary span fields after normalization, so the same engine that redacts your logs covers them. There's no separate LLM path to configure.
Two honest caveats: this lives in the enterprise build — on OSS today it's the collector's redaction processors. And it's regex, so it's strong on structured PII (emails, cards, keys, national IDs) and weak on names buried in free text. Anyone claiming reliable PII detection in free-form prose is overselling it.
Which do you actually need — never-stored, or stored-but-masked for most viewers? Those two pull in different directions.