La production ne tient plus dans la tête de personne. Polylane la contient en entier : clouds, code et télémétrie dans un seul graphe en direct.
Rejoindre la liste d'attenteIssue 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
Les agents valent ce que vaut leur contexte. Voici comment Polylane apprend le tien.
-
Tout ton cloud, en lecture seule
AWS via un rôle en lecture seule, la plupart des fournisseurs avec un token d'API. Chaque ressource rejoint le graphe, qui reste à jour tout seul.
-
Relié entre fournisseurs
Noms d'hôtes, enregistrements DNS et IP relient les clouds : un CNAME Cloudflare qui pointe vers un service Render. Le vrai chemin des requêtes, pas le schéma d'il y a deux ans.
-
Ce qui compte, surveillé de plus près
Chaque ressource reçoit un niveau, de critique à minimal, calculé chaque jour à partir du trafic et de ce qui en dépend. Tu peux tout surcharger.
-
Il prend des notes
Chaque ressource garde un wiki qui se réécrit à mesure que ton système dérive, et les agents laissent des notes : l'enquête de juillet apprend de celle de juin.
CLI ou MCP, à toi de choisir. Ton agent de codage se connecte comme tu le veux.
La CLI fait le câblage.
Une seule installation connecte ta stack et enregistre Polylane dans chaque agent de codage de ta machine.
MCP le sert.
Tes clouds, ta télémétrie, tes deploys et ton code derrière un seul serveur MCP. Lecture par défaut ; les écritures passent par une politique de refus par défaut.
Dans l'outil que tu utilises déjà. Chaque agent lit le même graphe.
Code mode. Un seul aller-retour, juste la réponse.
Au lieu d'appeler les outils un par un, ton agent écrit du TypeScript contre l'espace de noms tools du MCP et le serveur l'exécute. Les résultats intermédiaires ne touchent jamais la fenêtre de contexte ; seule la réponse revient.
// 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