Üretim artık kimsenin kafasına sığmıyor. Polylane hepsini tutar: bulutlar, kod ve telemetri tek bir canlı grafikte.
Bekleme listesine katılIssue 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
Ajanlar bağlamları kadar iyidir. Polylane seninkini şöyle öğrenir.
-
Bütün bulutun, salt okunur
AWS salt okunur bir rolle, çoğu sağlayıcı bir API tokenıyla. Her kaynak grafiğe katılır ve kendi kendine güncel kalır.
-
Sağlayıcılar arasında bağlantılı
Ana bilgisayar adları, DNS kayıtları ve IP'ler bulutları birbirine bağlar: bir Render servisine işaret eden bir Cloudflare CNAME'i. İki yıl önceki diyagram değil, gerçek istek yolu.
-
Önemli olanlar daha sıkı izlenir
Her kaynak kritikten minimale bir katman alır; katman trafikten ve ona nelerin bağlı olduğundan günlük olarak hesaplanır. İstediğini geçersiz kıl.
-
Not tutar
Her kaynak, sistemin kaydığı ölçüde kendini yeniden yazan bir wiki tutar ve ajanlar not bırakır: temmuz incelemesi haziranınkinden öğrenir.
CLI veya MCP, seçim senin. Kodlama ajanın hangi yolu istersen o yolla bağlanır.
CLI bağlantıyı kurar.
Tek kurulum yığınını bağlar ve Polylane'i makinendeki her kodlama ajanına kaydeder.
MCP sunar.
Bulutların, telemetrin, dağıtımların ve kodun tek bir MCP sunucusunun arkasında. Varsayılan olarak okuma; yazmalar varsayılan olarak reddeden bir politikanın arkasında durur.
Zaten kullandığın araçta. Her ajan aynı grafiği okur.
Code mode. Tek gidiş dönüş, yalnızca yanıt.
Araçları tek tek çağırmak yerine ajanın MCP'nin tools ad alanına karşı TypeScript yazar ve sunucu onu çalıştırır. Ara sonuçlar bağlam penceresine hiç dokunmaz; yalnızca yanıt geri gelir.
// 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