La produzione non sta più nella testa di nessuno. Polylane la tiene tutta: cloud, codice e telemetria in un unico grafo in tempo reale.
Iscriviti alla lista d'attesaIssue hotspot: 4 issues in the last 7 days
Change hotspot: 12 changes in the last 7 days
Change hotspot: 7 changes in the last 7 days
Issue hotspot: 2 issues in the last 7 days
Issue hotspot: 1 issue in the last 7 days
Change hotspot: 3 changes in the last 7 days
Gli agenti valgono quanto il loro contesto. Ecco come Polylane impara il tuo.
-
Tutto il tuo cloud, in sola lettura
AWS tramite un ruolo in sola lettura, la maggior parte dei provider con un token API. Ogni risorsa entra nel grafo, che resta aggiornato da solo.
-
Collegato tra provider
Hostname, record DNS e IP collegano i cloud: un CNAME Cloudflare che punta a un servizio Render. Il percorso reale della richiesta, non il diagramma di due anni fa.
-
Le cose importanti, osservate più da vicino
Ogni risorsa riceve un tier, da critico a minimo, calcolato ogni giorno dal traffico e da cosa dipende da essa. Puoi sovrascrivere tutto.
-
Prende appunti
Ogni risorsa ha un wiki che si riscrive man mano che il tuo sistema cambia, e gli agenti lasciano note: l'indagine di luglio impara da quella di giugno.
CLI o MCP, scegli tu. Il tuo agente di coding si collega nel modo che preferisci.
La CLI lo collega.
Una sola installazione collega il tuo stack e registra Polylane in ogni agente di coding sulla tua macchina.
MCP lo serve.
I tuoi cloud, la telemetria, i deploy e il codice dietro un unico server MCP. Letture per impostazione predefinita; le scritture stanno dietro una policy che nega per default.
Nello strumento che usi già. Ogni agente legge lo stesso grafo.
Code mode. Un solo round trip, solo la risposta.
Invece di chiamare gli strumenti uno alla volta, il tuo agente scrive TypeScript sul namespace tools dell'MCP e il server lo esegue. I risultati intermedi non toccano mai la finestra di contesto; torna indietro solo la risposta.
// Which deploy slowed checkout-edge? const deploys = await tools.deployHistory({ service: "checkout-edge", hours: 24 }); const { points } = await tools.queryMetrics({ service: "checkout-edge", metric: "latency.p99", hours: 24, }); const median = (xs) => xs.sort((a, b) => a - b)[xs.length >> 1] ?? 0; const p99 = (t, side) => median(points.filter((p) => (side < 0 ? p.t < t : p.t > t)).map((p) => p.v)); // Score every deploy by the p99 shift across its timestamp. const [worst] = deploys .map((d) => ({ ...d, shift: p99(d.at, 1) / p99(d.at, -1) })) .sort((a, b) => b.shift - a.shift); // Pull the error logs right after the suspect deploy. const errors = await tools.queryLogs({ service: "checkout-edge", level: "error", after: worst.at, limit: 5, }); // Only this returns; the series and logs stay in the sandbox. return { deploy: worst.sha, // 9f3c2a1 p99Shift: worst.shift, // 4.8 topError: errors[0]?.message, // "Hyperdrive pool exhausted" };
✓ one answer back; twenty round trips saved