diff --git a/blog/src/_data/media.json b/blog/src/_data/media.json index 1f77259780..134cfab35e 100644 --- a/blog/src/_data/media.json +++ b/blog/src/_data/media.json @@ -4815,6 +4815,29 @@ }, "inline": {} }, + "agent-tools-today-2026-10-29": { + "title": "Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals", + "category": "news", + "hero": { + "file": "assets/media/agent-tools-today/hero.png", + "alt": "Hand drawn sketch: a front page with five numbered lines, a clock, and a yellow character reading it out", + "prompt": "Series hero for the Agent Tools Today daily brief, drawn in code (media-src/topic-tiles.html?t=news). Reused by every brief.", + "status": "ready" + }, + "inline": {}, + "youtube": [] + }, + "gemini-4-carbon": { + "title": "Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026)", + "category": "concepts", + "hero": { + "file": "assets/media/gemini-4-carbon/hero.png", + "alt": "Title card on white. Gemini 4 Carbon in large ink type, a Concepts pill, the line Early access, Argon's price, Checked 29 Oct 2026, and two blocks labelled Argon and Carbon on a two step podium", + "prompt": "Still of the hero scene in assets/media/gemini-4-carbon/motion.js.", + "status": "ready" + }, + "inline": {} + }, "gemini-4-argon": { "title": "Gemini 4 Argon: Google's Flagship Model Shares a Name With a Gas That Barely Reacts", "category": "concepts", diff --git a/blog/src/assets/media/agent-tools-today-2026-10-29/motion.css b/blog/src/assets/media/agent-tools-today-2026-10-29/motion.css new file mode 100644 index 0000000000..268927dd39 --- /dev/null +++ b/blog/src/assets/media/agent-tools-today-2026-10-29/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Agent Tools Today, 29 Oct 2026". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/blog/src/assets/media/agent-tools-today-2026-10-29/motion.js b/blog/src/assets/media/agent-tools-today-2026-10-29/motion.js new file mode 100644 index 0000000000..37049aa4ef --- /dev/null +++ b/blog/src/assets/media/agent-tools-today-2026-10-29/motion.js @@ -0,0 +1,119 @@ +/* Bright coded scenes for "Agent Tools Today, 29 Oct 2026". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + + const SC = {}; + + /* ---- today: three cards pinned to a cork board, one at a time ---- */ + SC.today = { + dur: 7, still: 7, + build(svg, api) { + el("rect", { x: 28, y: 28, width: 744, height: 544, rx: 28, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: 52, y: 52, width: 696, height: 496, rx: 16, fill: YEL, stroke: INK, "stroke-width": 2.5 }, svg); + let seed = 11; const rnd = () => (seed = (seed * 9301 + 49297) % 233280) / 233280; + for (let i = 0; i < 120; i++) el("circle", { cx: 68 + rnd() * 664, cy: 68 + rnd() * 464, r: 1.4 + rnd() * 1.8, fill: "#fff" }, svg); + const CARDS = [ + ["Gemini 4", "Carbon", "Early access", SKY, BLUE, -3], + ["Copilot", "connectors", "26 services", LIL, MINT, 2], + ["OpenCode", "2.2.1", "Goal mode", MINT, LIL, -2], + ]; + const X = [186, 400, 614], Y = 306, A = (i) => 0.5 + i * 1.15; + let touched = false; + const cards = CARDS.map(([a, b, tag, chip, pc, r0], i) => { + const slot = el("g", { opacity: 0, transform: `translate(${X[i]} ${Y}) rotate(${r0})` }, svg); + el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: "none", stroke: INK, "stroke-width": 2, "stroke-dasharray": "6 8" }, slot); + el("circle", { cx: 0, cy: -92, r: 3, fill: INK }, slot); + const g = el("g", {}, svg); + const sh = el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: LIL, stroke: INK, "stroke-width": 3 }, g); + el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: "#fff", stroke: INK, "stroke-width": 3 }, g); + el("rect", { x: -108, y: -128, width: 216, height: 256, rx: 20, fill: "none", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "4 6", class: "mg-ring" }, g); + txt(g, 0, -12, a, { "text-anchor": "middle", "font-family": MONO, "font-size": 25, "font-weight": 700 }); + txt(g, 0, 22, b, { "text-anchor": "middle", "font-family": MONO, "font-size": 25, "font-weight": 700 }); + el("rect", { x: -76, y: 54, width: 152, height: 40, rx: 20, fill: chip, stroke: INK, "stroke-width": 2.5 }, g); + txt(g, 0, 81, tag, { "text-anchor": "middle", "font-size": 19, "font-weight": 600 }); + const pin = el("g", {}, g); + const needle = el("path", { d: "M0 4 V28", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, pin); + el("circle", { r: 14, fill: pc, stroke: INK, "stroke-width": 3 }, pin); + el("circle", { cx: -4, cy: -4, r: 4, fill: "#fff" }, pin); + const st = { up: false, at: -99, from: 0, k: 0 }; + button(g, `${a} ${b}, ${tag}`, () => { + st.from = st.k; st.up = !st.up; st.at = api.now(); touched = true; + g.setAttribute("aria-pressed", String(st.up)); + if (st.up) svg.appendChild(g); + if (api.calm) api.redraw(); else api.poke(); + }); + g.setAttribute("aria-pressed", "false"); + return { slot, g, sh, pin, needle, st, r0, x: X[i] }; + }); + return (t, now) => { + if (touched) t = SC.today.dur; + cards.forEach((c, i) => { + const a0 = A(i), d = oc(seg(t, a0, a0 + 0.45)), p = seg(t, a0 + 0.4, a0 + 0.8); + c.g.setAttribute("visibility", t >= a0 ? "visible" : "hidden"); + const s = c.st, u = api.calm ? 1 : seg(now - s.at, 0, 0.4); + s.k = s.up ? s.from + (1 - s.from) * oc(u) : s.from * (1 - ob(u)); + const k = s.k, kk = cl(k), bump = Math.sin(seg(t, a0 + 0.72, a0 + 0.95) * Math.PI) * 0.02; + tf(c.g, c.x, Y - 50 * (1 - d) - 30 * k, 1 + 0.05 * (1 - d) + 0.04 * k - bump, c.r0 * (1 - kk)); + c.sh.setAttribute("transform", `translate(${6 * kk} ${10 * kk})`); + c.slot.setAttribute("opacity", kk > 0.35 ? 1 : 0); + const fall = 1 - ob(p); + c.pin.setAttribute("transform", `translate(0 ${-92 - 56 * fall - 64 * kk}) rotate(${22 * kk})`); + c.pin.setAttribute("opacity", p > 0 ? 1 : 0); + c.needle.setAttribute("opacity", kk > 0.05 || p < 1 ? 1 : 0); + }); + }; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + const api = { + now: clock, calm: calm || frozen, + seek: (s) => { off = s - clock(); held = false; tick(); }, + poke: () => { held = false; tick(); }, + redraw: () => { if (frozen) draw(isNaN(fixed) ? sc.still : fixed, clock()); else tick(); }, + }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/blog/src/assets/media/agent-tools-today-2026-10-29/today.png b/blog/src/assets/media/agent-tools-today-2026-10-29/today.png new file mode 100644 index 0000000000..59e75fa5ed Binary files /dev/null and b/blog/src/assets/media/agent-tools-today-2026-10-29/today.png differ diff --git a/blog/src/assets/media/gemini-4-carbon/hero.png b/blog/src/assets/media/gemini-4-carbon/hero.png new file mode 100644 index 0000000000..19e0ab7cb3 Binary files /dev/null and b/blog/src/assets/media/gemini-4-carbon/hero.png differ diff --git a/blog/src/assets/media/gemini-4-carbon/motion.css b/blog/src/assets/media/gemini-4-carbon/motion.css new file mode 100644 index 0000000000..117928abec --- /dev/null +++ b/blog/src/assets/media/gemini-4-carbon/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Gemini 4 Carbon". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/blog/src/assets/media/gemini-4-carbon/motion.js b/blog/src/assets/media/gemini-4-carbon/motion.js new file mode 100644 index 0000000000..a63fd8babc --- /dev/null +++ b/blog/src/assets/media/gemini-4-carbon/motion.js @@ -0,0 +1,218 @@ +/* Bright coded scenes for "Gemini 4 Carbon". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9", MUTE = "#7A6A88"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const io = (x) => (x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2); + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + // a transparent hit area plus a dashed focus ring, both the same box + const hitbox = (g, x, y, w, h, r = 20) => { + el("rect", { x, y, width: w, height: h, rx: r, fill: "#fff", "fill-opacity": 0 }, g); + el("rect", { x, y, width: w, height: h, rx: r, fill: "none", stroke: INK, "stroke-width": 2, "stroke-dasharray": "4 7", class: "mg-ring" }, g); + }; + const chip = (p, label, fill, w) => { + const g = el("g", {}, p); + el("rect", { x: -w / 2, y: -21, width: w, height: 42, rx: 21, fill, stroke: INK, "stroke-width": 2.5 }, g); + txt(g, 0, 8, label, { "text-anchor": "middle", "font-size": 22, "font-weight": 700 }); + return g; + }; + + const SC = {}; + + /* ---- 1. two blocks drop onto a two step podium ---- */ + SC.podium = { + dur: 8, still: 5, + build(svg, api) { + const stage = el("g", {}, svg); + el("path", { d: "M80 500 H720", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, stage); + el("rect", { x: 130, y: 380, width: 260, height: 120, fill: SOFT, stroke: INK, "stroke-width": 3 }, stage); + el("rect", { x: 390, y: 260, width: 260, height: 240, fill: SOFT, stroke: INK, "stroke-width": 3 }, stage); + const blocks = [ + { x: 160, top: 270, fill: SKY, name: "Argon", tag: "Open now", tagFill: MINT, tagW: 150, fall: 0.6 }, + { x: 420, top: 150, fill: LIL, name: "Carbon", tag: "Early access", tagFill: YEL, tagW: 190, fall: 2.2 }, + ].map((b) => { + const g = el("g", {}, stage); + el("rect", { x: b.x, y: b.top, width: 200, height: 110, rx: 14, fill: b.fill, stroke: INK, "stroke-width": 3 }, g); + txt(g, b.x + 100, b.top + 67, b.name, { "text-anchor": "middle", "font-family": MONO, "font-size": 34, "font-weight": 700 }); + const tag = chip(stage, b.tag, b.tagFill, b.tagW); + return Object.assign(b, { g, tag }); + }); + const hit = el("g", {}, svg); + hitbox(hit, 70, 70, 660, 450); + button(hit, "Replay the blocks dropping onto the podium", () => api.seek(0)); + return (t) => { + const out = 1 - seg(t, 7.4, 8); + blocks.forEach((b) => { + const k = seg(t, b.fall, b.fall + 0.6), land = Math.sin(Math.PI * seg(t, b.fall + 0.6, b.fall + 0.9)); + const dy = -(b.top + 140) * (1 - k * k), cx = b.x + 100, by = b.top + 110; + b.g.setAttribute("transform", `translate(0 ${dy}) translate(${cx} ${by}) scale(${1 + 0.08 * land} ${1 - 0.12 * land}) translate(${-cx} ${-by})`); + b.g.setAttribute("opacity", t < b.fall ? 0 : out); + const p = seg(t, b.fall + 0.9, b.fall + 1.3); + tf(b.tag, cx, b.top - 44, 0.4 + 0.6 * ob(p)); + b.tag.setAttribute("opacity", p <= 0 ? 0 : Math.min(cl(p * 3), out)); + }); + }; + }, + }; + + /* ---- 2. three ticket stubs tear off in rollout order ---- */ + SC.ticket = { + dur: 8, still: 5.5, + build(svg, api) { + el("rect", { x: 40, y: 112, width: 720, height: 40, rx: 12, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const stubs = [ + { lines: ["Cyber", "defenders"], fill: YEL, tick: true }, + { lines: ["Trusted", "partners"], fill: SKY }, + { lines: ["Developers"], fill: LIL }, + ].map((s, i) => { + const x = 65 + i * 240, g = el("g", {}, svg); + el("path", { d: `M${x + 30} 156 V164 M${x + 160} 156 V164`, stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + const card = el("g", {}, g); + el("path", { d: "M0 0 H190 V136 A16 16 0 0 0 190 168 V290 H0 V168 A16 16 0 0 0 0 136 Z", fill: s.fill, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, card); + el("path", { d: "M14 14 H176", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "6 7", "stroke-linecap": "round" }, card); + el("path", { d: "M18 152 H172", stroke: INK, "stroke-width": 2, "stroke-dasharray": "2 9", "stroke-linecap": "round" }, card); + s.lines.forEach((l, j) => txt(card, 95, (s.lines.length === 1 ? 92 : 74) + j * 36, l, { "text-anchor": "middle", "font-size": 28, "font-weight": 700 })); + const stamp = el("g", {}, card); + if (s.tick) { + el("circle", { r: 44, fill: MINT, stroke: INK, "stroke-width": 3 }, stamp); + el("path", { d: "M-20 2 L-6 16 L20 -14", stroke: INK, "stroke-width": 7, fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }, stamp); + } else { + el("rect", { x: -64, y: -26, width: 128, height: 52, rx: 14, fill: "#fff", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "6 5" }, stamp); + txt(stamp, 0, 9, "Later", { "text-anchor": "middle", "font-size": 26, "font-weight": 700 }); + } + hitbox(g, x - 14, 160, 218, 400); + const st = { x, card, stamp, at: 0.8 + i * 1.2, ov: null, k: 0, rot: i === 1 ? 2 : i === 0 ? -3 : 4 }; + button(g, `${s.lines.join(" ")}: tear off or put back`, () => { + const now = api.now(); st.ov = { from: st.k, to: st.k < 0.5 ? 1 : 0, at: now }; api.poke(); + }); + return st; + }); + return (t, now) => { + stubs.forEach((s) => { + let k; + if (s.ov) k = s.ov.from + (s.ov.to - s.ov.from) * (api.calm ? 1 : oc(seg(now - s.ov.at, 0, 0.55))); + else k = oc(seg(t, s.at, s.at + 0.7)) * (1 - io(seg(t, 7.3, 7.9))); + s.k = k; + s.card.setAttribute("transform", `translate(${s.x} ${166 + 70 * k}) rotate(${s.rot * k} 95 0)`); + const p = seg(k, 0.55, 1); + tf(s.stamp, 95, 222, p <= 0 ? 0.001 : 0.3 + 0.7 * ob(p), -8); + s.stamp.setAttribute("opacity", cl(p * 3)); + }); + }; + }, + }; + + /* ---- 3. a balance scale tips as two weights land ---- */ + SC.scale = { + dur: 8, still: 5.5, + build(svg, api) { + const P = [400, 120], HALF = 210, HANG = 190; + const g = el("g", {}, svg); + el("path", { d: "M394 120 H406 V440 H394 Z", fill: SOFT, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + el("path", { d: "M330 470 L350 440 H450 L470 470 Z", fill: BLUE, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + const beam = el("g", {}, g); + el("rect", { x: -HALF - 6, y: -7, width: 2 * HALF + 12, height: 14, rx: 7, fill: BLUE, stroke: INK, "stroke-width": 3 }, beam); + const pans = [ + { name: "Argon", pct: "0.7%", fill: SKY, side: -1, land: 1.1 }, + { name: "Carbon", pct: "0.0%", fill: LIL, side: 1, land: 2.5 }, + ].map((w) => { + const pan = el("g", {}, g); + el("path", { d: `M0 ${-HANG} L-110 0 M0 ${-HANG} L110 0`, stroke: INK, "stroke-width": 2.5, "stroke-linecap": "round" }, pan); + el("circle", { cx: 0, cy: -HANG, r: 6, fill: YEL, stroke: INK, "stroke-width": 2.5 }, pan); + const wt = el("g", {}, pan); + el("path", { d: "M-14 -96 A14 14 0 0 1 14 -96", fill: "none", stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, wt); + el("path", { d: "M-45 -96 H45 L65 -8 Q66 0 58 0 H-58 Q-66 0 -65 -8 Z", fill: w.fill, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, wt); + txt(wt, 0, -60, w.name, { "text-anchor": "middle", "font-family": MONO, "font-size": 20, "font-weight": 700 }); + txt(wt, 0, -20, w.pct, { "text-anchor": "middle", "font-size": 30, "font-weight": 700 }); + el("path", { d: "M-110 0 Q0 34 110 0 Z", fill: SOFT, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, pan); + return Object.assign(w, { pan, wt }); + }); + el("circle", { cx: P[0], cy: P[1], r: 14, fill: YEL, stroke: INK, "stroke-width": 3 }, g); + const card = el("g", {}, svg); + el("rect", { x: 230, y: 500, width: 340, height: 60, rx: 16, fill: YEL, stroke: INK, "stroke-width": 3 }, card); + txt(card, 400, 539, "Prompt injection", { "text-anchor": "middle", "font-size": 26, "font-weight": 700 }); + hitbox(g, 60, 24, 680, 462); + button(g, "Drop the weights onto the scale again", () => api.seek(0)); + const sp = (x) => (x <= 0 ? 0 : 1 - Math.exp(-3.5 * x) * Math.cos(8 * x)); + return (t) => { + const out = io(seg(t, 7.3, 7.9)); + const a = (-13 * sp(t - pans[0].land) + 3 * sp(t - pans[1].land)) * (1 - out), r = (a * Math.PI) / 180; + beam.setAttribute("transform", `translate(${P[0]} ${P[1]}) rotate(${a})`); + pans.forEach((w) => { + const ex = P[0] + w.side * HALF * Math.cos(r), ey = P[1] + w.side * HALF * Math.sin(r); + w.pan.setAttribute("transform", `translate(${ex} ${ey + HANG})`); + const k = seg(t, w.land - 0.5, w.land); + w.wt.setAttribute("transform", `translate(0 ${-420 * (1 - k * k) - 40 * out})`); + w.wt.setAttribute("opacity", t < w.land - 0.5 ? 0 : 1 - out); + }); + }; + }, + }; + + /* ---- title card, 16 by 9 ---- */ + SC.hero = { + w: 960, h: 540, dur: 1, still: 0, + build(svg) { + el("rect", { x: 64, y: 64, width: 150, height: 44, rx: 22, fill: YEL, stroke: INK, "stroke-width": 2.5 }, svg); + txt(svg, 139, 93, "Concepts", { "text-anchor": "middle", "font-size": 21, "font-weight": 700 }); + txt(svg, 64, 214, "Gemini 4", { "font-size": 88, "font-weight": 700 }); + txt(svg, 64, 306, "Carbon", { "font-size": 88, "font-weight": 700 }); + el("path", { d: "M66 334 H330", stroke: LIL, "stroke-width": 14, "stroke-linecap": "round" }, svg); + txt(svg, 64, 392, "Early access, Argon's price", { "font-size": 30, "font-weight": 500, fill: MUTE }); + txt(svg, 64, 452, "Checked 29 Oct 2026", { "font-size": 20, "font-weight": 500, fill: MUTE }); + el("path", { d: "M540 470 H910", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + el("rect", { x: 560, y: 380, width: 160, height: 90, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: 720, y: 270, width: 160, height: 200, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + [[575, 300, SKY, "Argon"], [735, 190, LIL, "Carbon"]].forEach(([x, y, f, n]) => { + el("rect", { x, y, width: 130, height: 80, rx: 12, fill: f, stroke: INK, "stroke-width": 3 }, svg); + txt(svg, x + 65, y + 50, n, { "text-anchor": "middle", "font-family": MONO, "font-size": 26, "font-weight": 700 }); + }); + return () => {}; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, started = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + // reduced motion: replays keep the still frame, toggles snap instead of easing + const api = { calm, now: clock, seek: (s) => { off = s - clock(); if (!calm) held = false; tick(); }, poke: () => { if (calm) { frame(); setTimeout(frame, 0); return; } held = false; tick(); } }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { if (!started) { started = true; off = -clock(); } tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/blog/src/assets/media/gemini-4-carbon/podium.png b/blog/src/assets/media/gemini-4-carbon/podium.png new file mode 100644 index 0000000000..55e6a9f6d3 Binary files /dev/null and b/blog/src/assets/media/gemini-4-carbon/podium.png differ diff --git a/blog/src/assets/media/gemini-4-carbon/scale.png b/blog/src/assets/media/gemini-4-carbon/scale.png new file mode 100644 index 0000000000..6780395aa2 Binary files /dev/null and b/blog/src/assets/media/gemini-4-carbon/scale.png differ diff --git a/blog/src/assets/media/gemini-4-carbon/ticket.png b/blog/src/assets/media/gemini-4-carbon/ticket.png new file mode 100644 index 0000000000..dd17d1cee9 Binary files /dev/null and b/blog/src/assets/media/gemini-4-carbon/ticket.png differ diff --git a/blog/src/posts/agent-tools-today-2026-10-29.md b/blog/src/posts/agent-tools-today-2026-10-29.md new file mode 100644 index 0000000000..5751db483d --- /dev/null +++ b/blog/src/posts/agent-tools-today-2026-10-29.md @@ -0,0 +1,57 @@ +--- +title: "Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals" +seoTitle: "Agent Tools Today (29 Oct 2026): Launches, Skills, MCP Servers" +description: "The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date." +date: 2026-10-29 +category: news +categoryLabel: News +type: Non-technical +series: agent-tools-today +primaryKeyword: "agent tools today 29 oct 2026" +secondaryKeywords: ["gemini 4 carbon", "copilot connectors", "copilot automations", "opencode 2.2.1", "impeccable design skill", "goose 1.57.0"] +tags: ["Daily Brief", "Claude Code", "Skills", "Open Source"] +--- + +Agent tools today, 29 Oct 2026, in one line: Google announced Gemini 4 Carbon for a first group of cyber defenders, GitHub put verified MCP servers into Copilot, and OpenCode 2.2.1 added a `/goal` command that keeps a session going until a reviewer agrees. It covers 28 to 29 Oct, checked 29 Oct. An earlier edition is [26 Oct](/blog/agent-tools-today-2026-10-26/). + +[Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It is not ranked in the lists below. + +
Animation. On a white background, three cards are pinned to a cork board one at a time. The first reads Gemini 4 Carbon with a tag Early access, the second Copilot connectors with a tag 26 services, and the third OpenCode 2.2.1 with a tag Goal mode. Tapping a card lifts it off the board or pins it back.
The day's three lead items, from Google's launch post, GitHub's changelog and OpenCode's release notes, read 29 Oct 2026.
+ +## Top 3 launches + +1. **Gemini 4 Carbon.** Google announced it on 28 Oct as "our strongest model with state-of-the-art cybersecurity and long horizon capabilities". It goes first to a subset of cyber defenders, then to trusted partners through the Fairwind Program, and to developers later. Google's post of 28 Oct 2026 gives an introductory price of $2 input and $10 output per million tokens. More than 860 points on Hacker News on 29 Oct. Details in [Gemini 4 Carbon](/blog/gemini-4-carbon/). [Source](https://blog.google/innovation-and-ai/models-and-research/gemini-models/introducing-gemini-4-carbon/) +2. **Copilot connectors.** On 28 Oct GitHub started rolling out GitHub verified MCP servers, which it calls connectors, in public preview on all Copilot plans. You sign in to a service once and it works across the Copilot app, Copilot CLI, VS Code, Copilot in the cloud and GitHub Mobile. 26 services at launch, among them Slack, Figma, Notion, Sentry and Linear. Business and Enterprise need an admin to switch on a preview policy. [Source](https://github.blog/changelog/2026-10-28-connect-your-tools-to-copilot-without-all-the-setup) +3. **Shared Copilot Automations.** Also on 28 Oct, automations that combine prompts, triggers and tools can now belong to a repository instead of one person. Everyone with read access sees them, AI credits bill to the repository owner, and actions show as Copilot. Rolling out on Copilot Pro, Pro+, Max, Business and Enterprise. The same day, Agent Merge came to pull requests on GitHub, fixing failing workflows and merge conflicts in the cloud on paid plans ([Agent Merge](https://github.blog/changelog/2026-10-28-agent-merge-watches-and-fixes-pull-requests-in-the-cloud)). [Source](https://github.blog/changelog/2026-10-28-build-shared-workflows-for-your-team-with-copilot-automations) + +## Top 3 skills, MCP servers and plugins + +1. **Impeccable.** A design skill whose README calls it "The design vocabulary for your coding agent", with commands such as `polish`, `bolder`, `critique` and `audit`. It lists Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, OpenCode and more. Apache 2.0, more than 93,000 stars, and 1,472 stars in a day on GitHub trending on 29 Oct. [Source](https://github.com/pbakaus/impeccable) +2. **Superpowers.** A software development method for coding agents built from composable skills, with install steps for Claude Code, Antigravity, the Codex app and CLI, Cursor, Devin CLI and others. MIT, more than 307,000 stars, and 1,095 stars in a day on GitHub trending on 29 Oct. [Source](https://github.com/obra/superpowers) +3. **Expo skills.** Official skills from the Expo team for building, deploying, upgrading and debugging Expo apps. Claude Code and Codex install it as a plugin; Cursor, OpenCode, Copilot, Gemini, Cline and others use the skills CLI. MIT, more than 3,600 stars, on GitHub trending on 29 Oct. [Source](https://github.com/expo/skills) + +## Top 3 moves from multi agent tools + +1. **OpenCode 2.2.1.** Published 29 Oct. `/goal ` lets a session keep working until a reviewer confirms the goal is met, with pause and resume. Opt in scheduled prompts arrive through `/schedule`, and an experimental `image_generate` tool lets agents make or edit images. It drops the fal, Black Forest Labs, Replicate and Stability providers from the `@opencode/ai` package, a breaking change for code that imports them. See [OpenCode alternatives](/blog/opencode-alternatives/). [Source](https://github.com/anomalyco/opencode/releases/tag/v2.2.1) +2. **Goose 1.57.0.** Published 28 Oct. Its allowlist now requires HTTPS and validates redirects, callers can supply their own session IDs, scheduled runs use recipe settings, and Claude models are asked for summarized thinking. [Source](https://github.com/aaif-goose/goose/releases/tag/v1.57.0) +3. **Qwen Code 0.26.3.** Published 28 Oct. A persistent Workflow mode can be switched on from the CLI, the SDK or ACP, generated UI cards appear only for clients that can render MCP Apps, and tool results shrink to fit before auto compaction. [Source](https://github.com/QwenLM/qwen-code/releases/tag/v0.26.3) + +## Top 3 rising repos + +1. **Macro.** A workspace that puts email, messages, docs, tasks, agents and a CRM in one interface with shared team memory, built in SolidJS and Rust. AGPL 3.0, more than 5,500 stars, on GitHub trending on 29 Oct. [Source](https://github.com/macro-inc/macro) +2. **BAMA.** "Build Any Mac App": 21 agent skills that take a native macOS app in Swift and SwiftUI from idea to the Dock, as a Claude Code or Codex plugin. MIT, created 24 Oct, more than 620 stars on 29 Oct. [Source](https://github.com/daveebbelaar/bama) +3. **vvv.** Editable Remotion video templates that a coding agent picks, fills and renders from one sentence, installed as a Claude Code plugin, through the skills CLI or as an MCP server. MIT, created 22 Oct, more than 430 stars on 29 Oct. [Source](https://github.com/actionow-ai/vvv) + +Stars can rise for reasons other than use: names to watch, not picks. + +## Top 3 things people are arguing about + +1. **Is Claude Code's status line worth its tokens?** A gist Flamerix AI published on 26 Oct says background agents send their whole transcript to the model about every 30 seconds to write a 3 to 5 word status, and that in its own measurement this was 16.4% of Claude Code's estimated spend. It offers a preload script to turn it off. An open issue on the Claude Code repo, filed 15 Aug, asks for a supported switch. More than 180 points on Hacker News on 29 Oct. [Source](https://gist.github.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce) +2. **Can agents do a tax professional's job?** Surge AI's DAYJOB: Tax benchmark, published 27 Oct, gives agents 50 assignments across 1,789 files and passes an attempt only when it meets 95% of the criteria. Claude Sonnet 5.5 leads at a 10.8% pass rate, then Claude Fable 5.1 at 9.6% and Claude Opus 5.5 at 9.2%. More than 220 points on Hacker News on 29 Oct. [Source](https://surgehq.ai/blog/dayjob-tax) +3. **What do you still need to know when agents write the code?** In a post of 27 Oct, an engineer describes CI failing on a file Codex had kept working on happily, with whole components on single lines, and asks how much a person must still understand of code they did not write. More than 190 points and 100 comments on Hacker News on 29 Oct. [Source](https://blog.adrq.dev/here-be-monsters-what-do-you-still-need-to-know-when-agents-do-the-work) + +## How this list is built + +For this edition, covering 28 to 29 Oct, we read the GitHub releases of 21 tracked tools, vendor blogs and changelogs, GitHub trending, and the Hacker News front page. We did not read X or Reddit for it. A name only makes a list with a link that was opened and a signal that can be shown: points, stars or a dated release. Repos are checked against the GitHub API before they appear. New here? Start with the [install guide](/blog/how-to-install-and-use-munder-difflin/). + + diff --git a/blog/src/posts/gemini-4-argon.md b/blog/src/posts/gemini-4-argon.md index e5ffb56995..c6c069c193 100644 --- a/blog/src/posts/gemini-4-argon.md +++ b/blog/src/posts/gemini-4-argon.md @@ -24,11 +24,13 @@ faq: Our view: Gemini 4 Argon is worth a test on your longest agent jobs, but the launch price is a countdown. Google put Gemini 4 Argon on general release on 13 October 2026 at $2 input and $10 output per 1M tokens through 30 November 2026. Checked 13 Oct 2026. -New models drive coding agents. [Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. Gemini 4 Argon is already in the app's model pickers for Antigravity and Cursor, added by a [pull request](https://github.com/HarnessMD/munder-difflin/pull/738) merged on 13 Oct 2026. The [install guide](/blog/how-to-install-and-use-munder-difflin/) covers setup, and the [Concepts hub](/blog/topics/concepts/) explains the terms. +New models end up inside the agents you run. [Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It runs engines such as Claude Code, Codex and Gemini CLI. Gemini 4 Argon is already in the app's model pickers for Antigravity and Cursor, added by a [pull request](https://github.com/HarnessMD/munder-difflin/pull/738) merged on 13 Oct 2026. The [install guide](/blog/how-to-install-and-use-munder-difflin/) covers setup, and the [Concepts hub](/blog/topics/concepts/) explains the terms. ## What is Gemini 4 Argon? -Gemini 4 Argon is Google's newest top model, built for long jobs in coding, office work and security. Google's [developer post](https://blog.google/innovation-and-ai/technology/developers-tools/build-with-gemini-4-argon/) of 13 October 2026 calls it "our frontier model for complex workflows across real-world software engineering, enterprise knowledge work, and cybersecurity defense". +Gemini 4 Argon is Google's top model on general release, built for long jobs in coding, office work and security. Google's [developer post](https://blog.google/innovation-and-ai/technology/developers-tools/build-with-gemini-4-argon/) of 13 October 2026 calls it "our frontier model for complex workflows across real-world software engineering, enterprise knowledge work, and cybersecurity defense". + +Announced 28 Oct 2026, Google's next frontier model: [Gemini 4 Carbon](/blog/gemini-4-carbon/). Google's posts do not say why it is called Argon. The element is a noble gas that reacts with almost nothing, which is not the sales pitch here. diff --git a/blog/src/posts/gemini-4-carbon.md b/blog/src/posts/gemini-4-carbon.md new file mode 100644 index 0000000000..ed7b4fb359 --- /dev/null +++ b/blog/src/posts/gemini-4-carbon.md @@ -0,0 +1,101 @@ +--- +title: "Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026)" +seoTitle: "Gemini 4 Carbon (Oct 2026): Price, Access, Scores vs Argon" +description: "Gemini 4 Carbon is Google's new frontier model, so far for a group of cyber defenders: its launch price, who can use it and how it compares to Argon." +date: 2026-10-29 +category: concepts +categoryLabel: Concepts +type: Non-technical +primaryKeyword: "gemini 4 carbon" +secondaryKeywords: ["gemini 4 carbon price", "gemini 4 carbon release date", "gemini 4 carbon vs argon", "gemini 4 carbon api", "fairwind program", "gemini 4 carbon benchmarks"] +tags: ["Concepts", "AI Agents", "Models"] +faq: + - q: "When was Gemini 4 Carbon released?" + a: "Google announced Gemini 4 Carbon on 28 October 2026. Its post says Carbon goes to a subset of cyber defenders starting that week, then gradually to additional trusted partners through the Fairwind Program, and to developers, businesses and consumers later, with no date given." + - q: "How much does Gemini 4 Carbon cost?" + a: "Google's launch post of 28 Oct 2026 says Carbon will launch at the same introductory price as Argon: $2 per million input tokens and $10 per million output tokens, with cached input at 95% off the input price. After the introductory period, $4 input and $20 output per million tokens will apply, the same post of 28 Oct 2026 says, with no end date given." + - q: "Can I use Gemini 4 Carbon in the Gemini API today?" + a: "Not as a general developer. On 29 Oct 2026 Google's Gemini API pricing page listed Gemini 4 Argon but not Carbon, and the launch post says Carbon reaches developers, businesses and consumers after early access for cyber defenders." + - q: "Is Gemini 4 Carbon better than Gemini 4 Argon?" + a: "On Google's own figures, yes on safety and security tests: Carbon has a 0.0% attack success rate on Gray Swan's indirect prompt injection test against 0.7% for Argon, about 2x fewer unsupported claims, and more than 2x the success rate on secure code in internal tests. These are Google's numbers, published 28 Oct 2026." + - q: "What should I use until Carbon is open?" + a: "Gemini 4 Argon. On 29 Oct 2026 Google's pricing page listed it on the paid tier of the Gemini API at $2 input and $10 output per million tokens through 30 November 2026, and $4 and $20 from 1 December 2026." +--- + +Gemini 4 Carbon is Google's new frontier model, announced 28 Oct 2026, and you cannot use it yet unless you are one of the cyber defenders in its first group. Google's post of 28 Oct 2026 says it will launch at Argon's introductory price, $2 input and $10 output per million tokens. + +New models end up inside the agents you run. [Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It runs engines such as Claude Code, Codex and Gemini CLI. It does not offer Gemini 4 Carbon: on 29 Oct 2026 Google had published no Carbon model ID for developers. The [install guide](/blog/how-to-install-and-use-munder-difflin/) covers setup, and the [Concepts hub](/blog/topics/concepts/) explains the terms. + +## What is Gemini 4 Carbon? + +Gemini 4 Carbon is the model Google placed above [Gemini 4 Argon](/blog/gemini-4-argon/), aimed at long engineering jobs and security work. Google's [launch post](https://blog.google/innovation-and-ai/models-and-research/gemini-models/introducing-gemini-4-carbon/) of 28 October 2026 calls it "our strongest model with state-of-the-art cybersecurity and long horizon capabilities". + +The post says Carbon is "built for sustained agentic workflows" and that Google's teams have seen it "run for days" on multi step engineering tasks, such as finding the root cause of subtle bugs across large codebases. It builds on Argon, which the same post says launched two weeks earlier. + +
Animation. On a white background, a two step podium stands empty. A block labelled Argon drops onto the lower step with a tag Open now, then a block labelled Carbon drops onto the higher step with a tag Early access.
Carbon sits above Argon in Google's Gemini 4 line, per Google's launch post of 28 Oct 2026.
+ +## Who can use Gemini 4 Carbon? + +Only a small group for now. Google says that "starting this week" it will give Carbon to a subset of cyber defenders, then "gradually phase access to additional trusted partners" through its [Fairwind Program](https://deepmind.google/fairwind-program/). Developers, businesses and consumers come after that, "as soon as possible", with no date. Until then nobody outside those groups can use it, in the Gemini API or anywhere else. + +Google says it is gathering feedback and working on guardrails first, and that it takes part in the U.S. government's voluntary process for testing models before release. On 29 Oct 2026 the Gemini API [models page](https://ai.google.dev/gemini-api/docs/models) and [pricing page](https://ai.google.dev/gemini-api/docs/pricing) listed Gemini 4 Argon but had no Carbon entry and no Carbon model ID. + +Argon followed the same path. Google's [developer post](https://blog.google/innovation-and-ai/technology/developers-tools/build-with-gemini-4-argon/) of 13 October 2026 opened it on the paid tier of the Gemini API in Google AI Studio and Android Studio, and to Google AI Ultra subscribers in AI Studio and Google Antigravity. + +
Animation. On a white background, a row of three ticket stubs is torn off one at a time. The first reads Cyber defenders and is stamped with a mint tick. The second reads Trusted partners and the third reads Developers, both marked Later.
Google's rollout order for Carbon: cyber defenders, then trusted partners through Fairwind, then developers, per its post of 28 Oct 2026.
+ +## How much will Gemini 4 Carbon cost? + +The same as Argon at launch. Google's post of 28 Oct 2026 says Carbon "will launch at the same introductory price" as Argon: $2 per million input tokens and $10 per million output tokens, with cached input tokens at 95% off the input price. Its footnote adds that after the introductory period, $4 input and $20 output per million tokens apply (28 Oct 2026). + +The post does not say when Carbon's introductory period ends. For Argon, the pricing page read on 29 Oct 2026 gives the dates: + +| Gemini 4 Argon, paid tier | Through 30 Nov 2026 | From 1 Dec 2026 | +| --- | --- | --- | +| Input, per 1M tokens | $2.00 | $4.00 | +| Output, per 1M tokens, thinking included | $10.00 | $20.00 | +| Context caching, per 1M tokens | $0.10 | $0.20 | + +The same page says Argon "is not available on the Free tier". [Gemini 4 Argon pricing](/blog/gemini-4-argon-pricing/) has the batch prices. + +## How does Gemini 4 Carbon compare to Argon? + +On Google's numbers, Carbon is stronger on security work and safer in agent tasks. The test rows come from Google's launch post of 28 October 2026; Argon's access and price dates come from its developer post and the pricing page read on 29 Oct 2026. + +| Checked 29 Oct 2026 | Gemini 4 Carbon | Gemini 4 Argon | +| --- | --- | --- | +| Who can use it | A subset of cyber defenders | Paid tier of the Gemini API | +| Launch price per 1M tokens | $2 in, $10 out (introductory) | $2 in, $10 out through 30 Nov 2026 | +| Gray Swan indirect prompt injection, attack success | 0.0% | 0.7% | +| Unsupported claims, internal test | About 2x fewer | Baseline | +| Secure code success, internal test | More than 2x | Baseline | + +Google also gives these Carbon results on their own, from external tests it says were "evaluated without guardrails": 88.2% on SEC-bench Pro for finding vulnerabilities, 54.8% on ExploitGym for exploitation, and 71.0% on Collinear's CWE-bench for patching. Google says Carbon ranks first on version 5.0 of the Artificial Analysis Intelligence Index at 59, and fourth on WebDev Arena at 1768, up 89 points. + +
Animation. On a white background, a balance scale tips as two weights drop onto its pans. The weight labelled Argon reads 0.7%, the weight labelled Carbon reads 0.0%, and a card below reads Prompt injection.
Gray Swan indirect prompt injection attack success: 0.7% for Argon, 0.0% for Carbon, per Google's post of 28 Oct 2026.
+ +## What did Google change in how Carbon behaves? + +Google lists these changes in its post of 28 Oct 2026, each from its own testing: + +- **Fewer shortcuts.** Successful cheating on Terminal-Bench 4.0 fell to 0.0%, with attempts at 0.4%, and high severity misalignment alerts in live coding with Google's teams dropped "by almost 80%". +- **More honest output.** About 2x fewer unsupported claims than Argon. Carbon puts caveats in the deliverable or lists what is still needed instead of fabricating. +- **Asks when unclear.** It fetches sources and shows the user discrepancies before acting. +- **Stays in scope.** Overreach fell 26% and under service 29%. + +Our view: these are vendor numbers from one post, so read them as Google's claims until outside tests appear. For long agent jobs today, Argon is the one you can actually open. [How to use Gemini 4 Argon](/blog/how-to-use-gemini-4-argon/) covers setup, and [Gemini 4 Argon vs Claude Opus 5.5](/blog/gemini-4-argon-vs-claude-opus-5-5/) puts it beside Anthropic's model. + +## Gemini 4 Carbon at a glance, checked 29 Oct 2026 + +| | Gemini 4 Carbon | +| --- | --- | +| Maker | Google DeepMind | +| Announced | 28 Oct 2026 | +| Access | Cyber defenders first, then trusted partners through Fairwind, then developers | +| Launch price | $2 input and $10 output per 1M tokens, introductory | +| Price after the introductory period | $4 input and $20 output per 1M tokens | +| Cached input | 95% off the input price | +| Public model ID | None published, checked 29 Oct 2026 | +| In the Gemini API pricing page | Not yet | + + diff --git a/docs/blog/agent-tools-today-2026-10-03/index.html b/docs/blog/agent-tools-today-2026-10-03/index.html index b681eaae6c..2f98989c0d 100644 --- a/docs/blog/agent-tools-today-2026-10-03/index.html +++ b/docs/blog/agent-tools-today-2026-10-03/index.html @@ -249,50 +249,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-04/index.html b/docs/blog/agent-tools-today-2026-10-04/index.html index b762de707d..00fc2bb7da 100644 --- a/docs/blog/agent-tools-today-2026-10-04/index.html +++ b/docs/blog/agent-tools-today-2026-10-04/index.html @@ -248,50 +248,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-05/index.html b/docs/blog/agent-tools-today-2026-10-05/index.html index 169736d437..2855a475fe 100644 --- a/docs/blog/agent-tools-today-2026-10-05/index.html +++ b/docs/blog/agent-tools-today-2026-10-05/index.html @@ -246,50 +246,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-06/index.html b/docs/blog/agent-tools-today-2026-10-06/index.html index d26b5a44d0..bcf33aea58 100644 --- a/docs/blog/agent-tools-today-2026-10-06/index.html +++ b/docs/blog/agent-tools-today-2026-10-06/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-07/index.html b/docs/blog/agent-tools-today-2026-10-07/index.html index c29d053af7..500e1af582 100644 --- a/docs/blog/agent-tools-today-2026-10-07/index.html +++ b/docs/blog/agent-tools-today-2026-10-07/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-08/index.html b/docs/blog/agent-tools-today-2026-10-08/index.html index 347a4a6ba5..f097c8e66a 100644 --- a/docs/blog/agent-tools-today-2026-10-08/index.html +++ b/docs/blog/agent-tools-today-2026-10-08/index.html @@ -246,50 +246,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-09/index.html b/docs/blog/agent-tools-today-2026-10-09/index.html index fedb7651b3..28361e0ecc 100644 --- a/docs/blog/agent-tools-today-2026-10-09/index.html +++ b/docs/blog/agent-tools-today-2026-10-09/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-10/index.html b/docs/blog/agent-tools-today-2026-10-10/index.html index a5c4c53ea7..5a4342eb6e 100644 --- a/docs/blog/agent-tools-today-2026-10-10/index.html +++ b/docs/blog/agent-tools-today-2026-10-10/index.html @@ -247,50 +247,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-11/index.html b/docs/blog/agent-tools-today-2026-10-11/index.html index 1e7c3b9321..05c2a90bb8 100644 --- a/docs/blog/agent-tools-today-2026-10-11/index.html +++ b/docs/blog/agent-tools-today-2026-10-11/index.html @@ -245,50 +245,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-12/index.html b/docs/blog/agent-tools-today-2026-10-12/index.html index 633da03a18..6454974693 100644 --- a/docs/blog/agent-tools-today-2026-10-12/index.html +++ b/docs/blog/agent-tools-today-2026-10-12/index.html @@ -243,50 +243,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-13/index.html b/docs/blog/agent-tools-today-2026-10-13/index.html index 619a76d622..2e6d09a3d4 100644 --- a/docs/blog/agent-tools-today-2026-10-13/index.html +++ b/docs/blog/agent-tools-today-2026-10-13/index.html @@ -243,50 +243,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-15/index.html b/docs/blog/agent-tools-today-2026-10-15/index.html index 12fc7c7cb4..85003ca78d 100644 --- a/docs/blog/agent-tools-today-2026-10-15/index.html +++ b/docs/blog/agent-tools-today-2026-10-15/index.html @@ -242,50 +242,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-16/index.html b/docs/blog/agent-tools-today-2026-10-16/index.html index 88dc97faaa..189d6241d4 100644 --- a/docs/blog/agent-tools-today-2026-10-16/index.html +++ b/docs/blog/agent-tools-today-2026-10-16/index.html @@ -241,50 +241,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-17/index.html b/docs/blog/agent-tools-today-2026-10-17/index.html index c581d1b0a2..d98c875258 100644 --- a/docs/blog/agent-tools-today-2026-10-17/index.html +++ b/docs/blog/agent-tools-today-2026-10-17/index.html @@ -240,50 +240,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-18/index.html b/docs/blog/agent-tools-today-2026-10-18/index.html index 6e93748107..93938a5d12 100644 --- a/docs/blog/agent-tools-today-2026-10-18/index.html +++ b/docs/blog/agent-tools-today-2026-10-18/index.html @@ -240,50 +240,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-19/index.html b/docs/blog/agent-tools-today-2026-10-19/index.html index 263c879411..e6e684b223 100644 --- a/docs/blog/agent-tools-today-2026-10-19/index.html +++ b/docs/blog/agent-tools-today-2026-10-19/index.html @@ -240,50 +240,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-21/index.html b/docs/blog/agent-tools-today-2026-10-21/index.html index 6d681b9558..d27d682d8e 100644 --- a/docs/blog/agent-tools-today-2026-10-21/index.html +++ b/docs/blog/agent-tools-today-2026-10-21/index.html @@ -240,50 +240,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-22/index.html b/docs/blog/agent-tools-today-2026-10-22/index.html index 99e8ecfde5..1d435d716b 100644 --- a/docs/blog/agent-tools-today-2026-10-22/index.html +++ b/docs/blog/agent-tools-today-2026-10-22/index.html @@ -240,50 +240,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-23/index.html b/docs/blog/agent-tools-today-2026-10-23/index.html index 756c587b69..e6fcfbfb82 100644 --- a/docs/blog/agent-tools-today-2026-10-23/index.html +++ b/docs/blog/agent-tools-today-2026-10-23/index.html @@ -241,50 +241,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Black October: What PHP2Shell Is and How to Patch (Oct 2026)

-

Black October is the scramble around PHP2Shell, two critical PHP flaws fixed on 21 Oct 2026. Who found them, the fixed versions and how to patch.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 22 Oct 2026: Claude API 2026-10-21, LayerFS 1.0, PHP2Shell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 22 Oct 2026, each with its source.

+

Black October: What PHP2Shell Is and How to Patch (Oct 2026)

+

Black October is the scramble around PHP2Shell, two critical PHP flaws fixed on 21 Oct 2026. Who found them, the fixed versions and how to patch.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-26/index.html b/docs/blog/agent-tools-today-2026-10-26/index.html index 9c9050095d..857c17f198 100644 --- a/docs/blog/agent-tools-today-2026-10-26/index.html +++ b/docs/blog/agent-tools-today-2026-10-26/index.html @@ -241,50 +241,50 @@

How this list is built
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 22 Oct 2026: Claude API 2026-10-21, LayerFS 1.0, PHP2Shell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 22 Oct 2026, each with its source.

+

Black October: What PHP2Shell Is and How to Patch (Oct 2026)

+

Black October is the scramble around PHP2Shell, two critical PHP flaws fixed on 21 Oct 2026. Who found them, the fixed versions and how to patch.

News - Read → + Read →
diff --git a/docs/blog/agent-tools-today-2026-10-29/index.html b/docs/blog/agent-tools-today-2026-10-29/index.html new file mode 100644 index 0000000000..98b63acb1a --- /dev/null +++ b/docs/blog/agent-tools-today-2026-10-29/index.html @@ -0,0 +1,349 @@ + + + + + + + + +Agent Tools Today (29 Oct 2026): Launches, Skills, MCP Servers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

+ +
+ +
Hand drawn sketch: a front page with five numbered lines, a clock, and a yellow character reading it out
+ +
+
+

Agent tools today, 29 Oct 2026, in one line: Google announced Gemini 4 Carbon for a first group of cyber defenders, GitHub put verified MCP servers into Copilot, and OpenCode 2.2.1 added a /goal command that keeps a session going until a reviewer agrees. It covers 28 to 29 Oct, checked 29 Oct. An earlier edition is 26 Oct.

+

Munder Difflin is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It is not ranked in the lists below.

+
Animation. On a white background, three cards are pinned to a cork board one at a time. The first reads Gemini 4 Carbon with a tag Early access, the second Copilot connectors with a tag 26 services, and the third OpenCode 2.2.1 with a tag Goal mode. Tapping a card lifts it off the board or pins it back.
The day's three lead items, from Google's launch post, GitHub's changelog and OpenCode's release notes, read 29 Oct 2026.
+

Top 3 launches

+
    +
  1. Gemini 4 Carbon. Google announced it on 28 Oct as “our strongest model with state-of-the-art cybersecurity and long horizon capabilities”. It goes first to a subset of cyber defenders, then to trusted partners through the Fairwind Program, and to developers later. Google’s post of 28 Oct 2026 gives an introductory price of $2 input and $10 output per million tokens. More than 860 points on Hacker News on 29 Oct. Details in Gemini 4 Carbon. Source
  2. +
  3. Copilot connectors. On 28 Oct GitHub started rolling out GitHub verified MCP servers, which it calls connectors, in public preview on all Copilot plans. You sign in to a service once and it works across the Copilot app, Copilot CLI, VS Code, Copilot in the cloud and GitHub Mobile. 26 services at launch, among them Slack, Figma, Notion, Sentry and Linear. Business and Enterprise need an admin to switch on a preview policy. Source
  4. +
  5. Shared Copilot Automations. Also on 28 Oct, automations that combine prompts, triggers and tools can now belong to a repository instead of one person. Everyone with read access sees them, AI credits bill to the repository owner, and actions show as Copilot. Rolling out on Copilot Pro, Pro+, Max, Business and Enterprise. The same day, Agent Merge came to pull requests on GitHub, fixing failing workflows and merge conflicts in the cloud on paid plans (Agent Merge). Source
  6. +
+

Top 3 skills, MCP servers and plugins

+
    +
  1. Impeccable. A design skill whose README calls it “The design vocabulary for your coding agent”, with commands such as polish, bolder, critique and audit. It lists Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, OpenCode and more. Apache 2.0, more than 93,000 stars, and 1,472 stars in a day on GitHub trending on 29 Oct. Source
  2. +
  3. Superpowers. A software development method for coding agents built from composable skills, with install steps for Claude Code, Antigravity, the Codex app and CLI, Cursor, Devin CLI and others. MIT, more than 307,000 stars, and 1,095 stars in a day on GitHub trending on 29 Oct. Source
  4. +
  5. Expo skills. Official skills from the Expo team for building, deploying, upgrading and debugging Expo apps. Claude Code and Codex install it as a plugin; Cursor, OpenCode, Copilot, Gemini, Cline and others use the skills CLI. MIT, more than 3,600 stars, on GitHub trending on 29 Oct. Source
  6. +
+

Top 3 moves from multi agent tools

+
    +
  1. OpenCode 2.2.1. Published 29 Oct. /goal <objective> lets a session keep working until a reviewer confirms the goal is met, with pause and resume. Opt in scheduled prompts arrive through /schedule, and an experimental image_generate tool lets agents make or edit images. It drops the fal, Black Forest Labs, Replicate and Stability providers from the @opencode/ai package, a breaking change for code that imports them. See OpenCode alternatives. Source
  2. +
  3. Goose 1.57.0. Published 28 Oct. Its allowlist now requires HTTPS and validates redirects, callers can supply their own session IDs, scheduled runs use recipe settings, and Claude models are asked for summarized thinking. Source
  4. +
  5. Qwen Code 0.26.3. Published 28 Oct. A persistent Workflow mode can be switched on from the CLI, the SDK or ACP, generated UI cards appear only for clients that can render MCP Apps, and tool results shrink to fit before auto compaction. Source
  6. +
+

Top 3 rising repos

+
    +
  1. Macro. A workspace that puts email, messages, docs, tasks, agents and a CRM in one interface with shared team memory, built in SolidJS and Rust. AGPL 3.0, more than 5,500 stars, on GitHub trending on 29 Oct. Source
  2. +
  3. BAMA. “Build Any Mac App”: 21 agent skills that take a native macOS app in Swift and SwiftUI from idea to the Dock, as a Claude Code or Codex plugin. MIT, created 24 Oct, more than 620 stars on 29 Oct. Source
  4. +
  5. vvv. Editable Remotion video templates that a coding agent picks, fills and renders from one sentence, installed as a Claude Code plugin, through the skills CLI or as an MCP server. MIT, created 22 Oct, more than 430 stars on 29 Oct. Source
  6. +
+

Stars can rise for reasons other than use: names to watch, not picks.

+

Top 3 things people are arguing about

+
    +
  1. Is Claude Code’s status line worth its tokens? A gist Flamerix AI published on 26 Oct says background agents send their whole transcript to the model about every 30 seconds to write a 3 to 5 word status, and that in its own measurement this was 16.4% of Claude Code’s estimated spend. It offers a preload script to turn it off. An open issue on the Claude Code repo, filed 15 Aug, asks for a supported switch. More than 180 points on Hacker News on 29 Oct. Source
  2. +
  3. Can agents do a tax professional’s job? Surge AI’s DAYJOB: Tax benchmark, published 27 Oct, gives agents 50 assignments across 1,789 files and passes an attempt only when it meets 95% of the criteria. Claude Sonnet 5.5 leads at a 10.8% pass rate, then Claude Fable 5.1 at 9.6% and Claude Opus 5.5 at 9.2%. More than 220 points on Hacker News on 29 Oct. Source
  4. +
  5. What do you still need to know when agents write the code? In a post of 27 Oct, an engineer describes CI failing on a file Codex had kept working on happily, with whole components on single lines, and asks how much a person must still understand of code they did not write. More than 190 points and 100 comments on Hacker News on 29 Oct. Source
  6. +
+

How this list is built

+

For this edition, covering 28 to 29 Oct, we read the GitHub releases of 21 tracked tools, vendor blogs and changelogs, GitHub trending, and the Hacker News front page. We did not read X or Reddit for it. A name only makes a list with a link that was opened and a signal that can be shown: points, stars or a dated release. Repos are checked against the GitHub API before they appear. New here? Start with the install guide.

+ + + + + + +
+ + +
+ + + + +
+ + +
+ +
+ + + + + + diff --git a/docs/blog/agents-rule-of-two/index.html b/docs/blog/agents-rule-of-two/index.html index e3a7731936..c2d1557099 100644 --- a/docs/blog/agents-rule-of-two/index.html +++ b/docs/blog/agents-rule-of-two/index.html @@ -331,6 +331,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/ai-agent-glossary/index.html b/docs/blog/ai-agent-glossary/index.html index 3aa88090f0..6aca8d7de5 100644 --- a/docs/blog/ai-agent-glossary/index.html +++ b/docs/blog/ai-agent-glossary/index.html @@ -303,6 +303,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.css b/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.css new file mode 100644 index 0000000000..268927dd39 --- /dev/null +++ b/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Agent Tools Today, 29 Oct 2026". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.js b/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.js new file mode 100644 index 0000000000..37049aa4ef --- /dev/null +++ b/docs/blog/assets/media/agent-tools-today-2026-10-29/motion.js @@ -0,0 +1,119 @@ +/* Bright coded scenes for "Agent Tools Today, 29 Oct 2026". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + + const SC = {}; + + /* ---- today: three cards pinned to a cork board, one at a time ---- */ + SC.today = { + dur: 7, still: 7, + build(svg, api) { + el("rect", { x: 28, y: 28, width: 744, height: 544, rx: 28, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: 52, y: 52, width: 696, height: 496, rx: 16, fill: YEL, stroke: INK, "stroke-width": 2.5 }, svg); + let seed = 11; const rnd = () => (seed = (seed * 9301 + 49297) % 233280) / 233280; + for (let i = 0; i < 120; i++) el("circle", { cx: 68 + rnd() * 664, cy: 68 + rnd() * 464, r: 1.4 + rnd() * 1.8, fill: "#fff" }, svg); + const CARDS = [ + ["Gemini 4", "Carbon", "Early access", SKY, BLUE, -3], + ["Copilot", "connectors", "26 services", LIL, MINT, 2], + ["OpenCode", "2.2.1", "Goal mode", MINT, LIL, -2], + ]; + const X = [186, 400, 614], Y = 306, A = (i) => 0.5 + i * 1.15; + let touched = false; + const cards = CARDS.map(([a, b, tag, chip, pc, r0], i) => { + const slot = el("g", { opacity: 0, transform: `translate(${X[i]} ${Y}) rotate(${r0})` }, svg); + el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: "none", stroke: INK, "stroke-width": 2, "stroke-dasharray": "6 8" }, slot); + el("circle", { cx: 0, cy: -92, r: 3, fill: INK }, slot); + const g = el("g", {}, svg); + const sh = el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: LIL, stroke: INK, "stroke-width": 3 }, g); + el("rect", { x: -98, y: -118, width: 196, height: 236, rx: 14, fill: "#fff", stroke: INK, "stroke-width": 3 }, g); + el("rect", { x: -108, y: -128, width: 216, height: 256, rx: 20, fill: "none", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "4 6", class: "mg-ring" }, g); + txt(g, 0, -12, a, { "text-anchor": "middle", "font-family": MONO, "font-size": 25, "font-weight": 700 }); + txt(g, 0, 22, b, { "text-anchor": "middle", "font-family": MONO, "font-size": 25, "font-weight": 700 }); + el("rect", { x: -76, y: 54, width: 152, height: 40, rx: 20, fill: chip, stroke: INK, "stroke-width": 2.5 }, g); + txt(g, 0, 81, tag, { "text-anchor": "middle", "font-size": 19, "font-weight": 600 }); + const pin = el("g", {}, g); + const needle = el("path", { d: "M0 4 V28", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, pin); + el("circle", { r: 14, fill: pc, stroke: INK, "stroke-width": 3 }, pin); + el("circle", { cx: -4, cy: -4, r: 4, fill: "#fff" }, pin); + const st = { up: false, at: -99, from: 0, k: 0 }; + button(g, `${a} ${b}, ${tag}`, () => { + st.from = st.k; st.up = !st.up; st.at = api.now(); touched = true; + g.setAttribute("aria-pressed", String(st.up)); + if (st.up) svg.appendChild(g); + if (api.calm) api.redraw(); else api.poke(); + }); + g.setAttribute("aria-pressed", "false"); + return { slot, g, sh, pin, needle, st, r0, x: X[i] }; + }); + return (t, now) => { + if (touched) t = SC.today.dur; + cards.forEach((c, i) => { + const a0 = A(i), d = oc(seg(t, a0, a0 + 0.45)), p = seg(t, a0 + 0.4, a0 + 0.8); + c.g.setAttribute("visibility", t >= a0 ? "visible" : "hidden"); + const s = c.st, u = api.calm ? 1 : seg(now - s.at, 0, 0.4); + s.k = s.up ? s.from + (1 - s.from) * oc(u) : s.from * (1 - ob(u)); + const k = s.k, kk = cl(k), bump = Math.sin(seg(t, a0 + 0.72, a0 + 0.95) * Math.PI) * 0.02; + tf(c.g, c.x, Y - 50 * (1 - d) - 30 * k, 1 + 0.05 * (1 - d) + 0.04 * k - bump, c.r0 * (1 - kk)); + c.sh.setAttribute("transform", `translate(${6 * kk} ${10 * kk})`); + c.slot.setAttribute("opacity", kk > 0.35 ? 1 : 0); + const fall = 1 - ob(p); + c.pin.setAttribute("transform", `translate(0 ${-92 - 56 * fall - 64 * kk}) rotate(${22 * kk})`); + c.pin.setAttribute("opacity", p > 0 ? 1 : 0); + c.needle.setAttribute("opacity", kk > 0.05 || p < 1 ? 1 : 0); + }); + }; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + const api = { + now: clock, calm: calm || frozen, + seek: (s) => { off = s - clock(); held = false; tick(); }, + poke: () => { held = false; tick(); }, + redraw: () => { if (frozen) draw(isNaN(fixed) ? sc.still : fixed, clock()); else tick(); }, + }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/docs/blog/assets/media/agent-tools-today-2026-10-29/today.png b/docs/blog/assets/media/agent-tools-today-2026-10-29/today.png new file mode 100644 index 0000000000..59e75fa5ed Binary files /dev/null and b/docs/blog/assets/media/agent-tools-today-2026-10-29/today.png differ diff --git a/docs/blog/assets/media/gemini-4-carbon/hero.png b/docs/blog/assets/media/gemini-4-carbon/hero.png new file mode 100644 index 0000000000..19e0ab7cb3 Binary files /dev/null and b/docs/blog/assets/media/gemini-4-carbon/hero.png differ diff --git a/docs/blog/assets/media/gemini-4-carbon/motion.css b/docs/blog/assets/media/gemini-4-carbon/motion.css new file mode 100644 index 0000000000..117928abec --- /dev/null +++ b/docs/blog/assets/media/gemini-4-carbon/motion.css @@ -0,0 +1,13 @@ +/* Bright coded scenes for "Gemini 4 Carbon". Pairs with motion.js. */ +.prose figure.mg { margin: 42px 0; } +.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; } +.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; } +.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; } +.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; } +.mg .mg-hit { cursor: pointer; outline: none; } +.mg [role="slider"] { cursor: grab; touch-action: none; } +.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; } +.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; } +.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; } +@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } } +@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } } diff --git a/docs/blog/assets/media/gemini-4-carbon/motion.js b/docs/blog/assets/media/gemini-4-carbon/motion.js new file mode 100644 index 0000000000..a63fd8babc --- /dev/null +++ b/docs/blog/assets/media/gemini-4-carbon/motion.js @@ -0,0 +1,218 @@ +/* Bright coded scenes for "Gemini 4 Carbon". Vanilla JS, no library. +
holds a still image; this script swaps in a live SVG. + Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */ +(() => { + const NS = "http://www.w3.org/2000/svg"; + const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9", MUTE = "#7A6A88"; + const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace'; + const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; }; + const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; }; + const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v)); + const seg = (t, a, b) => cl((t - a) / (b - a)); + const oc = (x) => 1 - Math.pow(1 - x, 3); + const ob = (x) => { const c = 1.70158; return 1 + (c + 1) * Math.pow(x - 1, 3) + c * Math.pow(x - 1, 2); }; + const io = (x) => (x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2); + const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`); + const button = (g, label, fn) => { + g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit"); + g.addEventListener("click", fn); + g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } }); + }; + // a transparent hit area plus a dashed focus ring, both the same box + const hitbox = (g, x, y, w, h, r = 20) => { + el("rect", { x, y, width: w, height: h, rx: r, fill: "#fff", "fill-opacity": 0 }, g); + el("rect", { x, y, width: w, height: h, rx: r, fill: "none", stroke: INK, "stroke-width": 2, "stroke-dasharray": "4 7", class: "mg-ring" }, g); + }; + const chip = (p, label, fill, w) => { + const g = el("g", {}, p); + el("rect", { x: -w / 2, y: -21, width: w, height: 42, rx: 21, fill, stroke: INK, "stroke-width": 2.5 }, g); + txt(g, 0, 8, label, { "text-anchor": "middle", "font-size": 22, "font-weight": 700 }); + return g; + }; + + const SC = {}; + + /* ---- 1. two blocks drop onto a two step podium ---- */ + SC.podium = { + dur: 8, still: 5, + build(svg, api) { + const stage = el("g", {}, svg); + el("path", { d: "M80 500 H720", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, stage); + el("rect", { x: 130, y: 380, width: 260, height: 120, fill: SOFT, stroke: INK, "stroke-width": 3 }, stage); + el("rect", { x: 390, y: 260, width: 260, height: 240, fill: SOFT, stroke: INK, "stroke-width": 3 }, stage); + const blocks = [ + { x: 160, top: 270, fill: SKY, name: "Argon", tag: "Open now", tagFill: MINT, tagW: 150, fall: 0.6 }, + { x: 420, top: 150, fill: LIL, name: "Carbon", tag: "Early access", tagFill: YEL, tagW: 190, fall: 2.2 }, + ].map((b) => { + const g = el("g", {}, stage); + el("rect", { x: b.x, y: b.top, width: 200, height: 110, rx: 14, fill: b.fill, stroke: INK, "stroke-width": 3 }, g); + txt(g, b.x + 100, b.top + 67, b.name, { "text-anchor": "middle", "font-family": MONO, "font-size": 34, "font-weight": 700 }); + const tag = chip(stage, b.tag, b.tagFill, b.tagW); + return Object.assign(b, { g, tag }); + }); + const hit = el("g", {}, svg); + hitbox(hit, 70, 70, 660, 450); + button(hit, "Replay the blocks dropping onto the podium", () => api.seek(0)); + return (t) => { + const out = 1 - seg(t, 7.4, 8); + blocks.forEach((b) => { + const k = seg(t, b.fall, b.fall + 0.6), land = Math.sin(Math.PI * seg(t, b.fall + 0.6, b.fall + 0.9)); + const dy = -(b.top + 140) * (1 - k * k), cx = b.x + 100, by = b.top + 110; + b.g.setAttribute("transform", `translate(0 ${dy}) translate(${cx} ${by}) scale(${1 + 0.08 * land} ${1 - 0.12 * land}) translate(${-cx} ${-by})`); + b.g.setAttribute("opacity", t < b.fall ? 0 : out); + const p = seg(t, b.fall + 0.9, b.fall + 1.3); + tf(b.tag, cx, b.top - 44, 0.4 + 0.6 * ob(p)); + b.tag.setAttribute("opacity", p <= 0 ? 0 : Math.min(cl(p * 3), out)); + }); + }; + }, + }; + + /* ---- 2. three ticket stubs tear off in rollout order ---- */ + SC.ticket = { + dur: 8, still: 5.5, + build(svg, api) { + el("rect", { x: 40, y: 112, width: 720, height: 40, rx: 12, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + const stubs = [ + { lines: ["Cyber", "defenders"], fill: YEL, tick: true }, + { lines: ["Trusted", "partners"], fill: SKY }, + { lines: ["Developers"], fill: LIL }, + ].map((s, i) => { + const x = 65 + i * 240, g = el("g", {}, svg); + el("path", { d: `M${x + 30} 156 V164 M${x + 160} 156 V164`, stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + const card = el("g", {}, g); + el("path", { d: "M0 0 H190 V136 A16 16 0 0 0 190 168 V290 H0 V168 A16 16 0 0 0 0 136 Z", fill: s.fill, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, card); + el("path", { d: "M14 14 H176", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "6 7", "stroke-linecap": "round" }, card); + el("path", { d: "M18 152 H172", stroke: INK, "stroke-width": 2, "stroke-dasharray": "2 9", "stroke-linecap": "round" }, card); + s.lines.forEach((l, j) => txt(card, 95, (s.lines.length === 1 ? 92 : 74) + j * 36, l, { "text-anchor": "middle", "font-size": 28, "font-weight": 700 })); + const stamp = el("g", {}, card); + if (s.tick) { + el("circle", { r: 44, fill: MINT, stroke: INK, "stroke-width": 3 }, stamp); + el("path", { d: "M-20 2 L-6 16 L20 -14", stroke: INK, "stroke-width": 7, fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" }, stamp); + } else { + el("rect", { x: -64, y: -26, width: 128, height: 52, rx: 14, fill: "#fff", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "6 5" }, stamp); + txt(stamp, 0, 9, "Later", { "text-anchor": "middle", "font-size": 26, "font-weight": 700 }); + } + hitbox(g, x - 14, 160, 218, 400); + const st = { x, card, stamp, at: 0.8 + i * 1.2, ov: null, k: 0, rot: i === 1 ? 2 : i === 0 ? -3 : 4 }; + button(g, `${s.lines.join(" ")}: tear off or put back`, () => { + const now = api.now(); st.ov = { from: st.k, to: st.k < 0.5 ? 1 : 0, at: now }; api.poke(); + }); + return st; + }); + return (t, now) => { + stubs.forEach((s) => { + let k; + if (s.ov) k = s.ov.from + (s.ov.to - s.ov.from) * (api.calm ? 1 : oc(seg(now - s.ov.at, 0, 0.55))); + else k = oc(seg(t, s.at, s.at + 0.7)) * (1 - io(seg(t, 7.3, 7.9))); + s.k = k; + s.card.setAttribute("transform", `translate(${s.x} ${166 + 70 * k}) rotate(${s.rot * k} 95 0)`); + const p = seg(k, 0.55, 1); + tf(s.stamp, 95, 222, p <= 0 ? 0.001 : 0.3 + 0.7 * ob(p), -8); + s.stamp.setAttribute("opacity", cl(p * 3)); + }); + }; + }, + }; + + /* ---- 3. a balance scale tips as two weights land ---- */ + SC.scale = { + dur: 8, still: 5.5, + build(svg, api) { + const P = [400, 120], HALF = 210, HANG = 190; + const g = el("g", {}, svg); + el("path", { d: "M394 120 H406 V440 H394 Z", fill: SOFT, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + el("path", { d: "M330 470 L350 440 H450 L470 470 Z", fill: BLUE, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, g); + const beam = el("g", {}, g); + el("rect", { x: -HALF - 6, y: -7, width: 2 * HALF + 12, height: 14, rx: 7, fill: BLUE, stroke: INK, "stroke-width": 3 }, beam); + const pans = [ + { name: "Argon", pct: "0.7%", fill: SKY, side: -1, land: 1.1 }, + { name: "Carbon", pct: "0.0%", fill: LIL, side: 1, land: 2.5 }, + ].map((w) => { + const pan = el("g", {}, g); + el("path", { d: `M0 ${-HANG} L-110 0 M0 ${-HANG} L110 0`, stroke: INK, "stroke-width": 2.5, "stroke-linecap": "round" }, pan); + el("circle", { cx: 0, cy: -HANG, r: 6, fill: YEL, stroke: INK, "stroke-width": 2.5 }, pan); + const wt = el("g", {}, pan); + el("path", { d: "M-14 -96 A14 14 0 0 1 14 -96", fill: "none", stroke: INK, "stroke-width": 5, "stroke-linecap": "round" }, wt); + el("path", { d: "M-45 -96 H45 L65 -8 Q66 0 58 0 H-58 Q-66 0 -65 -8 Z", fill: w.fill, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, wt); + txt(wt, 0, -60, w.name, { "text-anchor": "middle", "font-family": MONO, "font-size": 20, "font-weight": 700 }); + txt(wt, 0, -20, w.pct, { "text-anchor": "middle", "font-size": 30, "font-weight": 700 }); + el("path", { d: "M-110 0 Q0 34 110 0 Z", fill: SOFT, stroke: INK, "stroke-width": 3, "stroke-linejoin": "round" }, pan); + return Object.assign(w, { pan, wt }); + }); + el("circle", { cx: P[0], cy: P[1], r: 14, fill: YEL, stroke: INK, "stroke-width": 3 }, g); + const card = el("g", {}, svg); + el("rect", { x: 230, y: 500, width: 340, height: 60, rx: 16, fill: YEL, stroke: INK, "stroke-width": 3 }, card); + txt(card, 400, 539, "Prompt injection", { "text-anchor": "middle", "font-size": 26, "font-weight": 700 }); + hitbox(g, 60, 24, 680, 462); + button(g, "Drop the weights onto the scale again", () => api.seek(0)); + const sp = (x) => (x <= 0 ? 0 : 1 - Math.exp(-3.5 * x) * Math.cos(8 * x)); + return (t) => { + const out = io(seg(t, 7.3, 7.9)); + const a = (-13 * sp(t - pans[0].land) + 3 * sp(t - pans[1].land)) * (1 - out), r = (a * Math.PI) / 180; + beam.setAttribute("transform", `translate(${P[0]} ${P[1]}) rotate(${a})`); + pans.forEach((w) => { + const ex = P[0] + w.side * HALF * Math.cos(r), ey = P[1] + w.side * HALF * Math.sin(r); + w.pan.setAttribute("transform", `translate(${ex} ${ey + HANG})`); + const k = seg(t, w.land - 0.5, w.land); + w.wt.setAttribute("transform", `translate(0 ${-420 * (1 - k * k) - 40 * out})`); + w.wt.setAttribute("opacity", t < w.land - 0.5 ? 0 : 1 - out); + }); + }; + }, + }; + + /* ---- title card, 16 by 9 ---- */ + SC.hero = { + w: 960, h: 540, dur: 1, still: 0, + build(svg) { + el("rect", { x: 64, y: 64, width: 150, height: 44, rx: 22, fill: YEL, stroke: INK, "stroke-width": 2.5 }, svg); + txt(svg, 139, 93, "Concepts", { "text-anchor": "middle", "font-size": 21, "font-weight": 700 }); + txt(svg, 64, 214, "Gemini 4", { "font-size": 88, "font-weight": 700 }); + txt(svg, 64, 306, "Carbon", { "font-size": 88, "font-weight": 700 }); + el("path", { d: "M66 334 H330", stroke: LIL, "stroke-width": 14, "stroke-linecap": "round" }, svg); + txt(svg, 64, 392, "Early access, Argon's price", { "font-size": 30, "font-weight": 500, fill: MUTE }); + txt(svg, 64, 452, "Checked 29 Oct 2026", { "font-size": 20, "font-weight": 500, fill: MUTE }); + el("path", { d: "M540 470 H910", stroke: INK, "stroke-width": 3, "stroke-linecap": "round" }, svg); + el("rect", { x: 560, y: 380, width: 160, height: 90, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + el("rect", { x: 720, y: 270, width: 160, height: 200, fill: SOFT, stroke: INK, "stroke-width": 3 }, svg); + [[575, 300, SKY, "Argon"], [735, 190, LIL, "Carbon"]].forEach(([x, y, f, n]) => { + el("rect", { x, y, width: 130, height: 80, rx: 12, fill: f, stroke: INK, "stroke-width": 3 }, svg); + txt(svg, x + 65, y + 50, n, { "text-anchor": "middle", "font-family": MONO, "font-size": 26, "font-weight": 700 }); + }); + return () => {}; + }, + }; + + /* ---- player ---- */ + const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill")); + const calm = matchMedia("(prefers-reduced-motion: reduce)").matches; + const mount = (fig) => { + const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return; + const W = sc.w || 800, H = sc.h || 600; + const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" }); + svg.style.aspectRatio = `${W} / ${H}`; + el("rect", { width: W, height: H, fill: "#fff" }, svg); + img.replaceWith(svg); + let off = 0, raf = 0, seen = false, started = false, held = calm; + const base = performance.now(), clock = () => (performance.now() - base) / 1000; + let draw = () => {}; + const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); }; + const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); }; + // reduced motion: replays keep the still frame, toggles snap instead of easing + const api = { calm, now: clock, seek: (s) => { off = s - clock(); if (!calm) held = false; tick(); }, poke: () => { if (calm) { frame(); setTimeout(frame, 0); return; } held = false; tick(); } }; + draw = sc.build(svg, api); + if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; } + new IntersectionObserver(([e]) => { + seen = e.isIntersecting; + if (seen) { if (!started) { started = true; off = -clock(); } tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } } + else cancelAnimationFrame(raf); + }, { threshold: 0.25 }).observe(fig); + svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }); + frame(); + }; + const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount); + const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve(); + const start = () => fonts.then(go, go); + if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start(); +})(); diff --git a/docs/blog/assets/media/gemini-4-carbon/podium.png b/docs/blog/assets/media/gemini-4-carbon/podium.png new file mode 100644 index 0000000000..55e6a9f6d3 Binary files /dev/null and b/docs/blog/assets/media/gemini-4-carbon/podium.png differ diff --git a/docs/blog/assets/media/gemini-4-carbon/scale.png b/docs/blog/assets/media/gemini-4-carbon/scale.png new file mode 100644 index 0000000000..6780395aa2 Binary files /dev/null and b/docs/blog/assets/media/gemini-4-carbon/scale.png differ diff --git a/docs/blog/assets/media/gemini-4-carbon/ticket.png b/docs/blog/assets/media/gemini-4-carbon/ticket.png new file mode 100644 index 0000000000..dd17d1cee9 Binary files /dev/null and b/docs/blog/assets/media/gemini-4-carbon/ticket.png differ diff --git a/docs/blog/black-october-php2shell/index.html b/docs/blog/black-october-php2shell/index.html index 1b00fded4d..2865a9d488 100644 --- a/docs/blog/black-october-php2shell/index.html +++ b/docs/blog/black-october-php2shell/index.html @@ -326,50 +326,50 @@

FAQ

Related in News

- +
- + 5 min
-

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

+

Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals

+

The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

+

Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source.

News - Read → + Read →
- +
- + 5 min
-

Agent Tools Today, 22 Oct 2026: Claude API 2026-10-21, LayerFS 1.0, PHP2Shell

-

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 22 Oct 2026, each with its source.

+

Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell

+

The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source.

News - Read → + Read →
diff --git a/docs/blog/can-claude-code-agents-talk-to-each-other/index.html b/docs/blog/can-claude-code-agents-talk-to-each-other/index.html index 2a7f9f80a9..0eaf817721 100644 --- a/docs/blog/can-claude-code-agents-talk-to-each-other/index.html +++ b/docs/blog/can-claude-code-agents-talk-to-each-other/index.html @@ -341,6 +341,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-code-agent-teams/index.html b/docs/blog/claude-code-agent-teams/index.html index 23b4ce9fa7..8127ae1eb4 100644 --- a/docs/blog/claude-code-agent-teams/index.html +++ b/docs/blog/claude-code-agent-teams/index.html @@ -335,6 +335,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-code-projects/index.html b/docs/blog/claude-code-projects/index.html index 1b81ead8d1..6d3c06606b 100644 --- a/docs/blog/claude-code-projects/index.html +++ b/docs/blog/claude-code-projects/index.html @@ -325,6 +325,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-code-router/index.html b/docs/blog/claude-code-router/index.html index f11d81a0e2..aff793ef40 100644 --- a/docs/blog/claude-code-router/index.html +++ b/docs/blog/claude-code-router/index.html @@ -314,6 +314,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-code-routines/index.html b/docs/blog/claude-code-routines/index.html index dfb797ea9e..d98c8b1196 100644 --- a/docs/blog/claude-code-routines/index.html +++ b/docs/blog/claude-code-routines/index.html @@ -353,6 +353,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-haiku-5-5/index.html b/docs/blog/claude-haiku-5-5/index.html index 3a9702a797..08d68ea2f6 100644 --- a/docs/blog/claude-haiku-5-5/index.html +++ b/docs/blog/claude-haiku-5-5/index.html @@ -384,6 +384,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/claude-managed-agents-dynamic-workflows/index.html b/docs/blog/claude-managed-agents-dynamic-workflows/index.html index b1299531d8..186da63f76 100644 --- a/docs/blog/claude-managed-agents-dynamic-workflows/index.html +++ b/docs/blog/claude-managed-agents-dynamic-workflows/index.html @@ -338,6 +338,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/deepseek-v4-1-flash-1017/index.html b/docs/blog/deepseek-v4-1-flash-1017/index.html index 03030402e6..8ca58ded15 100644 --- a/docs/blog/deepseek-v4-1-flash-1017/index.html +++ b/docs/blog/deepseek-v4-1-flash-1017/index.html @@ -390,6 +390,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/do-more-with-less-model-routing/index.html b/docs/blog/do-more-with-less-model-routing/index.html index fa83dc506e..611ffd8235 100644 --- a/docs/blog/do-more-with-less-model-routing/index.html +++ b/docs/blog/do-more-with-less-model-routing/index.html @@ -330,6 +330,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/feed.xml b/docs/blog/feed.xml index 2d4e0d4bc3..5763fe5a16 100644 --- a/docs/blog/feed.xml +++ b/docs/blog/feed.xml @@ -4,9 +4,25 @@ Guides, comparisons and pricing for AI agents and coding tools such as Claude Code, Codex and Cursor, each checked and dated. From the makers of Munder Difflin. - 2026-10-27T00:00:00.000Z + 2026-10-29T00:00:00.000Z https://munderdiffl.in/blog/ Chaitanya Girihttps://munderdiffl.in + + Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals + + https://munderdiffl.in/blog/agent-tools-today-2026-10-29/ + 2026-10-29T00:00:00.000Z + 2026-10-29T00:00:00.000Z + The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date. + + + Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026) + + https://munderdiffl.in/blog/gemini-4-carbon/ + 2026-10-29T00:00:00.000Z + 2026-10-29T00:00:00.000Z + Gemini 4 Carbon is Google's new frontier model, so far for a group of cyber defenders: its launch price, who can use it and how it compares to Argon. + GPT-6.1 Terra: Price, Specs and How to Use It in Codex (Oct 2026) @@ -471,20 +487,4 @@ 2026-10-08T00:00:00.000Z The top launches, skills and plugins, multi agent moves, rising repos and arguments in coding agents on 8 Oct 2026, each with its source. - - Claude Code agent teams: what they are, how to use them - - https://munderdiffl.in/blog/claude-code-agent-teams/ - 2026-10-08T00:00:00.000Z - 2026-10-08T00:00:00.000Z - Claude Code agent teams, checked 8 Oct 2026: what they are, the experimental setting that turns them on, how they differ from subagents, token cost and limits. - - - Claude Haiku 5.5: price, benchmarks and where it fits - - https://munderdiffl.in/blog/claude-haiku-5-5/ - 2026-10-08T00:00:00.000Z - 2026-10-08T00:00:00.000Z - Claude Haiku 5.5 is Anthropic's new small model. Its tiered price, Anthropic's own scores and how to pick it in Claude Code, checked 8 Oct 2026. - diff --git a/docs/blog/gemini-4-argon-inside-google/index.html b/docs/blog/gemini-4-argon-inside-google/index.html index 660bbc903f..beb03d585d 100644 --- a/docs/blog/gemini-4-argon-inside-google/index.html +++ b/docs/blog/gemini-4-argon-inside-google/index.html @@ -266,6 +266,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/gemini-4-argon/index.html b/docs/blog/gemini-4-argon/index.html index 7e1431f9f2..6b46a1c5f4 100644 --- a/docs/blog/gemini-4-argon/index.html +++ b/docs/blog/gemini-4-argon/index.html @@ -186,9 +186,10 @@

Gemini 4 Argon: Google's Flagship Model Shares a Name With a Gas That Ba

Our view: Gemini 4 Argon is worth a test on your longest agent jobs, but the launch price is a countdown. Google put Gemini 4 Argon on general release on 13 October 2026 at $2 input and $10 output per 1M tokens through 30 November 2026. Checked 13 Oct 2026.

-

New models drive coding agents. Munder Difflin is free and open source: a desktop app that runs a team of coding agents such as Claude Code, Codex and Gemini CLI on your own computer. Gemini 4 Argon is already in the app’s model pickers for Antigravity and Cursor, added by a pull request merged on 13 Oct 2026. The install guide covers setup, and the Concepts hub explains the terms.

+

New models end up inside the agents you run. Munder Difflin is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It runs engines such as Claude Code, Codex and Gemini CLI. Gemini 4 Argon is already in the app’s model pickers for Antigravity and Cursor, added by a pull request merged on 13 Oct 2026. The install guide covers setup, and the Concepts hub explains the terms.

What is Gemini 4 Argon?

-

Gemini 4 Argon is Google’s newest top model, built for long jobs in coding, office work and security. Google’s developer post of 13 October 2026 calls it “our frontier model for complex workflows across real-world software engineering, enterprise knowledge work, and cybersecurity defense”.

+

Gemini 4 Argon is Google’s top model on general release, built for long jobs in coding, office work and security. Google’s developer post of 13 October 2026 calls it “our frontier model for complex workflows across real-world software engineering, enterprise knowledge work, and cybersecurity defense”.

+

Announced 28 Oct 2026, Google’s next frontier model: Gemini 4 Carbon.

Google’s posts do not say why it is called Argon. The element is a noble gas that reacts with almost nothing, which is not the sales pitch here.

The rows come from Google’s model card and models page, read on 13 Oct 2026.

@@ -407,6 +408,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/gemini-4-carbon/index.html b/docs/blog/gemini-4-carbon/index.html new file mode 100644 index 0000000000..bf33130016 --- /dev/null +++ b/docs/blog/gemini-4-carbon/index.html @@ -0,0 +1,496 @@ + + + + + + + + +Gemini 4 Carbon (Oct 2026): Price, Access, Scores vs Argon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +

Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026)

+

Gemini 4 Carbon is Google's new frontier model, so far for a group of cyber defenders: its launch price, who can use it and how it compares to Argon.

+ +
+ +
Title card on white. Gemini 4 Carbon in large ink type, a Concepts pill, the line Early access, Argon's price, Checked 29 Oct 2026, and two blocks labelled Argon and Carbon on a two step podium
+ +
+
+

Gemini 4 Carbon is Google’s new frontier model, announced 28 Oct 2026, and you cannot use it yet unless you are one of the cyber defenders in its first group. Google’s post of 28 Oct 2026 says it will launch at Argon’s introductory price, $2 input and $10 output per million tokens.

+

New models end up inside the agents you run. Munder Difflin is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It runs engines such as Claude Code, Codex and Gemini CLI. It does not offer Gemini 4 Carbon: on 29 Oct 2026 Google had published no Carbon model ID for developers. The install guide covers setup, and the Concepts hub explains the terms.

+

What is Gemini 4 Carbon?

+

Gemini 4 Carbon is the model Google placed above Gemini 4 Argon, aimed at long engineering jobs and security work. Google’s launch post of 28 October 2026 calls it “our strongest model with state-of-the-art cybersecurity and long horizon capabilities”.

+

The post says Carbon is “built for sustained agentic workflows” and that Google’s teams have seen it “run for days” on multi step engineering tasks, such as finding the root cause of subtle bugs across large codebases. It builds on Argon, which the same post says launched two weeks earlier.

+
Animation. On a white background, a two step podium stands empty. A block labelled Argon drops onto the lower step with a tag Open now, then a block labelled Carbon drops onto the higher step with a tag Early access.
Carbon sits above Argon in Google's Gemini 4 line, per Google's launch post of 28 Oct 2026.
+

Who can use Gemini 4 Carbon?

+

Only a small group for now. Google says that “starting this week” it will give Carbon to a subset of cyber defenders, then “gradually phase access to additional trusted partners” through its Fairwind Program. Developers, businesses and consumers come after that, “as soon as possible”, with no date. Until then nobody outside those groups can use it, in the Gemini API or anywhere else.

+

Google says it is gathering feedback and working on guardrails first, and that it takes part in the U.S. government’s voluntary process for testing models before release. On 29 Oct 2026 the Gemini API models page and pricing page listed Gemini 4 Argon but had no Carbon entry and no Carbon model ID.

+

Argon followed the same path. Google’s developer post of 13 October 2026 opened it on the paid tier of the Gemini API in Google AI Studio and Android Studio, and to Google AI Ultra subscribers in AI Studio and Google Antigravity.

+
Animation. On a white background, a row of three ticket stubs is torn off one at a time. The first reads Cyber defenders and is stamped with a mint tick. The second reads Trusted partners and the third reads Developers, both marked Later.
Google's rollout order for Carbon: cyber defenders, then trusted partners through Fairwind, then developers, per its post of 28 Oct 2026.
+

How much will Gemini 4 Carbon cost?

+

The same as Argon at launch. Google’s post of 28 Oct 2026 says Carbon “will launch at the same introductory price” as Argon: $2 per million input tokens and $10 per million output tokens, with cached input tokens at 95% off the input price. Its footnote adds that after the introductory period, $4 input and $20 output per million tokens apply (28 Oct 2026).

+

The post does not say when Carbon’s introductory period ends. For Argon, the pricing page read on 29 Oct 2026 gives the dates:

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Gemini 4 Argon, paid tierThrough 30 Nov 2026From 1 Dec 2026
Input, per 1M tokens$2.00$4.00
Output, per 1M tokens, thinking included$10.00$20.00
Context caching, per 1M tokens$0.10$0.20
+
+

The same page says Argon “is not available on the Free tier”. Gemini 4 Argon pricing has the batch prices.

+

How does Gemini 4 Carbon compare to Argon?

+

On Google’s numbers, Carbon is stronger on security work and safer in agent tasks. The test rows come from Google’s launch post of 28 October 2026; Argon’s access and price dates come from its developer post and the pricing page read on 29 Oct 2026.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Checked 29 Oct 2026Gemini 4 CarbonGemini 4 Argon
Who can use itA subset of cyber defendersPaid tier of the Gemini API
Launch price per 1M tokens$2 in, $10 out (introductory)$2 in, $10 out through 30 Nov 2026
Gray Swan indirect prompt injection, attack success0.0%0.7%
Unsupported claims, internal testAbout 2x fewerBaseline
Secure code success, internal testMore than 2xBaseline
+
+

Google also gives these Carbon results on their own, from external tests it says were “evaluated without guardrails”: 88.2% on SEC-bench Pro for finding vulnerabilities, 54.8% on ExploitGym for exploitation, and 71.0% on Collinear’s CWE-bench for patching. Google says Carbon ranks first on version 5.0 of the Artificial Analysis Intelligence Index at 59, and fourth on WebDev Arena at 1768, up 89 points.

+
Animation. On a white background, a balance scale tips as two weights drop onto its pans. The weight labelled Argon reads 0.7%, the weight labelled Carbon reads 0.0%, and a card below reads Prompt injection.
Gray Swan indirect prompt injection attack success: 0.7% for Argon, 0.0% for Carbon, per Google's post of 28 Oct 2026.
+

What did Google change in how Carbon behaves?

+

Google lists these changes in its post of 28 Oct 2026, each from its own testing:

+
    +
  • Fewer shortcuts. Successful cheating on Terminal-Bench 4.0 fell to 0.0%, with attempts at 0.4%, and high severity misalignment alerts in live coding with Google’s teams dropped “by almost 80%”.
  • +
  • More honest output. About 2x fewer unsupported claims than Argon. Carbon puts caveats in the deliverable or lists what is still needed instead of fabricating.
  • +
  • Asks when unclear. It fetches sources and shows the user discrepancies before acting.
  • +
  • Stays in scope. Overreach fell 26% and under service 29%.
  • +
+

Our view: these are vendor numbers from one post, so read them as Google’s claims until outside tests appear. For long agent jobs today, Argon is the one you can actually open. How to use Gemini 4 Argon covers setup, and Gemini 4 Argon vs Claude Opus 5.5 puts it beside Anthropic’s model.

+

Gemini 4 Carbon at a glance, checked 29 Oct 2026

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Gemini 4 Carbon
MakerGoogle DeepMind
Announced28 Oct 2026
AccessCyber defenders first, then trusted partners through Fairwind, then developers
Launch price$2 input and $10 output per 1M tokens, introductory
Price after the introductory period$4 input and $20 output per 1M tokens
Cached input95% off the input price
Public model IDNone published, checked 29 Oct 2026
In the Gemini API pricing pageNot yet
+
+ + + + +
+

FAQ

+ +
+

When was Gemini 4 Carbon released?

+

Google announced Gemini 4 Carbon on 28 October 2026. Its post says Carbon goes to a subset of cyber defenders starting that week, then gradually to additional trusted partners through the Fairwind Program, and to developers, businesses and consumers later, with no date given.

+
+ +
+

How much does Gemini 4 Carbon cost?

+

Google's launch post of 28 Oct 2026 says Carbon will launch at the same introductory price as Argon: $2 per million input tokens and $10 per million output tokens, with cached input at 95% off the input price. After the introductory period, $4 input and $20 output per million tokens will apply, the same post of 28 Oct 2026 says, with no end date given.

+
+ +
+

Can I use Gemini 4 Carbon in the Gemini API today?

+

Not as a general developer. On 29 Oct 2026 Google's Gemini API pricing page listed Gemini 4 Argon but not Carbon, and the launch post says Carbon reaches developers, businesses and consumers after early access for cyber defenders.

+
+ +
+

Is Gemini 4 Carbon better than Gemini 4 Argon?

+

On Google's own figures, yes on safety and security tests: Carbon has a 0.0% attack success rate on Gray Swan's indirect prompt injection test against 0.7% for Argon, about 2x fewer unsupported claims, and more than 2x the success rate on secure code in internal tests. These are Google's numbers, published 28 Oct 2026.

+
+ +
+

What should I use until Carbon is open?

+

Gemini 4 Argon. On 29 Oct 2026 Google's pricing page listed it on the paid tier of the Gemini API at $2 input and $10 output per million tokens through 30 November 2026, and $4 and $20 from 1 December 2026.

+
+ +
+ + + +
+ + +
+ + + + +
+ + +
+ +
+ + + + + + diff --git a/docs/blog/generative-engine-optimization-techniques/index.html b/docs/blog/generative-engine-optimization-techniques/index.html index 31959b04f5..c98fb778b8 100644 --- a/docs/blog/generative-engine-optimization-techniques/index.html +++ b/docs/blog/generative-engine-optimization-techniques/index.html @@ -335,6 +335,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/gpt-6-1-terra/index.html b/docs/blog/gpt-6-1-terra/index.html index 8417454557..4fcdb35772 100644 --- a/docs/blog/gpt-6-1-terra/index.html +++ b/docs/blog/gpt-6-1-terra/index.html @@ -378,56 +378,56 @@

FAQ

+ + + + + + + + +
+
+ - -
-
- - - - - - - -
-
-
+
diff --git a/docs/blog/is-claude-code-max-worth-it/index.html b/docs/blog/is-claude-code-max-worth-it/index.html index 51b8540d6e..954f1b13ed 100644 --- a/docs/blog/is-claude-code-max-worth-it/index.html +++ b/docs/blog/is-claude-code-max-worth-it/index.html @@ -411,6 +411,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/is-claude-code-open-source/index.html b/docs/blog/is-claude-code-open-source/index.html index 1b1d923465..0ae8034112 100644 --- a/docs/blog/is-claude-code-open-source/index.html +++ b/docs/blog/is-claude-code-open-source/index.html @@ -292,6 +292,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/is-ollama-good-for-coding/index.html b/docs/blog/is-ollama-good-for-coding/index.html index 96461f05e8..602d8701a1 100644 --- a/docs/blog/is-ollama-good-for-coding/index.html +++ b/docs/blog/is-ollama-good-for-coding/index.html @@ -332,6 +332,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/long-running-agents-the-2026-shift/index.html b/docs/blog/long-running-agents-the-2026-shift/index.html index b8d62bb7f3..6dc88f4b5f 100644 --- a/docs/blog/long-running-agents-the-2026-shift/index.html +++ b/docs/blog/long-running-agents-the-2026-shift/index.html @@ -350,6 +350,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/loop-engineering-for-ai-agents/index.html b/docs/blog/loop-engineering-for-ai-agents/index.html index c9bccc35ff..56bb7fc11f 100644 --- a/docs/blog/loop-engineering-for-ai-agents/index.html +++ b/docs/blog/loop-engineering-for-ai-agents/index.html @@ -291,6 +291,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/mistral-large-4/index.html b/docs/blog/mistral-large-4/index.html index 58f0abbb97..d586f39dc7 100644 --- a/docs/blog/mistral-large-4/index.html +++ b/docs/blog/mistral-large-4/index.html @@ -346,6 +346,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/munder-difflin-faq/index.html b/docs/blog/munder-difflin-faq/index.html index 314a5dfcc2..b44b8a1a77 100644 --- a/docs/blog/munder-difflin-faq/index.html +++ b/docs/blog/munder-difflin-faq/index.html @@ -320,6 +320,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/muse-wonder/index.html b/docs/blog/muse-wonder/index.html index 519a938dd3..531605937a 100644 --- a/docs/blog/muse-wonder/index.html +++ b/docs/blog/muse-wonder/index.html @@ -403,6 +403,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/open-source-ai-tools-on-purpose/index.html b/docs/blog/open-source-ai-tools-on-purpose/index.html index a132194d94..f779756def 100644 --- a/docs/blog/open-source-ai-tools-on-purpose/index.html +++ b/docs/blog/open-source-ai-tools-on-purpose/index.html @@ -322,6 +322,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/openai-decisions-api/index.html b/docs/blog/openai-decisions-api/index.html index 6e4e7c4287..1357265a32 100644 --- a/docs/blog/openai-decisions-api/index.html +++ b/docs/blog/openai-decisions-api/index.html @@ -361,6 +361,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/openai-text-watermarking/index.html b/docs/blog/openai-text-watermarking/index.html index 9813bd5808..221e9030ac 100644 --- a/docs/blog/openai-text-watermarking/index.html +++ b/docs/blog/openai-text-watermarking/index.html @@ -372,6 +372,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/opencode-2-0/index.html b/docs/blog/opencode-2-0/index.html index 8ac572d351..06399c408d 100644 --- a/docs/blog/opencode-2-0/index.html +++ b/docs/blog/opencode-2-0/index.html @@ -336,6 +336,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/reflection-beam/index.html b/docs/blog/reflection-beam/index.html index 97fb89816d..9696592eaa 100644 --- a/docs/blog/reflection-beam/index.html +++ b/docs/blog/reflection-beam/index.html @@ -351,6 +351,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/review-agent-work-where-it-happens/index.html b/docs/blog/review-agent-work-where-it-happens/index.html index ee4619bc81..66bbe82eda 100644 --- a/docs/blog/review-agent-work-where-it-happens/index.html +++ b/docs/blog/review-agent-work-where-it-happens/index.html @@ -282,6 +282,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/shareable-agent-roles/index.html b/docs/blog/shareable-agent-roles/index.html index df611ce66b..b3a324022a 100644 --- a/docs/blog/shareable-agent-roles/index.html +++ b/docs/blog/shareable-agent-roles/index.html @@ -324,6 +324,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/tags/ai-agents/index.html b/docs/blog/tags/ai-agents/index.html index a617120829..759b384d75 100644 --- a/docs/blog/tags/ai-agents/index.html +++ b/docs/blog/tags/ai-agents/index.html @@ -105,11 +105,27 @@

Tag

#AI Agents

-

41 posts tagged AI Agents.

+

42 posts tagged AI Agents.

-
+ +
diff --git a/docs/blog/tags/claude-code/index.html b/docs/blog/tags/claude-code/index.html index b56bd55b8c..103da2a921 100644 --- a/docs/blog/tags/claude-code/index.html +++ b/docs/blog/tags/claude-code/index.html @@ -105,11 +105,27 @@

Tag

#Claude Code

-

102 posts tagged Claude Code.

+

103 posts tagged Claude Code.

+
diff --git a/docs/blog/tags/concepts/index.html b/docs/blog/tags/concepts/index.html index 9d724d85cf..45bab0049e 100644 --- a/docs/blog/tags/concepts/index.html +++ b/docs/blog/tags/concepts/index.html @@ -105,11 +105,27 @@

Tag

#Concepts

-

54 posts tagged Concepts.

+

55 posts tagged Concepts.

+
diff --git a/docs/blog/tags/daily-brief/index.html b/docs/blog/tags/daily-brief/index.html index 406389e4d1..610390e076 100644 --- a/docs/blog/tags/daily-brief/index.html +++ b/docs/blog/tags/daily-brief/index.html @@ -105,11 +105,27 @@

Tag

#Daily Brief

-

20 posts tagged Daily Brief.

+

21 posts tagged Daily Brief.

+
diff --git a/docs/blog/tags/models/index.html b/docs/blog/tags/models/index.html index f2a980408e..671dd5826a 100644 --- a/docs/blog/tags/models/index.html +++ b/docs/blog/tags/models/index.html @@ -105,11 +105,27 @@

Tag

#Models

-

1 post tagged Models.

+

2 posts tagged Models.

+
diff --git a/docs/blog/tags/open-source/index.html b/docs/blog/tags/open-source/index.html index 139e834824..bd6b0c4b0a 100644 --- a/docs/blog/tags/open-source/index.html +++ b/docs/blog/tags/open-source/index.html @@ -105,11 +105,27 @@

Tag

#Open Source

-

88 posts tagged Open Source.

+

89 posts tagged Open Source.

+
diff --git a/docs/blog/tags/skills/index.html b/docs/blog/tags/skills/index.html index 43ec023db4..3e1009ff2b 100644 --- a/docs/blog/tags/skills/index.html +++ b/docs/blog/tags/skills/index.html @@ -105,11 +105,27 @@

Tag

#Skills

-

14 posts tagged Skills.

+

15 posts tagged Skills.

-
+ +
diff --git a/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html b/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html index 2ba0aa739c..e5e372481c 100644 --- a/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html +++ b/docs/blog/the-clone-army-trap-mixed-swarm-vs-identical-agents/index.html @@ -358,6 +358,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/topics/comparisons/index.html b/docs/blog/topics/comparisons/index.html index d1be34f0b8..eeebf938fe 100644 --- a/docs/blog/topics/comparisons/index.html +++ b/docs/blog/topics/comparisons/index.html @@ -116,11 +116,11 @@

comparisons

Honest side-by-sides with the other ways to guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/concepts/index.html b/docs/blog/topics/concepts/index.html index f84fe52c1e..78456fbc49 100644 --- a/docs/blog/topics/concepts/index.html +++ b/docs/blog/topics/concepts/index.html @@ -116,11 +116,11 @@

concepts

The ideas underneath the product — harnesses, guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 @@ -138,6 +138,22 @@

concepts

The ideas underneath the product — harnesses,

+
diff --git a/docs/blog/topics/guides/index.html b/docs/blog/topics/guides/index.html index 8078a49229..0ab7746ffe 100644 --- a/docs/blog/topics/guides/index.html +++ b/docs/blog/topics/guides/index.html @@ -116,11 +116,11 @@

guides

Step-by-step walkthroughs you can follow today guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/index.html b/docs/blog/topics/index.html index baa2ccc887..813889656f 100644 --- a/docs/blog/topics/index.html +++ b/docs/blog/topics/index.html @@ -126,7 +126,7 @@

guides

concepts

-

57 posts.

+

58 posts.

View topic →
@@ -144,7 +144,7 @@

comparisons

news

-

21 posts.

+

22 posts.

View topic →
@@ -200,19 +200,19 @@

memory

diff --git a/docs/blog/topics/internals/index.html b/docs/blog/topics/internals/index.html index 93c5351375..67a545a6d2 100644 --- a/docs/blog/topics/internals/index.html +++ b/docs/blog/topics/internals/index.html @@ -116,11 +116,11 @@

internals

How the machine actually works: postmortems, a guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/memory/index.html b/docs/blog/topics/memory/index.html index d7378ef951..f717cd3ed0 100644 --- a/docs/blog/topics/memory/index.html +++ b/docs/blog/topics/memory/index.html @@ -116,11 +116,11 @@

memory

How agents remember across sessions — and how a guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/news/index.html b/docs/blog/topics/news/index.html index 91388619b4..0833278aa6 100644 --- a/docs/blog/topics/news/index.html +++ b/docs/blog/topics/news/index.html @@ -116,11 +116,11 @@

news

Agent Tools Today: a daily brief of the top five la guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 @@ -138,6 +138,22 @@

news

Agent Tools Today: a daily brief of the top five la

+
diff --git a/docs/blog/topics/orchestration/index.html b/docs/blog/topics/orchestration/index.html index 68a54bcdf4..eab781c190 100644 --- a/docs/blog/topics/orchestration/index.html +++ b/docs/blog/topics/orchestration/index.html @@ -116,11 +116,11 @@

orchestration

Patterns for making one boss agent run a f guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/story/index.html b/docs/blog/topics/story/index.html index 1eac16113e..6a87327f1c 100644 --- a/docs/blog/topics/story/index.html +++ b/docs/blog/topics/story/index.html @@ -116,11 +116,11 @@

story

Launches, releases, and the occasional confession guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/topics/use-cases/index.html b/docs/blog/topics/use-cases/index.html index f869f75235..4c70732cbc 100644 --- a/docs/blog/topics/use-cases/index.html +++ b/docs/blog/topics/use-cases/index.html @@ -116,11 +116,11 @@

use-cases

Real workflows the hive actually runs — writ guides60 - concepts57 + concepts58 comparisons55 - news21 + news22 internals19 diff --git a/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html b/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html index ca1221c3cd..3d2c618ef8 100644 --- a/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html +++ b/docs/blog/voice-as-a-control-plane-for-agent-fleets/index.html @@ -284,6 +284,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-are-claude-code-agents/index.html b/docs/blog/what-are-claude-code-agents/index.html index 1c879f6d7b..7483c0ff14 100644 --- a/docs/blog/what-are-claude-code-agents/index.html +++ b/docs/blog/what-are-claude-code-agents/index.html @@ -302,6 +302,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-a-multi-agent-harness/index.html b/docs/blog/what-is-a-multi-agent-harness/index.html index 091fe49b95..bda1c47b5a 100644 --- a/docs/blog/what-is-a-multi-agent-harness/index.html +++ b/docs/blog/what-is-a-multi-agent-harness/index.html @@ -373,6 +373,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-aeo-for-dev-tools/index.html b/docs/blog/what-is-aeo-for-dev-tools/index.html index 6f968157e8..d3d55ea1c3 100644 --- a/docs/blog/what-is-aeo-for-dev-tools/index.html +++ b/docs/blog/what-is-aeo-for-dev-tools/index.html @@ -424,6 +424,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-an-agent-development-environment/index.html b/docs/blog/what-is-an-agent-development-environment/index.html index 812a265b95..71aca3fa0f 100644 --- a/docs/blog/what-is-an-agent-development-environment/index.html +++ b/docs/blog/what-is-an-agent-development-environment/index.html @@ -287,6 +287,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-an-mcp-server/index.html b/docs/blog/what-is-an-mcp-server/index.html index ef52d0029a..4f7762db53 100644 --- a/docs/blog/what-is-an-mcp-server/index.html +++ b/docs/blog/what-is-an-mcp-server/index.html @@ -292,6 +292,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-chatgpt-dots/index.html b/docs/blog/what-is-chatgpt-dots/index.html index 6d1e2bac98..ed1701b0a2 100644 --- a/docs/blog/what-is-chatgpt-dots/index.html +++ b/docs/blog/what-is-chatgpt-dots/index.html @@ -335,6 +335,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-claude-agent-sdk/index.html b/docs/blog/what-is-claude-agent-sdk/index.html index 6771651b53..85125523e5 100644 --- a/docs/blog/what-is-claude-agent-sdk/index.html +++ b/docs/blog/what-is-claude-agent-sdk/index.html @@ -345,6 +345,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-claude-cowork/index.html b/docs/blog/what-is-claude-cowork/index.html index c2651c78d5..8d90b52de1 100644 --- a/docs/blog/what-is-claude-cowork/index.html +++ b/docs/blog/what-is-claude-cowork/index.html @@ -392,6 +392,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-claude-duet/index.html b/docs/blog/what-is-claude-duet/index.html index 17b506de0d..102b2b9baa 100644 --- a/docs/blog/what-is-claude-duet/index.html +++ b/docs/blog/what-is-claude-duet/index.html @@ -337,50 +337,50 @@

FAQ

Related in Concepts

- +
- + - 4 min + 5 min
-

GPT-6.1 Terra: Price, Specs and How to Use It in Codex (Oct 2026)

-

GPT-6.1 Terra is OpenAI's fast new model for images, computer use and writing: price, specs and how to pick it in Codex, checked 27 Oct 2026.

+

Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026)

+

Gemini 4 Carbon is Google's new frontier model, so far for a group of cyber defenders: its launch price, who can use it and how it compares to Argon.

Concepts - Read → + Read →
diff --git a/docs/blog/what-is-codex/index.html b/docs/blog/what-is-codex/index.html index 7dc5301d8b..427785a16c 100644 --- a/docs/blog/what-is-codex/index.html +++ b/docs/blog/what-is-codex/index.html @@ -349,6 +349,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-gemini-spark/index.html b/docs/blog/what-is-gemini-spark/index.html index 840ffa8169..b0d0125209 100644 --- a/docs/blog/what-is-gemini-spark/index.html +++ b/docs/blog/what-is-gemini-spark/index.html @@ -376,6 +376,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-harness-engineering/index.html b/docs/blog/what-is-harness-engineering/index.html index ee23fff7fe..7f917ac393 100644 --- a/docs/blog/what-is-harness-engineering/index.html +++ b/docs/blog/what-is-harness-engineering/index.html @@ -288,6 +288,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-hermes-agent/index.html b/docs/blog/what-is-hermes-agent/index.html index ba37a0e059..2af1eb9377 100644 --- a/docs/blog/what-is-hermes-agent/index.html +++ b/docs/blog/what-is-hermes-agent/index.html @@ -393,6 +393,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-nanoclaw/index.html b/docs/blog/what-is-nanoclaw/index.html index 98aa2ef33e..132eb56d72 100644 --- a/docs/blog/what-is-nanoclaw/index.html +++ b/docs/blog/what-is-nanoclaw/index.html @@ -353,6 +353,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-opencode/index.html b/docs/blog/what-is-opencode/index.html index 219f4862fd..31e9c211e1 100644 --- a/docs/blog/what-is-opencode/index.html +++ b/docs/blog/what-is-opencode/index.html @@ -410,6 +410,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-pi-agent/index.html b/docs/blog/what-is-pi-agent/index.html index b7ed747a95..d054b1fa67 100644 --- a/docs/blog/what-is-pi-agent/index.html +++ b/docs/blog/what-is-pi-agent/index.html @@ -364,6 +364,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-roo-code/index.html b/docs/blog/what-is-roo-code/index.html index 30eb4fc8f6..175cfccd67 100644 --- a/docs/blog/what-is-roo-code/index.html +++ b/docs/blog/what-is-roo-code/index.html @@ -326,6 +326,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-vibe-coding/index.html b/docs/blog/what-is-vibe-coding/index.html index 3ce78fd415..cb649e1ca2 100644 --- a/docs/blog/what-is-vibe-coding/index.html +++ b/docs/blog/what-is-vibe-coding/index.html @@ -277,6 +277,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-zcode/index.html b/docs/blog/what-is-zcode/index.html index 1a20727aa7..67aabd78fd 100644 --- a/docs/blog/what-is-zcode/index.html +++ b/docs/blog/what-is-zcode/index.html @@ -371,6 +371,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/what-is-zeroclaw/index.html b/docs/blog/what-is-zeroclaw/index.html index 0c22cf5386..17d12a666d 100644 --- a/docs/blog/what-is-zeroclaw/index.html +++ b/docs/blog/what-is-zeroclaw/index.html @@ -312,6 +312,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/when-do-agents-need-an-agent-protocol/index.html b/docs/blog/when-do-agents-need-an-agent-protocol/index.html index 3b375579af..01de1db94a 100644 --- a/docs/blog/when-do-agents-need-an-agent-protocol/index.html +++ b/docs/blog/when-do-agents-need-an-agent-protocol/index.html @@ -332,6 +332,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/blog/why-cli-agents-are-powerful/index.html b/docs/blog/why-cli-agents-are-powerful/index.html index 3f77455c03..f84134ec0d 100644 --- a/docs/blog/why-cli-agents-are-powerful/index.html +++ b/docs/blog/why-cli-agents-are-powerful/index.html @@ -370,6 +370,22 @@

FAQ

Related in Concepts

+ -
diff --git a/docs/llms.txt b/docs/llms.txt index ceedc522c8..9f681663c1 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -68,7 +68,7 @@ Saturday 24 October 2026. ## Blog -254 posts, grouped by topic, newest first in each topic. Topic hubs: https://munderdiffl.in/blog/topics/ +256 posts, grouped by topic, newest first in each topic. Topic hubs: https://munderdiffl.in/blog/topics/ ### guides @@ -135,6 +135,7 @@ Saturday 24 October 2026. ### concepts +- [Gemini 4 Carbon: Price, Access and How It Compares to Argon (Oct 2026)](https://munderdiffl.in/blog/gemini-4-carbon/): Gemini 4 Carbon is Google's new frontier model, so far for a group of cyber defenders: its launch price, who can use it and how it compares to Argon. - [GPT-6.1 Terra: Price, Specs and How to Use It in Codex (Oct 2026)](https://munderdiffl.in/blog/gpt-6-1-terra/): GPT-6.1 Terra is OpenAI's fast new model for images, computer use and writing: price, specs and how to pick it in Codex, checked 27 Oct 2026. - [What Is Claude Duet? Anthropic's Proactive Agent App, Explained](https://munderdiffl.in/blog/what-is-claude-duet/): Claude Duet is Anthropic's proactive agent app, in research preview since 21 Oct 2026: who can join, how it works, what it asks first and its limits. - [DeepSeek V4.1 Flash 1017: What Changed, the Price and Claude Code Setup](https://munderdiffl.in/blog/deepseek-v4-1-flash-1017/): DeepSeek V4.1 Flash 1017, released 17 Oct 2026 under MIT: what changed, DeepSeek's benchmarks, the API price and Claude Code setup. @@ -253,6 +254,7 @@ Saturday 24 October 2026. ### news +- [Agent Tools Today, 29 Oct 2026: Gemini 4 Carbon, Copilot Connectors, OpenCode Goals](https://munderdiffl.in/blog/agent-tools-today-2026-10-29/): The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 28 to 29 Oct 2026, each with its source and date. - [Agent Tools Today, 26 Oct 2026: Kimi K3.1 Pro, Unified Claude Enterprise, ThinkRail](https://munderdiffl.in/blog/agent-tools-today-2026-10-26/): The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents from 23 to 26 Oct 2026, each with its source. - [Agent Tools Today, 23 Oct 2026: Claude Duet, OpenAI CLI, Nvidia OpenShell](https://munderdiffl.in/blog/agent-tools-today-2026-10-23/): The top launches, skills and MCP servers, multi agent moves, rising repos and arguments in coding agents on 23 Oct 2026, each with its source. - [Black October: What PHP2Shell Is and How to Patch (Oct 2026)](https://munderdiffl.in/blog/black-october-php2shell/): Black October is the scramble around PHP2Shell, two critical PHP flaws fixed on 21 Oct 2026. Who found them, the fixed versions and how to patch. diff --git a/docs/sitemap.xml b/docs/sitemap.xml index f3eeda71c1..065901bbba 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -10,7 +10,7 @@ https://munderdiffl.in/ - 2026-10-27 + 2026-10-29 weekly 1.0 @@ -24,6 +24,18 @@ https://munderdiffl.in/blog/daily0.9 https://munderdiffl.in/blog/topics/weekly0.6 https://munderdiffl.in/blog/about/monthly0.4 + + https://munderdiffl.in/blog/agent-tools-today-2026-10-29/ + 2026-10-29 + monthly + 0.8 + + + https://munderdiffl.in/blog/gemini-4-carbon/ + 2026-10-29 + monthly + 0.8 + https://munderdiffl.in/blog/gpt-6-1-terra/ 2026-10-27