<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: karanraina</title><link>https://news.ycombinator.com/user?id=karanraina</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 07 Aug 2026 05:55:53 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=karanraina" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>ptrace is too low level and will freeze your process. it cant be used for production debugging i feel.<p>we work at the application layer by hooking into production grade tooling if available (inspector in v8, sys.monitoring in python) or bytecode manipulation(jvm)<p>since we arent controlling the application for a different process, we dont need to freeze the app to get the current app state<p>requirements we had in mind in order of importance<p>1. safety -> user app needs to function as usual no matter what happens, there shouldnt be an error in the user's app because of us<p>2. zero idle footprint -> if no probe is active, cpu/memory differency in the user app should be immeasurable<p>3. zero latency footprint at non probe paths while other probes are active<p>4. measure mem/cpu footprint directly or via a proxy like eventloop lag and have guardrails around it. suspend probes or even lose snapshot data if guardrail conditions meet<p>5. minimal mem/cpu footprint for active probes<p>6. minimal latency foot print for active probe paths</p>
]]></description><pubDate>Thu, 06 Aug 2026 22:27:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49203500</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49203500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49203500</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>thanks for pointing that out. I did see some weird comments yesterday. some of them got removed before i could reply. some later i guess. But whatever, we didnt ask people to comment here :)</p>
]]></description><pubDate>Thu, 06 Aug 2026 22:04:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49203248</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49203248</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49203248</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>i just gave the k8s example to show that we wont be able to find root cause of every issue.<p>our snapshots give evidence, whether or not its helpful is determined by the engineer/ai agent<p>I'm not saying every issue would be diagnosed this way, sometimes, it might well be beyond your control like a VM on a noisy neighbour hogging shared CPU<p>we might get things wrong as well.</p>
]]></description><pubDate>Thu, 06 Aug 2026 22:00:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49203200</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49203200</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49203200</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>yes, he'd have to opt in for jfr profiling and our tool would have shown him memory leak candidates</p>
]]></description><pubDate>Thu, 06 Aug 2026 21:42:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49202991</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49202991</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49202991</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>yes, for example we dont have connectors for k8s yet, so we are blind to memkills triggered due to sidecars.<p>trying to debug using our tool might even lookup some memleak candidates in your primary container, but there wont be conclusive evidence for it and it would say so.<p>for in app errors all we do is hypothesize and either prove/disprove that using data from running system.<p>and whenever we do report something we give have the evidence for it. its not fool proof but just asking does this hypothesis gets proved with this evidence in a subagent mostly does the trick</p>
]]></description><pubDate>Thu, 06 Aug 2026 04:29:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49192447</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49192447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49192447</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>we have a lot of guardrails (<a href="https://docs.hyperprobe.co/how-it-works#built-in-safety-guardrails">https://docs.hyperprobe.co/how-it-works#built-in-safety-guar...</a>)<p>if any guardrails fails, we suspend probes till cooldown.<p>also
1. every probe is bounded by hits/expiry time (whichever comes earlier)
2. hit budgeting happens with a token bucket at a global level, per probe was an overkill (numbers are configurable)
3. we even measure the execution time that probes have when active and suspend if that that takes longer than threshold (again configurable)
4. we even have budgets for the network bandwidth it would take (approximated by the size of payloads)
5. collection itself is bounded by max no of total snapshots we can keep in memory.
6. every snapshot has a size limit as well,  every variable has a size limit as well.
7. depth of objects, no of objects, size of lists is capped by default.<p>latency delta varies by platform under load but is mostly negligible<p>nodejs: ~7-10ms
python: ~4-9ms
java: 1-2ms<p>the main reason for this is guardrails suspending probes,  having loosened guardrails will increase this under load<p>regarding localization of failures.. absolutely
we even report the error in the probe snapshot (confirmed by adding side effects in an expression and commenting out the guardrails during testing)<p>huge payload size doesnt matter.. we limit the objects depth, list length, remove duplicate refs from data etc.. even string length is truncated., but even if it happens, your request would still survive.<p>also, even if the collector dies or there's a network failure, your service remains unaffected, we just are unable to collect telemetry<p>we are boring under extreme conditions :)</p>
]]></description><pubDate>Thu, 06 Aug 2026 03:53:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49192224</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49192224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49192224</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>by defalut, probes basically tell the fileName/className and lineNo/methad name to attach to (in additon to metadata like serviceId, environemnt name etc)<p>This is readonly and safe by default.<p>expressions come into play for conditonal probes<p>read only safety guarantees here depend on the runtime<p>NodeJS: handled implicitly by using `throwOnSideEffect: true`
any side possible effects are prevented using this<p>Python and Java: As of now, we don't let conditions have method invocations at all and only allow a subset of comparator operators. no assignment allowed<p>usually property can invoke getter which usually should be safe to execute by design, but since we cant guarantee how it would have been written, we dont allow that as well for now.<p>order.total > 50 => not allowed<p>total > 50 => allowed<p>to get around this we use multiple probes, agrregated by the current context's traceId (if avaliable)<p>we plan to eliminate this problem by adding a custom DSL + AST parsing which can act as the policy layer to dissallow condtional probes<p>Audit trail is in our roadmap. As of now, you can delete the data that's collected by probes.
the only problem we have with audit trail is what if you capture something sensitive and that remains in your audit trail.. so we need some immutability that registers audit trails.. but then have enough flexibility to remove the data collected.. can be done</p>
]]></description><pubDate>Thu, 06 Aug 2026 03:02:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49191895</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49191895</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49191895</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>> How is HyperProbe different from existing tools like AppSignal, Rollbar, and Embrace?<p>These work only on either uncaught exceptions or wrapping up caught exceptions with their sdk.
These tools will not help you with silent failures, like logic bugs where code executes cleanly without throwing, but produces the wrong business state. If every problem in your app ends up as an exception, sure you'll be able to catch the symptoms of where the exception got thrown. we can deal with these too, but these tools cant deal with the messy bugs where no exception fires.<p>> Such very mature tools exist that auto-instrument, collect variables from the call stack, and pinpoint error causes.<p>That is true for python using frame.f_locals (we use this as well)<p>nodejs only gives it only till the lasy async boundary, after that v8 itself drops this data.
java only gives you the current frame, to get variables beyond that you would needs JDI/JVMTI which would block your threads, usually unnacceptable in production<p>To get around this safely, we add multiple probes all across the call chain and collate collected data using the traceId from the context (or thread id as a fallback);<p>> Does this tool only exist to shore up poor system design?<p>Returning 200 OK on a silent failure is 100% bad system design, I completely agree. But real-world production systems are full of legacy edge cases. (if that weren't true, L1/L2/L3 support team shenanigans wouldn't exist)<p>Also, the exception will tell you that an exception occured in order service in GET /orders/{id}/payment, your trace will tell you payment service is giving 404 for that order ID<p>what it wont tell you it happened becuase the webhook endpoint that your payment gateway calls is now receiving a new payment state called 'PENDING' and that you dont handle but still mark the payment as 'processed' for idempotency check.
and now your order service is calling the payment service and its giving 404 because it never got written<p>Bad design. 100% Agree, but has happened IRL.<p>> putting engineers in a situation where debugging requires accessing unknown amounts of live sensitive customer data is generally considered bad practice (even if it happens often IRL)<p>I think tells that teams would go to these extents to fix issues. Not ideal. I agree.<p>> in a hurry to debug, it's easy to miss that a property should have been redacted; by then it's too late and sensitive data is exposed<p>fair critique. we currently use in-process rule engines to filter known sensitive patterns, and users can add on to it. but we are also building out-of-process secondary checks (using NER/classifiers) to sanitize payloads before storage. It requires strict rules, but getting verified runtime evidence is far safer and faster than blindly guessing and shipping trial-and-error hotfixes to production. or waiting to be too sure.. a luxury that might not be possible everytime.<p>>  Rollbar etc aggregate errors and captured data to identify patterns before a human (or agent, or tool) ever takes a look at it.<p>There is merit in that as well, if you are looking at so many logs/traces, you kinda have to do it.
We have a different approach, we use hypothesis driven conditional probing instead. probes are dropped dynamically as the understanding of the bug evolves in a session<p>exmaple:<p>console.log('hello');<p>const x = await getThisValueSomehow();<p>if (condition A) {<p>console.log('i m in condition A');<p>// do something;<p>} else if (condtion B) {<p>console.log('i m in condition B');<p>// do something;<p>}<p>You can also place a probe before the branch to capture variable state when neither condition evaluates to true. You gather precise data on demand rather than paying to store petabytes of static trace data.<p>>  A single captured instance can also be very misleading as to the true cause.<p>We collect multiple snapshots per probe run. However, because we capture full variable state at the exact execution line, a single snapshot frequently reveals the root cause for that specific failure path. If that snapshot raises new questions, you/your agent simply drops more probes deeper down the call chain<p>Thanks! This was very insightful</p>
]]></description><pubDate>Thu, 06 Aug 2026 02:43:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49191792</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49191792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49191792</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>thanks! the read-only guarantee is structurally enforced by sdk itself<p>a probe is basically just a definition
it contains the file and line number of the code you want to inspect<p>that is safe by default. there's no custom userland function that you can call<p>if you want conditional probes, then it get's tricky<p>here's how it works<p>NodeJS: v8 natively blocks if the code even tries to produce side effects using `throwOnSideEffect: true`<p>in python and java: conditions can be set on local variables only without accessors as of now. you can call functions, can only a subset of comparison operators.<p>so, you can set `total > 50` as a condition but not `order.total > 50` as it could in theory trigger a getter (which ideally should be fine, but devs/agents can make getters with side affects so we wont allow it for now)<p>We will support these use cases with a custom DSL for agents + AST parsing in the future which will let us safely evaluate these expressions.</p>
]]></description><pubDate>Wed, 05 Aug 2026 23:38:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49190534</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49190534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49190534</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>Appreciate the feedback, will try to highlight the how instead of why specially to devs<p>Although, our primary sell is debugging, the context from production on how things work currently helps ai agents during feature development and code reviews as well.</p>
]]></description><pubDate>Wed, 05 Aug 2026 20:52:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=49188842</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49188842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49188842</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>I agree, having an agent safely inspect infrastructure config and Terraform state via a read-only IAM role pairs really well with what we're doing. AWS roles handle the "how is the cloud environment configured?" question, while we handle the "what is happening inside the running process heap/memory?" question.<p>Also thanks for the candid feedback! (And fair call on the design — we definitely prioritized shipping core functionality over UI polish, but point taken on the orange/brown palette, we'll change it)</p>
]]></description><pubDate>Wed, 05 Aug 2026 20:40:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49188699</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49188699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49188699</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>> If you don’t know how it broke, and you don’t know how you fixed it, what exactly is it you think you understand about your application?<p>what we wanted to convey is that sometimes people confuse "the symptom went away" with "the root cause was fixed"<p>I have seen that a rollback, a quick redeploy, or a temporary drop in tenant load makes the alerts go away and issue is considered resolved. specially true for larger teams with many engineers and services<p>a real example: a dev got OOMed after a release that coincided with a flash sale. he increased memory limits, and containers stopped crashing and it was "fixed". Actualy, a newly introduced internal module had a memory leak. adding RAM just hid the leak until the next traffic spike.<p>hyperprobe exists to capture actual in-memory runtime state during live traffic so you can prove the root cause before changing code or scaling infra in this case</p>
]]></description><pubDate>Wed, 05 Aug 2026 19:26:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49187715</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49187715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49187715</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>the value prop is not reading logs automatically<p>your coding agent will have access to your code and can see what logs you have enabled, if indeed that would help in debugging, going that route helps. it can take your agents a bunch of retries but it might get there if the answer is in logs<p>what we provide your coding agent is a detailed snapshot of all your variables at any line it feels would help debugging. and not just in the current call frame.. even the variables of the callers of your current function, like a debugger.<p>suupose funcA() -> funcB() -> funcC() -> yourCurrentFn()<p>we'll provide all the variables that were set in all 4 functions to your agent. debugging using this would be a lot more accurate and you just one snapshot like this instead of looking at a thousand log lines to understand why something is not working the way you want to.<p>this kind of data is missing from your logs and and even your traces because it will be impractical for privacy and performance.</p>
]]></description><pubDate>Wed, 05 Aug 2026 18:48:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49187197</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49187197</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49187197</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>Thanks!<p>It could work, the technology isnt the limitation.<p>But we were clear from day one that we cant let our sdks change the memory.
Even if it helped solve a real problem.. say for example resetting a bad env variable or a feature flag without redeployment.<p>I might be biased from my experience, but i would prefer having a bug in my system for longer that i can reliably reason with than having it solved dynamically within the app which adds another thing to keep in my mind.<p>for me,
bug -> fails -> good
bug + dynamic patch -> works -> bad<p>also we dont think that we ourselves wont have any downtime ever, so we design for it. we'd not want to become as critical for your app as say your database.<p>As of now, your app works even if our servers are down/blocked/slow, adding the ability to change memory on the fly could change this</p>
]]></description><pubDate>Wed, 05 Aug 2026 18:36:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49187040</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49187040</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49187040</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>yup, it races the main wrapped function.<p>makes no difference if its cold or warm start. (The latency because of us, not latency in general)<p>Using AST, that's clever actually! I thought along somewhat similar lines. User tree-sitter. But it needs a build step! not sure how people feel about that :D
It changes your source code itself so we'd need a 2 tiered source resolution. Dirty, but doable.<p>And instead of having this at every line, i did this at "lines of interest"
before and after every scope ends.<p>so at the start/end of an if condition, start/end of fn definiton.
it sort of worked, but it slowed down our synthetic benchmarks for "no effect when probes arent there" by more than what i wanted to tolerate
and it depended of eval which i thought devs wont accept.
and using node-vm slowed it further<p>But will give another try again. thanks for sharing this!</p>
]]></description><pubDate>Wed, 05 Aug 2026 18:19:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49186773</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49186773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49186773</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>YES!!!
for nodejs, inpector API is used. But if you're adding dynamic logs or metrics, we dont even call the inspector completely. we return an expression that will always evaluate to false and safely evaluate our the log/metric. saves time and computations happen in the same cpu cycle<p>You're correct inpector API is not available in many non-v8 targets. Bun also has somewhat of a partial support for inpector API but at least has a programmable debugger interface. It's not going to be as fast as native inspector but its better than nothing i guess :P<p>for python sys.monitoring. for JVM, we do bytecode manipulation itself.<p>bundlers are not an issue because we support sourcemaps.
We just need mappings, not code in the sourcemaps and we do sourcemap resolutions out of process so that your app doesnt spend ~200 MB of memory for parsing sourcemaps</p>
]]></description><pubDate>Wed, 05 Aug 2026 18:07:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49186588</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49186588</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49186588</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>Thanks!<p>You're correct, serverless is a bit tricky. CPU gets suspended the moment your function returns. The way it works is that you wrap your functions with a wrapper in our sdk.<p>that wrapper is supposed to track if there's telemetry to be sent, if so.. it sends it, otherwise, return as usual<p>this makes sure that when there's no active probe, there's no latency added. But when there's an active probe.. ~100-200ms could be added in the worst case if the probe is just before the return.<p>again, this isnt a problem in non serverless worloads because the CPU is always on.<p>but since probes are bounded by time and count, this will go away as soon as the time or count condition meets. beats adding new logs and redeploying in my opinion</p>
]]></description><pubDate>Wed, 05 Aug 2026 17:54:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49186410</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49186410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49186410</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>this is how redacted data looks like on the extension<p><a href="https://i.postimg.cc/jSmRpnRX/Screenshot-from-2026-08-05-10-21-51.png" rel="nofollow">https://i.postimg.cc/jSmRpnRX/Screenshot-from-2026-08-05-10-...</a></p>
]]></description><pubDate>Wed, 05 Aug 2026 17:26:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49186023</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49186023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49186023</guid></item><item><title><![CDATA[New comment by karanraina in "Launch HN: HyperProbe (YC S26) – Agents that do read-only debugging in prod"]]></title><description><![CDATA[
<p>we do show what data got redacted, we do not show which rule was used to match it yet.<p>all the rules get compiled into a single regex pattern, that lets us save on iterations.</p>
]]></description><pubDate>Wed, 05 Aug 2026 17:23:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49185977</link><dc:creator>karanraina</dc:creator><comments>https://news.ycombinator.com/item?id=49185977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49185977</guid></item></channel></rss>