Nobody should be on-call.

Polylane finds issues in your app and fixes them for you before they become incidents.

Get started for free

No credit card required.

Detect

Catch the issues nobody wrote a monitor for

Stop waiting for users to report bugs. Polylane watches your logs, metrics and traces across every service, learns what normal looks like, and raises an issue the moment something drifts.

Start detecting
Topology
Search your cloud resources...
Galaxy
checkout-edge Worker
Critical Critical to your architecture.

Issue hotspot: 4 issues in the last 7 days

Change hotspot: 12 changes in the last 7 days

Cloudflare · coreplane · earth · Compute
hd-prod Hyperdrive
Critical Critical to your architecture.

Change hotspot: 7 changes in the last 7 days

Cloudflare · coreplane · earth · Databases
ingest-events Lambda function
Standard Important to your architecture.

Issue hotspot: 2 issues in the last 7 days

AWS · coreplane-prod · us-east-1 · Compute
payments-db Database
Critical Critical to your architecture.

Issue hotspot: 1 issue in the last 7 days

Change hotspot: 3 changes in the last 7 days

PlanetScale · coreplane · us-east · Databases

Troubleshoot

Get the root cause before you open your laptop

Polylane investigates each issue across your code, your deploys and your telemetry, and shows you what broke, why, and the evidence behind it.

Start troubleshooting
Threads Critical latency degradation in checkout-edge worker Share

What I did

I queued an autofix that restores the Hyperdrive pool hd-prod in the coreplane/checkout-edge repo with:

  • max_connections restored from 5 to 50 on the pool binding
  • a regression test that fails when checkout queues on the pool
  • wrangler.jsonc configured to deploy as checkout-edge

This gives Boris a PR with deployable code. Once merged, running wrangler deploy will replace the degraded worker with the fixed version.

The root cause report has been updated with the occurrence #2 evidence: Root Cause: checkout-edge Latency Degradation (Recurring).

Wall Time
checkout-edge worker · last hour
Export chart
Wall Time P99
28,381ms
Wall Time P95
2,696ms
Wall Time P50
118ms
010k20k30k
18:0018:2519:00
Worked for 4m 12s

AI can make mistakes. Please double check cited sources.

Dig deeper...

Fix

Wake up to a fix ready to merge

Polylane writes the fix and opens a pull request. It goes through your normal review and CI, and nobody gets paged.

Start fixing

Restore Hyperdrive pool size in checkout-edge

coreplane/checkout-edge#142 Polylane Critical severity Opened 3 hours ago CI passing
Dismiss Merge
Files changedInvestigation
src/hyperdrive/pool.ts
@@ -14,21 +14,29 @@ export class HyperdrivePool {
14 14 #inFlight = 0;
15 15
16 - constructor(private readonly binding: Hyperdrive) {
17 - this.#ceiling = DEFAULT_CEILING;
16 + constructor(
17 + private readonly binding: Hyperdrive,
18 + private readonly ceiling = poolCeiling(binding),
19 + ) {
20 + if (this.ceiling < MIN_CEILING) {
21 + throw new PoolMisconfigured(this.ceiling, MIN_CEILING);
22 + }
18 23 }
19 24
20 25 async acquire(signal: AbortSignal): Promise<Connection> {
21 - while (this.#inFlight >= this.#ceiling) {
22 - await this.#queue.wait();
26 + if (this.#inFlight >= this.ceiling) {
27 + queueDepth.record(this.#queue.size, { binding: this.binding.id });
28 + if (this.#queue.size > this.ceiling * QUEUE_ALARM_RATIO) {
29 + logger.warn("hyperdrive pool saturated", {
30 + ceiling: this.ceiling,
31 + waiting: this.#queue.size,
32 + });
33 + }
34 + await this.#queue.wait(signal);
23 35 }
24 36 this.#inFlight += 1;
25 37 return this.binding.connect();
26 38 }
@@ -41,9 +53,13 @@ export class HyperdrivePool {
41 53 release(connection: Connection): void {
42 54 this.#inFlight -= 1;
43 - this.#queue.next();
55 + queueDepth.record(this.#queue.size, { binding: this.binding.id });
56 + this.#queue.next();
44 57 }
45 58
46 - get saturated(): boolean {
47 - return this.#inFlight >= this.#ceiling;
59 + get saturated(): boolean {
60 + return this.#inFlight >= this.ceiling;
48 61 }
49 62 }
@@ -58,14 +71,18 @@ function poolCeiling(binding: Hyperdrive) {
58 - const configured = binding.maxConnections;
59 - if (!configured) return DEFAULT_CEILING;
60 - return configured;
71 + const configured = binding.maxConnections ?? DEFAULT_CEILING;
72 + // The binding's ceiling is the contract: a worker that opens more
73 + // connections than the pool allows queues here instead of at the origin,
74 + // which is invisible in origin latency. Fail loudly at boot instead.
75 + return Math.max(configured, MIN_CEILING);
61 76 }
62 77
63 - export const DEFAULT_CEILING = 5;
64 - export const QUEUE_ALARM_RATIO = 4;
78 + export const DEFAULT_CEILING = 50;
79 + export const MIN_CEILING = 25;
80 + export const QUEUE_ALARM_RATIO = 0.5;
65 81
66 - const queueDepth = noopCounter();
67 - const logger = console;
82 + const queueDepth = meter.createHistogram("hyperdrive.queue_depth");
68 83
Ask about this pull request

Built for your agents. Everything Polylane knows about production, one tool call away.

Claude Code · checkout-edge

> why is checkout returning 502s since this morning?

polylane · searchcheckout errors, recent deploys

polylane · runToolqueryLogs · checkout-edge 5xx, last 6h

polylane · searchcheckout-edge deploys and config changes

The 502s started at 09:14, two minutes after deploy 9f3c2a1 cut the hd-prod Hyperdrive pool from 50 connections to 5. Requests queue for a connection and time out at the edge.

Fix: put max_connections back to 50 in wrangler.jsonc. Want me to make the change?

Critical latency degradation in checkout-edge worker · issue already open in Polylane

# engineering
Messages Add canvas Files & links
boris 2:09 AM

checkout feels slow. is that us or payments-api?

Polylane Agent 2:09 AM

Us. checkout-edge Wall Time P99 is 18× its own baseline and the requests are queuing for a Hyperdrive connection, not on a downstream call. payments-api is answering in 180ms, flat for a week. Deploy 9f3c2a1 at 2:02 AM shrank the hd-prod pool from 50 connections to 5.

👀 2
aleksandr 2:11 AM

how long has it been queueing like that?

Polylane Agent 2:11 AM

Nine minutes, since the deploy landed. It never went above 2 before that. I submitted a PR fix and tagged @justin to deploy 2 minutes ago.

hd-prod · pool queue depth · last 30m deploy 9f3c2a1
02040
-30m -15m now
every request in that queue is a checkout waiting

Open in Polylane Configure

GET /v1/issues/ws_7f3k?severity=critical 200 OK

Host: api.polylane.com · x-api-key: sk_…

{
  "data": [
    {
      "id": "iss_4k2m9q",
      "title": "Critical latency degradation in checkout-edge worker",
      "severity": "critical",
      "status": "confirmed",
      "resourceKind": "infra_node",
      "resourceId": "checkout-edge",
      "summary": "Deploy 9f3c2a1 cut max_connections on hd-prod from 50 to 5."
    }
  ]
}

Hear it from the teams on Polylane

Polylane runs production for fast-moving software teams. Hear from some of them.

...and loved by developers

Get started for free
chronark @chronark just 2 hours after signing up for @polylane it prevented a potential problem in production. I changed the request body schema for an API endpoint and if I would've just merged it, one of our dashboard pages would've crashed until the API was fully deployed too. Pretty simple mistake, but I forgot this time. polylane didn't Jason @Jasonpraful When I installed polylane for the first time my expectations were pretty low. Couple weeks in I’m speechless - it just works everything is all of a sudden fully autonomous Kyle Galbraith @kylegalbraith fuuuuck @boristane and team cooked with polylane. already merged a pr. Dhravya Shah @DhravyaShah there was something wrong with our docs deployment, and Polylane automatically found and notified us about it... insane stuff @boristane Ben Anthony @benjamin_ACD a few days into using @polylane and I have merged like 40 something worthwhile PRs, seems my agents think the PRs are much higher utility than what detail was giving me Brenton West @west_brent34411 @boristane - It is launch week for me and as I was testing Prod, started to notice things were not flowing like they did in Dev. Following @polylane for months & knowing I would try it when the time was right, I gave it a go. Issue Instantly ID. I was NOT disappointed. 🧑‍🍳💋 lucas @0xperp We started paying for polylane mostly bc of the handoff into our cursor account Ben @nurodev So far @polylane is very cool! Even more that it's finding issues, creating fixes and then working with @pullfrogai in PR's to improve it even more. Tito @mynameistito Wait... so you're telling me I don't even need to make PR's to fix up stuff and @polylane will just do it for me???? luna @ImLunaHey if you haven’t tried out @polylane at work i’d highly suggest it. tushar @gpu004 i really love polylane, such an awesome solution @boristane @polylane Sadok @yesadok polylane is so clean Xiaofeng Xie @XiaofengXie16 polylane is truly amazing Utpal Nadiger @utpalnadiger bullish on polylane

No migration. No new SDKs. Polylane plugs into what you already run.

Trust is non-negotiable.

SOC 2 Type II

Independently audited security controls.

ISO 27001:2022

The international standard for information security management.

End-to-end encryption

AES-256 at rest, TLS 1.2+ in transit.

Data isolation

Fully isolated per organization.

View trust center

Common questions.

What is Polylane?

Polylane makes your software self-operating. AI agents learn everything you run, fix what they can, review every code change against the production it deploys to, answer the questions on-call gets, and give your coding agent the same production context.

How does Polylane detect issues?

Agents read your metrics, logs and traces on a cadence and judge them against how each resource normally behaves. Anything your team already charts becomes a check.

What does Polylane work with?

Every integration, and what Polylane does with each, is listed at polylane.com/integrations.

When can I use Polylane?

Now. One command installs the CLI, connects your coding agents, and creates your account: run curl -fsSL https://polylane.com/setup | bash on macOS or Linux.

Can AI agents use Polylane?

Yes. There is a REST API at api.polylane.com and an MCP server at mcp.polylane.com/mcp, and this site is machine-readable at polylane.com/llms.txt.