diff --git a/packages/app/content/blog/kimi-k3-the-manos-the-mythos-the.mdx b/packages/app/content/blog/kimi-k3-the-manos-the-mythos-the.mdx
index 43e244de7..f4d11a898 100644
--- a/packages/app/content/blog/kimi-k3-the-manos-the-mythos-the.mdx
+++ b/packages/app/content/blog/kimi-k3-the-manos-the-mythos-the.mdx
@@ -686,7 +686,7 @@ This benchmark is a big step up from our previous 8k1k/1k1k benchmark, as it tru
For Kimi K3, Day 0 bringup was easier than DSv4 due to better documentation and preparation ahead of weights release. Appropriate images and a speculative decoder model were released at the same time as the weights.
diff --git a/packages/app/content/blog/ultra-high-interactivity-on-nvidia.mdx b/packages/app/content/blog/ultra-high-interactivity-on-nvidia.mdx
index ef532f0e5..b6f9f3ef6 100644
--- a/packages/app/content/blog/ultra-high-interactivity-on-nvidia.mdx
+++ b/packages/app/content/blog/ultra-high-interactivity-on-nvidia.mdx
@@ -3,6 +3,7 @@ title: 'Ultra-High Interactivity on NVIDIA GPUs? TileRT on InferenceX'
subtitle: 'Can TileRT software on NVIDIA GPUs compete with Cerebras, Groq LPU, and SambaNova? Batch size 1, disaggregated engine, high-throughput prefill engine, high-interactivity decode engine'
date: '2026-08-10'
publishDate: '2026-08-10'
+modifiedDate: '2026-08-18'
tags:
- benchmark
- gpu
@@ -13,6 +14,8 @@ tags:
- tilert
- vllm
- glm5
+ - agentx
+ - agentic
---
_Originally published on the [SemiAnalysis newsletter](https://newsletter.semianalysis.com/p/ultra-high-interactivity-on-nvidia) on August 10, 2026._
@@ -235,9 +238,9 @@ Work is being done to simplify this, especially as software development can be a
AI coding agents accelerate tuning within known templates, but novel transformations still require expert judgment. A monolithic persistent kernel also reduces the usefulness of conventional per-kernel profiler timelines, making automated feedback loops more difficult.
-## Next steps with TileRT and InferenceX
+## Next steps with TileRT
-We are actively working on moving TileRT benchmarking from InferenceX's single-turn 8k/1k to our new agentic coding benchmark, which we call AgentX. This scenario replays real Claude Code and Codex traces with long-context, multi-turn requests, realistic subagent activity, and dynamic tool-use delays. Its median input length is 140k tokens, while the theoretical median cache-hit rate roofline reaches 99.2%.
+AgentX, InferenceX's long-context, multi-turn coding scenario, is now live for supported models and serving stacks. It replays privacy-preserving workload shapes derived from real Claude Code and Codex sessions, with long-context, multi-turn requests, realistic subagent activity, and dynamic tool-use delays. Its median input length is 140k tokens, while the theoretical median cache-hit rate roofline reaches 99.2%. Extending TileRT benchmarking from its current single-turn 8k/1k workload to AgentX remains the next step for this serving stack.
对 Kimi K3 来说,Day 0 的 bringup 比 DSv4 更轻松,因为权重发布前的文档和准备工作更充分。合适的镜像和投机解码模型与权重同时发布。
diff --git a/packages/app/content/blog/zh/ultra-high-interactivity-on-nvidia.mdx b/packages/app/content/blog/zh/ultra-high-interactivity-on-nvidia.mdx
index 041ee64b3..37e499e17 100644
--- a/packages/app/content/blog/zh/ultra-high-interactivity-on-nvidia.mdx
+++ b/packages/app/content/blog/zh/ultra-high-interactivity-on-nvidia.mdx
@@ -3,6 +3,7 @@ title: '在 NVIDIA GPU 上实现超高交互性?TileRT 登陆 InferenceX'
subtitle: '运行在 NVIDIA GPU 上的 TileRT 软件能否与 Cerebras、Groq LPU、SambaNova 竞争?批大小为 1、分离式引擎、高吞吐量预填充引擎、高交互性解码引擎'
date: '2026-08-10'
publishDate: '2026-08-10'
+modifiedDate: '2026-08-18'
tags:
- benchmark
- gpu
@@ -13,6 +14,8 @@ tags:
- tilert
- vllm
- glm5
+ - agentx
+ - agentic
---
_本文最初于 2026 年 8 月 10 日发布在 [SemiAnalysis 通讯](https://newsletter.semianalysis.com/p/ultra-high-interactivity-on-nvidia)。_
@@ -235,9 +238,9 @@ TileRT 继承了 ASIC 厂商最大的弱点。静态提前编译意味着模型
AI 编码智能体能在已知模板内加速调优,但新颖的变换仍需专家判断。此外,单体式持久化 kernel 也削弱了传统逐 kernel 性能剖析时间线的作用,使自动化反馈闭环更加困难。
-## TileRT 与 InferenceX 的下一步
+## TileRT 的下一步
-我们正在积极推进,将 TileRT 的基准测试从 InferenceX 的单轮 8k/1k 场景扩展到我们新的智能体编码基准——AgentX。该场景回放真实的 Claude Code 与 Codex 轨迹,包含长上下文、多轮请求、真实的子智能体活动与动态工具调用延迟。其输入长度中位数为 140k tokens,理论缓存命中率中位数屋顶线可达 99.2%。
+InferenceX 的长上下文多轮编码场景 AgentX 现已在具备对应数据的模型与服务栈上正式上线。它回放从真实 Claude Code 与 Codex 会话衍生出的隐私保护工作负载形态,包含长上下文、多轮请求、真实的 subagent 活动与动态工具调用延迟。其输入长度中位数为 140k tokens,理论缓存命中率中位数屋顶线可达 99.2%。对 TileRT 而言,下一步仍是将目前的单轮 8k/1k 基准测试扩展到 AgentX。
{
.should('not.contain.text', 'Agentic');
});
- it('explains the agentic workload in a tooltip that links to /datasets', () => {
+ it('explains the agentic workload in a tooltip that links to /agentx', () => {
cy.mount();
cy.get('[data-testid="scenario-agentic-info"]').trigger('pointermove', {
pointerType: 'mouse',
@@ -151,7 +151,7 @@ describe('Chart Selectors', () => {
);
cy.get('[data-testid="scenario-agentic-info-link"]')
.should('be.visible')
- .and('have.attr', 'href', '/datasets');
+ .and('have.attr', 'href', '/agentx');
});
it('hides the agentic explainer on fixed-sequence scenarios', () => {
diff --git a/packages/app/cypress/component/dataset-list.cy.tsx b/packages/app/cypress/component/dataset-list.cy.tsx
index ac2e5e611..bdbffe026 100644
--- a/packages/app/cypress/component/dataset-list.cy.tsx
+++ b/packages/app/cypress/component/dataset-list.cy.tsx
@@ -75,7 +75,7 @@ describe('DatasetList', () => {
cy.contains('cc-traces-weka (256k)').should('be.visible');
cy.contains('1,234').should('be.visible'); // conversation_count, localized
cy.contains('82%').should('be.visible'); // cachedPct
- cy.get('a[href="/datasets/cc-traces-weka-full"]').should('exist');
+ cy.get('a[href="/agentx/cc-traces-weka-full"]').should('exist');
});
it('shows the empty state when no datasets are ingested', () => {
diff --git a/packages/app/cypress/component/footer.cy.tsx b/packages/app/cypress/component/footer.cy.tsx
index 6e7916779..99b84e5df 100644
--- a/packages/app/cypress/component/footer.cy.tsx
+++ b/packages/app/cypress/component/footer.cy.tsx
@@ -58,9 +58,9 @@ describe('Footer', () => {
cy.get('[data-testid="footer-link-supporters"]')
.should('contain.text', 'Supporters')
.and('have.attr', 'href', '/quotes');
- cy.get('[data-testid="footer-link-datasets"]')
- .should('contain.text', 'Datasets')
- .and('have.attr', 'href', '/datasets');
+ cy.get('[data-testid="footer-link-agentx"]')
+ .should('contain.text', 'AgentX')
+ .and('have.attr', 'href', '/agentx');
cy.get('[data-testid="footer-link-articles"]')
.should('contain.text', 'Articles')
.and('have.attr', 'href', '/blog');
diff --git a/packages/app/cypress/component/header.cy.tsx b/packages/app/cypress/component/header.cy.tsx
index 4d0d560e4..0e3bc77a8 100644
--- a/packages/app/cypress/component/header.cy.tsx
+++ b/packages/app/cypress/component/header.cy.tsx
@@ -105,22 +105,27 @@ describe('Header', () => {
cy.get('[data-testid="nav-link-compare"]').should('have.attr', 'href', '/compare');
});
- it('shows Datasets as a top-level nav link and highlights dataset child pages', () => {
- cy.get('[data-testid="nav-link-datasets"]')
+ it('shows AgentX as a top-level nav link and highlights AgentX child pages', () => {
+ cy.get('[data-testid="nav-link-agentx"]')
.should('be.visible')
- .and('have.attr', 'href', '/datasets');
+ .and('have.attr', 'href', '/agentx')
+ .find('[data-nav-badge="agentx"]')
+ .should('have.text', 'NEW');
- mountHeader('/datasets/claude-code-traces');
- cy.get('[data-testid="nav-link-datasets"]').should('have.class', 'text-brand');
+ mountHeader('/agentx/claude-code-traces');
+ cy.get('[data-testid="nav-link-agentx"]').should('have.class', 'text-brand');
});
- it('keeps Datasets in the Chinese navigation tree', () => {
- mountHeader('/zh/datasets');
- cy.get('[data-testid="nav-link-datasets"]')
+ it('keeps AgentX in the Chinese navigation tree', () => {
+ mountHeader('/zh/agentx');
+ cy.get('[data-testid="nav-link-agentx"]')
.should('be.visible')
- .and('contain.text', '数据集')
- .and('have.attr', 'href', '/zh/datasets')
+ .and('contain.text', 'AgentX')
+ .and('have.attr', 'href', '/zh/agentx')
.and('have.class', 'text-brand');
+ cy.get('[data-testid="nav-link-agentx"]')
+ .find('[data-nav-badge="agentx"]')
+ .should('have.text', '新');
});
it('keeps footer destinations out of the primary nav', () => {
@@ -151,7 +156,11 @@ describe('Header', () => {
cy.contains('a', 'Overview').should('be.visible').and('have.attr', 'href', '/overview');
cy.contains('a', 'Dashboard').should('be.visible').and('have.attr', 'href', '/inference');
cy.contains('a', 'Comparisons').should('be.visible').and('have.attr', 'href', '/compare');
- cy.contains('a', 'Datasets').should('be.visible').and('have.attr', 'href', '/datasets');
+ cy.contains('a', 'AgentX')
+ .should('be.visible')
+ .and('have.attr', 'href', '/agentx')
+ .find('[data-nav-badge="agentx"]')
+ .should('have.text', 'NEW');
cy.contains('a', 'Supporters').should('not.exist');
cy.contains('a', 'Articles').should('not.exist');
});
@@ -167,8 +176,27 @@ describe('Header', () => {
cy.wrap(mockRouter.push).should('have.been.calledTwice');
});
- it('keeps every primary link inside the header at the desktop breakpoint', () => {
- cy.viewport(1024, 720);
+ it('uses the hamburger without horizontal overflow from 1009 through 1024 CSS pixels', () => {
+ [1009, 1012, 1020, 1024].forEach((width) => {
+ cy.viewport(width, 720);
+ cy.get('[data-testid="nav-link-dashboard"]').should('not.be.visible');
+ cy.get('[data-testid="mobile-menu-toggle"]').should('be.visible');
+ cy.document().then((doc) => {
+ expect(doc.documentElement.scrollWidth, `${width}px document scrollWidth`).to.be.at.most(
+ doc.documentElement.clientWidth,
+ );
+ });
+ cy.get('[data-testid="header"]').then(($header) => {
+ const header = $header[0];
+ expect(header.scrollWidth, `${width}px header scrollWidth`).to.be.at.most(
+ header.clientWidth,
+ );
+ });
+ });
+ });
+
+ it('keeps every primary link inside the header at the xl desktop breakpoint', () => {
+ cy.viewport(1280, 720);
cy.get('[data-testid="header"]').then(($header) => {
const header = $header[0];
const bounds = header.getBoundingClientRect();
@@ -237,7 +265,7 @@ describe('Header', () => {
cy.get('[data-testid="mobile-menu-toggle"]').click();
cy.get('[data-testid="mobile-menu"]').should('be.visible');
cy.get('[data-testid="mobile-menu"]').within(() => {
- ['Home', 'Overview', 'Dashboard', 'Comparisons', 'Datasets', 'About'].forEach((label) => {
+ ['Home', 'Overview', 'Dashboard', 'Comparisons', 'AgentX', 'About'].forEach((label) => {
cy.contains('a', label).should('be.visible');
});
['Supporters', 'Articles'].forEach((label) => {
diff --git a/packages/app/cypress/e2e/agentic-point-time-series.cy.ts b/packages/app/cypress/e2e/agentic-point-time-series.cy.ts
index 7a2600e82..e46e9e87c 100644
--- a/packages/app/cypress/e2e/agentic-point-time-series.cy.ts
+++ b/packages/app/cypress/e2e/agentic-point-time-series.cy.ts
@@ -235,7 +235,7 @@ describe('Agentic point request metric time series', () => {
it('restores the request timeline view after browser Back from a dataset route', () => {
cy.window().then((win) => {
- win.history.pushState({}, '', '/datasets/test-dataset/conversations/conversation-1');
+ win.history.pushState({}, '', '/agentx/test-dataset/conversations/conversation-1');
});
cy.go('back');
cy.location('pathname').should('eq', '/inference/agentic/206885');
diff --git a/packages/app/cypress/e2e/datasets-distributions.cy.ts b/packages/app/cypress/e2e/datasets-distributions.cy.ts
index 0d2a7789a..c1e77cfb5 100644
--- a/packages/app/cypress/e2e/datasets-distributions.cy.ts
+++ b/packages/app/cypress/e2e/datasets-distributions.cy.ts
@@ -87,7 +87,7 @@ describe('Dataset distribution percentiles', () => {
cy.intercept('GET', '/api/v1/datasets/test-dataset/conversations*', {
body: { total: 0, items: [] },
});
- cy.visit('/datasets/test-dataset', { onBeforeLoad: unlockAgenticGate });
+ cy.visit('/agentx/test-dataset', { onBeforeLoad: unlockAgenticGate });
});
it('shows P50/P75/P90/P95 for ISL, OSL, and uncached input', () => {
diff --git a/packages/app/cypress/e2e/datasets-flamegraph-time.cy.ts b/packages/app/cypress/e2e/datasets-flamegraph-time.cy.ts
index bdb1adfc0..5a4e8df22 100644
--- a/packages/app/cypress/e2e/datasets-flamegraph-time.cy.ts
+++ b/packages/app/cypress/e2e/datasets-flamegraph-time.cy.ts
@@ -95,7 +95,7 @@ describe('Dataset conversation flamegraph timing', () => {
},
},
});
- cy.visit('/datasets/test-dataset/conversations/conversation-1', {
+ cy.visit('/agentx/test-dataset/conversations/conversation-1', {
onBeforeLoad: unlockAgenticGate,
});
});
diff --git a/packages/app/cypress/e2e/datasets-methodology.cy.ts b/packages/app/cypress/e2e/datasets-methodology.cy.ts
new file mode 100644
index 000000000..c48872af4
--- /dev/null
+++ b/packages/app/cypress/e2e/datasets-methodology.cy.ts
@@ -0,0 +1,121 @@
+import { unlockAgenticGate } from '../support/e2e';
+
+describe('AgentX dataset methodology', () => {
+ beforeEach(() => {
+ cy.intercept('GET', '/api/v1/datasets', { statusCode: 200, body: [] });
+ });
+
+ it('explains the source, replay sequence, controls, and interpretation in English', () => {
+ cy.visit('/agentx', { onBeforeLoad: unlockAgenticGate });
+
+ cy.get('[data-testid="agentx-methodology"]').within(() => {
+ cy.get('h1').should('have.text', 'AgentX Benchmark Datasets');
+ cy.get('[data-testid="agentx-methodology-step"]').should('have.length', 4);
+ cy.get('[data-testid="agentx-methodology-step"] h3').then(($headings) => {
+ expect([...$headings].map((heading) => heading.textContent)).to.deep.equal([
+ 'Capture',
+ 'Transform',
+ 'Reconstruct',
+ 'Replay and measure',
+ ]);
+ });
+ cy.contains('393 Claude Code sessions').should('be.visible');
+ cy.contains('Claude Code 2.1.139 or newer').should('be.visible');
+ cy.contains('SPEED-Bench').should('be.visible');
+ cy.contains('Its synthetic payloads do not support model-quality evaluation.').should(
+ 'be.visible',
+ );
+ cy.get('[data-testid="agentx-methodology-cta"]')
+ .should('contain.text', 'Read the full methodology')
+ .and('have.attr', 'href', '/agentx/methodology');
+ });
+ });
+
+ it('ships the same methodology on the Simplified Chinese page', () => {
+ cy.visit('/zh/agentx', { onBeforeLoad: unlockAgenticGate });
+
+ cy.get('[data-testid="agentx-methodology"]').within(() => {
+ cy.get('h1').should('have.text', 'AgentX 基准测试数据集');
+ cy.get('[data-testid="agentx-methodology-step"]').should('have.length', 4);
+ cy.contains('AgentX 如何构建一次回放').should('be.visible');
+ cy.contains('回放控制').should('be.visible');
+ cy.contains('合成 payload 不适合评估模型回答质量').should('be.visible');
+ cy.get('[data-testid="agentx-methodology-cta"]')
+ .should('contain.text', '深入了解 AgentX 方法论')
+ .and('have.attr', 'href', '/zh/agentx/methodology');
+ });
+ });
+
+ it('publishes the full English methodology with sourced figures and locale pairing', () => {
+ cy.visit('/agentx/methodology', { onBeforeLoad: unlockAgenticGate });
+
+ cy.get('[data-testid="agentx-methodology-article"]').within(() => {
+ cy.get('h1').should('have.text', 'AgentX Methodology');
+ cy.contains('393 sessions built on June 21, 2026').should('be.visible');
+ cy.contains('directed acyclic graph (DAG)').should('be.visible');
+ cy.contains('following one-hour profiling window').should('be.visible');
+ cy.contains('capped at 3 TB').should('be.visible');
+ cy.get('figure[data-testid^="agentx-methodology-figure-"]').should('have.length', 21);
+ cy.get('[data-testid="agentx-methodology-figure-corpus"]')
+ .should('contain.text', 'View full-resolution image')
+ .parent('a')
+ .should('have.attr', 'href', '/images/agentx-methodology/corpus-scale.png')
+ .and('have.attr', 'target', '_blank');
+ cy.get('[data-testid="agentx-methodology-figure-corpus"] img')
+ .invoke('attr', 'src')
+ .should('include', 'q=100');
+ [
+ 'requestDistributions256k',
+ 'subagentDistributions256k',
+ 'replayJoined',
+ 'replayFlatspawn',
+ 'replaySidecars',
+ ].forEach((figure) => {
+ cy.get(`[data-testid="agentx-methodology-figure-${figure}"] img`)
+ .should('be.visible')
+ .invoke('attr', 'alt')
+ .should('not.be.empty');
+ });
+ cy.get('a[href="https://arxiv.org/abs/2604.09557"]').should('exist');
+ cy.contains('mostly vibe coded').should('not.exist');
+ cy.contains('Distillation is bad').should('not.exist');
+ });
+
+ cy.get('[data-testid="language-toggle"]').should('have.attr', 'href', '/zh/agentx/methodology');
+ cy.get('link[rel="alternate"][hreflang="en"]').should('exist');
+ cy.get('link[rel="alternate"][hreflang="zh-CN"]').should('exist');
+ });
+
+ it('publishes the natural Simplified Chinese methodology sibling', () => {
+ cy.visit('/zh/agentx/methodology', { onBeforeLoad: unlockAgenticGate });
+
+ cy.get('[data-testid="agentx-methodology-article"]').within(() => {
+ cy.get('h1').should('have.text', 'AgentX 方法论');
+ cy.contains('2026 年 6 月 21 日构建').should('be.visible');
+ cy.contains('有向无环图(DAG)').should('be.visible');
+ cy.contains('上限为 3 TB').should('be.visible');
+ cy.get('figure[data-testid^="agentx-methodology-figure-"]').should('have.length', 21);
+ cy.get('[data-testid="agentx-methodology-figure-corpus"]')
+ .should('contain.text', '查看原始分辨率图片')
+ .parent('a')
+ .should('have.attr', 'href', '/images/agentx-methodology/corpus-scale.png');
+ });
+
+ cy.get('[data-testid="language-toggle"]').should('have.attr', 'href', '/agentx/methodology');
+ });
+
+ it('permanently redirects legacy dataset routes without dropping path or query', () => {
+ cy.request({
+ url: '/datasets/test-set/conversations/abc?turn=3',
+ followRedirect: false,
+ }).then((response) => {
+ expect(response.status).to.eq(308);
+ expect(response.headers.location).to.eq('/agentx/test-set/conversations/abc?turn=3');
+ });
+
+ cy.request({ url: '/zh/datasets', followRedirect: false }).then((response) => {
+ expect(response.status).to.eq(308);
+ expect(response.headers.location).to.eq('/zh/agentx');
+ });
+ });
+});
diff --git a/packages/app/cypress/e2e/landing-performance.cy.ts b/packages/app/cypress/e2e/landing-performance.cy.ts
index ed580a3d4..209284f83 100644
--- a/packages/app/cypress/e2e/landing-performance.cy.ts
+++ b/packages/app/cypress/e2e/landing-performance.cy.ts
@@ -58,8 +58,8 @@ describe('Landing page performance', () => {
cy.visit('/', {
onBeforeLoad(win) {
- win.localStorage.removeItem('inferencex-kimi-k3-modal-dismissed');
- win.localStorage.removeItem('inferencex-kimi-k3-banner-dismissed');
+ win.localStorage.removeItem('inferencex-agentic-results-modal-dismissed');
+ win.localStorage.removeItem('inferencex-agentic-results-banner-dismissed');
observeLayoutShifts(win);
},
});
@@ -77,7 +77,7 @@ describe('Landing page performance', () => {
cy.viewport(412, 823);
cy.visit('/', {
onBeforeLoad(win) {
- win.localStorage.setItem('inferencex-kimi-k3-banner-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-banner-dismissed', '1');
observeLayoutShifts(win);
},
});
diff --git a/packages/app/cypress/e2e/navigation.cy.ts b/packages/app/cypress/e2e/navigation.cy.ts
index 4f31b6e29..a20b53cea 100644
--- a/packages/app/cypress/e2e/navigation.cy.ts
+++ b/packages/app/cypress/e2e/navigation.cy.ts
@@ -47,8 +47,8 @@ describe('First-load navigation', () => {
onBeforeLoad(win) {
win.localStorage.removeItem('inferencex-starred');
win.localStorage.removeItem('inferencex-star-modal-dismissed');
- win.localStorage.removeItem('inferencex-kimi-k3-modal-dismissed');
- win.localStorage.removeItem('inferencex-kimi-k3-banner-dismissed');
+ win.localStorage.removeItem('inferencex-agentic-results-modal-dismissed');
+ win.localStorage.removeItem('inferencex-agentic-results-banner-dismissed');
},
});
@@ -77,9 +77,14 @@ describe('First-load navigation', () => {
cy.location('pathname').should('eq', '/compare');
});
- it('navigates to datasets from the header with one click', () => {
- cy.get('[data-testid="nav-link-datasets"]').should('have.attr', 'href', '/datasets').click();
- cy.location('pathname').should('eq', '/datasets');
+ it('navigates to AgentX from the header with one click', () => {
+ cy.get('[data-testid="nav-link-agentx"]')
+ .should('have.attr', 'href', '/agentx')
+ .find('[data-nav-badge="agentx"]')
+ .should('be.visible')
+ .and('have.text', 'NEW');
+ cy.get('[data-testid="nav-link-agentx"]').click();
+ cy.location('pathname').should('eq', '/agentx');
});
it('navigates to overview and the full dashboard from the landing CTAs', () => {
diff --git a/packages/app/cypress/e2e/nudge-system.cy.ts b/packages/app/cypress/e2e/nudge-system.cy.ts
index a6d4fe031..8b7ea5308 100644
--- a/packages/app/cypress/e2e/nudge-system.cy.ts
+++ b/packages/app/cypress/e2e/nudge-system.cy.ts
@@ -14,8 +14,8 @@ function clearAllNudgeStorage(win: Cypress.AUTWindow) {
const keys = [
'inferencex-starred',
'inferencex-star-modal-dismissed',
- 'inferencex-kimi-k3-modal-dismissed',
- 'inferencex-kimi-k3-banner-dismissed',
+ 'inferencex-agentic-results-modal-dismissed',
+ 'inferencex-agentic-results-banner-dismissed',
'inferencex-reproducibility-nudge-shown',
'inferencex-star-nudge-shown',
'inferencex-export-nudge-shown',
@@ -48,14 +48,75 @@ describe('Landing nudges — modals', () => {
onBeforeLoad: clearAllNudgeStorage,
});
// Banner (inline) and modal (overlay) occupy independent slots
- cy.get('[data-testid="launch-banner"]').should('be.visible');
+ cy.get('[data-testid="launch-banner"]')
+ .should('be.visible')
+ .and('contain.text', 'Agentic benchmark results are live')
+ .and('contain.text', 'View results');
cy.get('[data-testid="launch-modal"]')
.should('be.visible')
+ .and('contain.text', 'Real-world agentic inference benchmark results are live')
+ .and('contain.text', 'Kimi K3, DeepSeek-V4-Pro, MiniMax-M3, Qwen3.5 397B, and GLM-5.2')
+ .and('contain.text', 'View results')
.and('match', 'div[role="dialog"][aria-modal="false"]');
+ cy.get('[data-new-badge]')
+ .should('have.length', 3)
+ .then(($badges) => {
+ const sizes = [...$badges].map((badge) => {
+ const rect = badge.getBoundingClientRect();
+ return { width: rect.width, height: rect.height };
+ });
+ for (const size of sizes) {
+ expect(size.width).to.eq(sizes[0].width);
+ expect(size.height).to.eq(sizes[0].height);
+ }
+ expect(sizes[0]).to.deep.eq({ width: 32, height: 16 });
+
+ for (const badge of $badges) {
+ const label = badge.querySelector('[data-new-badge-label]');
+ expect(label, 'badge label').not.to.eq(null);
+
+ const badgeRect = badge.getBoundingClientRect();
+ const labelRect = label!.getBoundingClientRect();
+ const horizontalOffset =
+ labelRect.left + labelRect.width / 2 - (badgeRect.left + badgeRect.width / 2);
+ const verticalOffset =
+ labelRect.top + labelRect.height / 2 - (badgeRect.top + badgeRect.height / 2);
+
+ expect(horizontalOffset).to.be.closeTo(0, 0.1);
+ expect(verticalOffset).to.eq(0);
+
+ // The label box can sit dead centre while the glyphs themselves spill
+ // out of it, so measure the rendered text and not just its container.
+ const range = badge.ownerDocument.createRange();
+ range.selectNodeContents(label!);
+ const inkRect = range.getBoundingClientRect();
+ const inkOffset =
+ inkRect.left + inkRect.width / 2 - (badgeRect.left + badgeRect.width / 2);
+
+ expect(inkRect.left, 'label ink stays inside the pill').to.be.at.least(badgeRect.left);
+ expect(inkRect.right, 'label ink stays inside the pill').to.be.at.most(badgeRect.right);
+ expect(inkOffset, 'label ink is centred').to.be.closeTo(0, 0.5);
+ }
+ });
// Only one overlay at a time — star modal should not appear
cy.get('[data-testid="github-star-modal"]').should('not.exist');
});
+ it('localizes the agentic benchmark launch title in Chinese', () => {
+ cy.visit('/zh', {
+ onBeforeLoad: clearAllNudgeStorage,
+ });
+ cy.get('[data-testid="launch-banner"]')
+ .should('be.visible')
+ .and('contain.text', '智能体基准测试结果已上线')
+ .and('contain.text', '查看结果');
+ cy.get('[data-testid="launch-modal"]')
+ .should('be.visible')
+ .and('contain.text', '真实场景智能体推理基准测试结果已上线')
+ .and('contain.text', 'Kimi K3、DeepSeek-V4-Pro、MiniMax-M3、Qwen3.5 397B 与 GLM-5.2')
+ .and('contain.text', '查看结果');
+ });
+
it('dismissing launch modal persists — not shown on reload', () => {
cy.visit('/', {
onBeforeLoad: clearAllNudgeStorage,
@@ -68,19 +129,18 @@ describe('Landing nudges — modals', () => {
cy.get('[data-testid="launch-modal"]').should('not.exist');
});
- it('launch modal Explore action persists dismissal in localStorage', () => {
+ it('launch modal View results action opens Agentic Traces and persists dismissal', () => {
cy.visit('/', {
onBeforeLoad: clearAllNudgeStorage,
});
cy.get('[data-testid="launch-modal"]').should('be.visible');
- // The action writes localStorage synchronously before navigation. Check
- // the storage value before the navigation completes; combined with the
- // "Maybe Later" persists-across-reload test, this covers the explore
- // path without needing to stub window.location.
+ // The action records engagement and opens the Agentic Traces results.
cy.get('[data-testid="launch-modal-action"]').click();
+ cy.location('pathname').should('eq', '/inference');
+ cy.location('search').should('include', 'i_seq=agentic-traces');
cy.window().then((win) => {
- expect(win.localStorage.getItem('inferencex-kimi-k3-modal-dismissed')).to.eq('1');
+ expect(win.localStorage.getItem('inferencex-agentic-results-modal-dismissed')).to.eq('1');
});
});
@@ -88,7 +148,7 @@ describe('Landing nudges — modals', () => {
cy.visit('/', {
onBeforeLoad(win) {
clearAllNudgeStorage(win);
- win.localStorage.setItem('inferencex-kimi-k3-modal-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-modal-dismissed', '1');
},
});
cy.get('[data-testid="launch-modal"]').should('not.exist');
@@ -99,7 +159,7 @@ describe('Landing nudges — modals', () => {
cy.visit('/', {
onBeforeLoad(win) {
clearAllNudgeStorage(win);
- win.localStorage.setItem('inferencex-kimi-k3-modal-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-modal-dismissed', '1');
},
});
cy.get('[data-testid="github-star-modal"]').should('be.visible');
@@ -117,7 +177,7 @@ describe('Landing nudges — modals', () => {
cy.visit('/', {
onBeforeLoad(win) {
clearAllNudgeStorage(win);
- win.localStorage.setItem('inferencex-kimi-k3-modal-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-modal-dismissed', '1');
},
});
cy.get('[data-testid="github-star-modal"]').should('be.visible');
@@ -178,7 +238,7 @@ describe('Landing nudges — banner', () => {
cy.get('[data-testid="launch-banner"]').should('be.visible');
cy.window().then((win) => {
// Only the X button should persist a dismissal — show alone must not.
- expect(win.localStorage.getItem('inferencex-kimi-k3-banner-dismissed')).to.eq(null);
+ expect(win.localStorage.getItem('inferencex-agentic-results-banner-dismissed')).to.eq(null);
});
});
@@ -189,11 +249,12 @@ describe('Landing nudges — banner', () => {
cy.get('[data-testid="launch-banner"]').should('be.visible');
cy.get('[data-testid="launch-banner"]').click();
cy.location('pathname', { timeout: 10000 }).should('eq', '/inference');
+ cy.location('search').should('include', 'i_seq=agentic-traces');
// Body click must not write the dismissal key — the banner should still
// render on a fresh visit to landing.
cy.window().then((win) => {
- expect(win.localStorage.getItem('inferencex-kimi-k3-banner-dismissed')).to.eq(null);
+ expect(win.localStorage.getItem('inferencex-agentic-results-banner-dismissed')).to.eq(null);
});
cy.visit('/');
@@ -354,8 +415,8 @@ describe('Nudge scope isolation', () => {
onBeforeLoad(win) {
clearAllNudgeStorage(win);
// Dismiss all landing nudges so nothing blocks visibility checks
- win.localStorage.setItem('inferencex-kimi-k3-modal-dismissed', '1');
- win.localStorage.setItem('inferencex-kimi-k3-banner-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-modal-dismissed', '1');
+ win.localStorage.setItem('inferencex-agentic-results-banner-dismissed', '1');
win.localStorage.setItem('inferencex-starred', '1');
},
});
diff --git a/packages/app/cypress/e2e/overview.cy.ts b/packages/app/cypress/e2e/overview.cy.ts
index 776dc62f7..09be91781 100644
--- a/packages/app/cypress/e2e/overview.cy.ts
+++ b/packages/app/cypress/e2e/overview.cy.ts
@@ -27,8 +27,8 @@ const AGENTX_LABEL_ZH = '长上下文多轮真实智能体场景(AgentX)';
/** Shared by both locales: the scenario is named after its acronym. */
const AGENTX_SHORT = 'AgentX';
-const PAGE_TITLE = 'Inference Cost per Million Tokens';
-const PAGE_TITLE_ZH = '推理每百万 token 成本';
+const PAGE_TITLE = 'Agentic Inference Costs';
+const PAGE_TITLE_ZH = '智能体推理成本';
const SOURCE_NOTE = 'Source: InferenceX & SemiAnalysis Market July 2026 AI Cloud TCO Model';
const SOURCE_LINK_TEXT = 'SemiAnalysis Market July 2026 AI Cloud TCO Model';
const SOURCE_NOTE_ZH = '来源:InferenceX 与 SemiAnalysis Market July 2026 AI Cloud TCO Model';
diff --git a/packages/app/cypress/e2e/zh-pages.cy.ts b/packages/app/cypress/e2e/zh-pages.cy.ts
index a189e82ae..04f2979d2 100644
--- a/packages/app/cypress/e2e/zh-pages.cy.ts
+++ b/packages/app/cypress/e2e/zh-pages.cy.ts
@@ -5,6 +5,7 @@ describe('Chinese (/zh) pages', () => {
});
it('renders the Chinese landing content', () => {
+ cy.get('[data-testid="intro-section"]').should('contain.text', '智能体推理基准测试');
cy.contains('h2', '探索 InferenceX').should('exist');
cy.contains('快速对比').should('exist');
});
@@ -27,20 +28,20 @@ describe('Chinese (/zh) pages', () => {
cy.get('[data-testid="language-toggle"]').should('have.attr', 'href', '/');
});
- it('header links to the Chinese datasets page', () => {
- cy.get('[data-testid="nav-link-datasets"]')
- .should('contain.text', '数据集')
- .and('have.attr', 'href', '/zh/datasets');
+ it('header links to the Chinese AgentX page', () => {
+ cy.get('[data-testid="nav-link-agentx"]')
+ .should('contain.text', 'AgentX')
+ .and('have.attr', 'href', '/zh/agentx');
});
it('footer renders in Chinese with zh-internal links', () => {
- cy.get('[data-testid="footer-brand-description"]').should('contain.text', '开源推理基准测试');
+ cy.get('[data-testid="footer-brand-description"]').should('contain.text', '智能体推理');
cy.get('[data-testid="footer-link-supporters"]')
.should('contain.text', '支持者')
.and('have.attr', 'href', '/zh/quotes');
- cy.get('[data-testid="footer-link-datasets"]')
- .should('contain.text', '数据集')
- .and('have.attr', 'href', '/zh/datasets');
+ cy.get('[data-testid="footer-link-agentx"]')
+ .should('contain.text', 'AgentX')
+ .and('have.attr', 'href', '/zh/agentx');
cy.get('[data-testid="footer-link-articles"]')
.should('contain.text', '文章')
.and('have.attr', 'href', '/zh/blog');
@@ -62,7 +63,8 @@ describe('Chinese (/zh) pages', () => {
it('renders the Chinese SEO intro above the chart', () => {
cy.get('[data-testid="zh-tab-intro"]').within(() => {
- cy.contains('h1', 'AI 推理基准测试').should('exist');
+ cy.contains('h1', '智能体推理基准测试').should('exist');
+ cy.contains('长上下文、多轮').should('exist');
});
});
diff --git a/packages/app/cypress/support/e2e.ts b/packages/app/cypress/support/e2e.ts
index 5f518e1a6..977dc2364 100644
--- a/packages/app/cypress/support/e2e.ts
+++ b/packages/app/cypress/support/e2e.ts
@@ -19,14 +19,14 @@ Cypress.on('window:before:load', (win) => {
* Seed the shared feature-gate flag (the same localStorage key the ↑↑↓↓ konami
* unlock writes — see use-feature-gate.ts).
*
- * The agentic surfaces (the "Agentic" scenario, /datasets,
- * /inference/agentic/[id], and the Datasets nav link) are now PUBLIC by default
+ * The agentic surfaces (the "Agentic" scenario, /agentx,
+ * /inference/agentic/[id], and the AgentX nav link) are now PUBLIC by default
* — they no longer sit behind this gate — so agentic specs no longer need it.
* The helper is retained as a harmless no-op for those specs (and still unlocks
* the remaining hidden features: the "Hidden" tab dropdown and Measured Energy).
*
* Call from a spec's `cy.visit(..., { onBeforeLoad })`:
- * cy.visit('/datasets/x', { onBeforeLoad: unlockAgenticGate });
+ * cy.visit('/agentx/x', { onBeforeLoad: unlockAgenticGate });
* or compose inside an existing hook: `unlockAgenticGate(win)`.
*/
export function unlockAgenticGate(win: Window): void {
diff --git a/packages/app/next.config.ts b/packages/app/next.config.ts
index b8445156c..bd96a0437 100644
--- a/packages/app/next.config.ts
+++ b/packages/app/next.config.ts
@@ -12,6 +12,20 @@ const nextConfig: NextConfig = {
allowedDevOrigins: allowedDevOriginsFromEnv(),
transpilePackages: ['@semianalysisai/inferencex-constants'],
serverExternalPackages: ['shiki'],
+ redirects() {
+ return Promise.resolve([
+ {
+ source: '/datasets/:path*',
+ destination: '/agentx/:path*',
+ permanent: true,
+ },
+ {
+ source: '/zh/datasets/:path*',
+ destination: '/zh/agentx/:path*',
+ permanent: true,
+ },
+ ]);
+ },
experimental: {
optimizePackageImports: ['lucide-react', 'd3', '@tanstack/react-query'],
// NOTE: experimental.inlineCss was evaluated (2026-07) for the PageSpeed
@@ -26,6 +40,7 @@ const nextConfig: NextConfig = {
...(process.env.GITHUB_ACTIONS === 'true' && { turbopackFileSystemCacheForBuild: true }),
},
images: {
+ qualities: [75, 100],
remotePatterns: [
{ hostname: 'placehold.co' },
{ hostname: 'substack-post-media.s3.amazonaws.com' },
diff --git a/packages/app/public/images/agentx-methodology/corpus-scale.png b/packages/app/public/images/agentx-methodology/corpus-scale.png
new file mode 100644
index 000000000..a526a6df4
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/corpus-scale.png differ
diff --git a/packages/app/public/images/agentx-methodology/engine-acceptance-controls.png b/packages/app/public/images/agentx-methodology/engine-acceptance-controls.png
new file mode 100644
index 000000000..0606f78b0
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/engine-acceptance-controls.png differ
diff --git a/packages/app/public/images/agentx-methodology/golden-acceptance-length.png b/packages/app/public/images/agentx-methodology/golden-acceptance-length.png
new file mode 100644
index 000000000..5e2893d73
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/golden-acceptance-length.png differ
diff --git a/packages/app/public/images/agentx-methodology/hash-token-ratio.png b/packages/app/public/images/agentx-methodology/hash-token-ratio.png
new file mode 100644
index 000000000..1730ca439
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/hash-token-ratio.png differ
diff --git a/packages/app/public/images/agentx-methodology/pareto-b200-minimax-m3.png b/packages/app/public/images/agentx-methodology/pareto-b200-minimax-m3.png
new file mode 100644
index 000000000..dd8158824
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/pareto-b200-minimax-m3.png differ
diff --git a/packages/app/public/images/agentx-methodology/profiling-cache-sources.png b/packages/app/public/images/agentx-methodology/profiling-cache-sources.png
new file mode 100644
index 000000000..d3a3c49e1
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/profiling-cache-sources.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-flatspawn.png b/packages/app/public/images/agentx-methodology/replay-flatspawn.png
new file mode 100644
index 000000000..19e99a110
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-flatspawn.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-linear.png b/packages/app/public/images/agentx-methodology/replay-linear.png
new file mode 100644
index 000000000..75ab6d5aa
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-linear.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-multi-subagent.png b/packages/app/public/images/agentx-methodology/replay-multi-subagent.png
new file mode 100644
index 000000000..5e8072111
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-multi-subagent.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-single-subagent.png b/packages/app/public/images/agentx-methodology/replay-single-subagent.png
new file mode 100644
index 000000000..185068040
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-single-subagent.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-subagent-sidecars.png b/packages/app/public/images/agentx-methodology/replay-subagent-sidecars.png
new file mode 100644
index 000000000..a60af7fed
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-subagent-sidecars.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-two-subagents-joined.png b/packages/app/public/images/agentx-methodology/replay-two-subagents-joined.png
new file mode 100644
index 000000000..3e39e3de2
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-two-subagents-joined.png differ
diff --git a/packages/app/public/images/agentx-methodology/replay-two-subagents.png b/packages/app/public/images/agentx-methodology/replay-two-subagents.png
new file mode 100644
index 000000000..54d03ed10
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/replay-two-subagents.png differ
diff --git a/packages/app/public/images/agentx-methodology/request-distributions-256k.png b/packages/app/public/images/agentx-methodology/request-distributions-256k.png
new file mode 100644
index 000000000..8f6e03660
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/request-distributions-256k.png differ
diff --git a/packages/app/public/images/agentx-methodology/request-distributions.png b/packages/app/public/images/agentx-methodology/request-distributions.png
new file mode 100644
index 000000000..640c7b68f
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/request-distributions.png differ
diff --git a/packages/app/public/images/agentx-methodology/request-queue-depth.png b/packages/app/public/images/agentx-methodology/request-queue-depth.png
new file mode 100644
index 000000000..724e4dba2
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/request-queue-depth.png differ
diff --git a/packages/app/public/images/agentx-methodology/subagent-distributions-256k.png b/packages/app/public/images/agentx-methodology/subagent-distributions-256k.png
new file mode 100644
index 000000000..e695991ca
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/subagent-distributions-256k.png differ
diff --git a/packages/app/public/images/agentx-methodology/subagent-distributions.png b/packages/app/public/images/agentx-methodology/subagent-distributions.png
new file mode 100644
index 000000000..01b72a3e3
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/subagent-distributions.png differ
diff --git a/packages/app/public/images/agentx-methodology/warmup-cache-sources.png b/packages/app/public/images/agentx-methodology/warmup-cache-sources.png
new file mode 100644
index 000000000..f1bdfd761
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/warmup-cache-sources.png differ
diff --git a/packages/app/public/images/agentx-methodology/warmup-snapshot.png b/packages/app/public/images/agentx-methodology/warmup-snapshot.png
new file mode 100644
index 000000000..d806e911f
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/warmup-snapshot.png differ
diff --git a/packages/app/public/images/agentx-methodology/weka-trace-record.png b/packages/app/public/images/agentx-methodology/weka-trace-record.png
new file mode 100644
index 000000000..43c8263c3
Binary files /dev/null and b/packages/app/public/images/agentx-methodology/weka-trace-record.png differ
diff --git a/packages/app/src/app/about/page.tsx b/packages/app/src/app/about/page.tsx
index 5e9348afe..d341551a7 100644
--- a/packages/app/src/app/about/page.tsx
+++ b/packages/app/src/app/about/page.tsx
@@ -21,21 +21,21 @@ const faqJsonLd = {
})),
};
+const ABOUT_DESCRIPTION =
+ 'InferenceX benchmarks agentic and fixed-sequence AI inference across accelerators and serving stacks. AgentX is its long-context, multi-turn coding scenario.';
+
export const metadata: Metadata = {
title: 'About',
- description:
- 'InferenceX is an independent, vendor neutral, reproducible benchmark which continuously benchmarks inference software across a wide range of AI accelerators.',
+ description: ABOUT_DESCRIPTION,
alternates: enAlternates('/about'),
openGraph: {
title: 'About | InferenceX',
- description:
- 'InferenceX is an independent, vendor neutral, reproducible benchmark which continuously benchmarks inference software across a wide range of AI accelerators.',
+ description: ABOUT_DESCRIPTION,
url: `${SITE_URL}/about`,
},
twitter: {
title: 'About | InferenceX',
- description:
- 'InferenceX is an independent, vendor neutral, reproducible benchmark which continuously benchmarks inference software across a wide range of AI accelerators.',
+ description: ABOUT_DESCRIPTION,
},
};
@@ -47,8 +47,8 @@ export default function AboutPage() {
- Open Source Continuous Inference Benchmark trusted by Operators of Trillion Dollar
- GigaWatt Scale Token Factories
+ Open-Source Continuous Agentic Inference Benchmark Trusted by Operators of
+ Trillion-Dollar, GigaWatt-Scale Token Factories
As the world progresses exponentially towards AGI, software development and model
@@ -58,9 +58,9 @@ export default function AboutPage() {
InferenceX™ (formerly InferenceMAX) is our independent, vendor
- neutral, reproducible benchmark which addresses these issues by continuously
- benchmarking inference software across a wide range of AI accelerators that are
- actually available to the ML community.
+ neutral, reproducible benchmark. It measures both fixed-sequence serving and AgentX,
+ our long-context, multi-turn agentic coding workload, across AI accelerators and
+ serving stacks available to the ML community.
Our open data & insights are widely adopted by the ML community, capacity planning
diff --git a/packages/app/src/app/datasets/[slug]/conversations/[convId]/page.tsx b/packages/app/src/app/agentx/[slug]/conversations/[convId]/page.tsx
similarity index 94%
rename from packages/app/src/app/datasets/[slug]/conversations/[convId]/page.tsx
rename to packages/app/src/app/agentx/[slug]/conversations/[convId]/page.tsx
index 8957c8b4d..8a9d79226 100644
--- a/packages/app/src/app/datasets/[slug]/conversations/[convId]/page.tsx
+++ b/packages/app/src/app/agentx/[slug]/conversations/[convId]/page.tsx
@@ -19,7 +19,7 @@ export async function generateMetadata({ params }: Props): Promise {
title,
description,
alternates: {
- canonical: `${SITE_URL}/datasets/${slug}/conversations/${encodeURIComponent(convId)}`,
+ canonical: `${SITE_URL}/agentx/${slug}/conversations/${encodeURIComponent(convId)}`,
},
robots: { index: false }, // per-conversation pages are too numerous to index
};
diff --git a/packages/app/src/app/datasets/[slug]/page.tsx b/packages/app/src/app/agentx/[slug]/page.tsx
similarity index 83%
rename from packages/app/src/app/datasets/[slug]/page.tsx
rename to packages/app/src/app/agentx/[slug]/page.tsx
index 567f5588d..613ccde1a 100644
--- a/packages/app/src/app/datasets/[slug]/page.tsx
+++ b/packages/app/src/app/agentx/[slug]/page.tsx
@@ -10,16 +10,16 @@ interface Props {
export async function generateMetadata({ params }: Props): Promise {
const { slug } = await params;
- const title = `${slug} | Agentic Datasets`;
+ const title = `${slug} | AgentX Datasets`;
const description = `Distributions, token statistics, and per-conversation flamegraphs for the ${slug} agentic trace dataset.`;
return {
title,
description,
alternates: {
- canonical: `${SITE_URL}/datasets/${slug}`,
- languages: languageAlternates(`/datasets/${slug}`),
+ canonical: `${SITE_URL}/agentx/${slug}`,
+ languages: languageAlternates(`/agentx/${slug}`),
},
- openGraph: { title: `${title} | InferenceX`, description, url: `${SITE_URL}/datasets/${slug}` },
+ openGraph: { title: `${title} | InferenceX`, description, url: `${SITE_URL}/agentx/${slug}` },
twitter: { title: `${title} | InferenceX`, description },
};
}
diff --git a/packages/app/src/app/agentx/methodology/page.tsx b/packages/app/src/app/agentx/methodology/page.tsx
new file mode 100644
index 000000000..4aee25e6d
--- /dev/null
+++ b/packages/app/src/app/agentx/methodology/page.tsx
@@ -0,0 +1,42 @@
+import type { Metadata } from 'next';
+
+import { AgentXMethodologyArticle } from '@/components/datasets/agentx-methodology-article';
+import { JsonLd } from '@/components/json-ld';
+import { enAlternates } from '@/lib/i18n';
+import { SITE_URL } from '@semianalysisai/inferencex-constants';
+
+const DESCRIPTION =
+ 'How AgentX transforms opt-in coding-agent traces into replay graphs with controlled KV-cache warmup and benchmark settings.';
+
+export const metadata: Metadata = {
+ title: 'AgentX Methodology',
+ description: DESCRIPTION,
+ alternates: enAlternates('/agentx/methodology'),
+ openGraph: {
+ title: 'AgentX Methodology | InferenceX',
+ description: DESCRIPTION,
+ url: `${SITE_URL}/agentx/methodology`,
+ },
+ twitter: { title: 'AgentX Methodology | InferenceX', description: DESCRIPTION },
+};
+
+const jsonLd = {
+ '@context': 'https://schema.org',
+ '@type': 'TechArticle',
+ headline: 'AgentX Methodology',
+ description: DESCRIPTION,
+ url: `${SITE_URL}/agentx/methodology`,
+ inLanguage: 'en',
+ isPartOf: { '@type': 'WebSite', name: 'InferenceX', url: SITE_URL },
+};
+
+export default function AgentXMethodologyPage() {
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/packages/app/src/app/agentx/page.tsx b/packages/app/src/app/agentx/page.tsx
new file mode 100644
index 000000000..41308e6ec
--- /dev/null
+++ b/packages/app/src/app/agentx/page.tsx
@@ -0,0 +1,48 @@
+import type { Metadata } from 'next';
+
+import { AgentXMethodology } from '@/components/datasets/agentx-methodology';
+import { DatasetList } from '@/components/datasets/dataset-list';
+import { JsonLd } from '@/components/json-ld';
+import { enAlternates } from '@/lib/i18n';
+import { SITE_URL } from '@semianalysisai/inferencex-constants';
+
+const DESCRIPTION =
+ 'AgentX replays workload shapes derived from opt-in Claude Code sessions. Explore its methodology, distributions, and per-conversation flamegraphs.';
+
+export const metadata: Metadata = {
+ title: 'AgentX Methodology and Datasets',
+ description: DESCRIPTION,
+ alternates: enAlternates('/agentx'),
+ openGraph: {
+ title: 'AgentX Methodology and Datasets | InferenceX',
+ description: DESCRIPTION,
+ url: `${SITE_URL}/agentx`,
+ },
+ twitter: { title: 'AgentX Methodology and Datasets | InferenceX', description: DESCRIPTION },
+};
+
+const jsonLd = {
+ '@context': 'https://schema.org',
+ '@type': 'CollectionPage',
+ name: 'InferenceX AgentX Datasets',
+ description: DESCRIPTION,
+ url: `${SITE_URL}/agentx`,
+};
+
+export default function AgentXPage() {
+ return (
+
+
+
+
+
+
+
+
+
Datasets
+
+
+
+
+ );
+}
diff --git a/packages/app/src/app/blog/page.tsx b/packages/app/src/app/blog/page.tsx
index bad1c01c1..b2a98ea2b 100644
--- a/packages/app/src/app/blog/page.tsx
+++ b/packages/app/src/app/blog/page.tsx
@@ -11,11 +11,11 @@ import { SITE_URL, SITE_NAME, AUTHOR_NAME } from '@semianalysisai/inferencex-con
export const metadata: Metadata = {
title: 'Articles',
- description: `Technical articles from ${SITE_NAME} by ${AUTHOR_NAME} — AI inference benchmarking, chip performance analysis, and ML infrastructure insights.`,
+ description: `Technical articles from ${SITE_NAME} by ${AUTHOR_NAME} on agentic inference benchmarks, AgentX results, chip performance, and ML infrastructure.`,
alternates: enAlternates('/blog'),
openGraph: {
title: `Articles | ${SITE_NAME} by ${AUTHOR_NAME}`,
- description: 'AI inference benchmarking insights and chip performance analysis.',
+ description: 'Articles on agentic inference benchmarks, AgentX results, and chip performance.',
url: `${SITE_URL}/blog`,
},
};
@@ -49,7 +49,8 @@ export default async function BlogPage({
Articles
- Insights on AI inference benchmarking, chip performance, and ML infrastructure.
+ Articles on agentic inference, AgentX results, chip performance, and ML
+ infrastructure.
New to the terminology?{' '}
diff --git a/packages/app/src/app/compare/page.tsx b/packages/app/src/app/compare/page.tsx
index 2f1a0cb0c..9f2eaa786 100644
--- a/packages/app/src/app/compare/page.tsx
+++ b/packages/app/src/app/compare/page.tsx
@@ -19,7 +19,7 @@ import { bucketComparePairsByVendor, formatModelList } from '@/lib/compare-ssr';
export const dynamic = 'force-dynamic';
-const DESCRIPTION = `InferenceX is the independent, open-source chip inference benchmark from SemiAnalysis, with verified, reproducible nightly results. ${SUPPORTERS_LINE} Compare latency, throughput & cost head-to-head across DeepSeek V4 Pro, DeepSeek R1, Kimi K2, MiniMax M3, GLM 5, Qwen 3.5 & more.`;
+const DESCRIPTION = `InferenceX is the independent, open-source chip inference benchmark from SemiAnalysis, with verified, reproducible results updated as configurations change. ${SUPPORTERS_LINE} Compare latency, throughput & cost head-to-head across DeepSeek V4 Pro, DeepSeek R1, Kimi K2, MiniMax M3, GLM 5, Qwen 3.5 & more.`;
export const metadata: Metadata = {
title: 'Chip Comparisons',
diff --git a/packages/app/src/app/datasets/page.tsx b/packages/app/src/app/datasets/page.tsx
deleted file mode 100644
index 6bd33e439..000000000
--- a/packages/app/src/app/datasets/page.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-import type { Metadata } from 'next';
-
-import { Card } from '@/components/ui/card';
-import { JsonLd } from '@/components/json-ld';
-import { DatasetList } from '@/components/datasets/dataset-list';
-import { enAlternates } from '@/lib/i18n';
-import { SITE_URL } from '@semianalysisai/inferencex-constants';
-
-const DESCRIPTION =
- 'The real Claude Code agentic conversation traces that the InferenceX agentic benchmark replays — methodology, distributions, and per-conversation flamegraphs.';
-
-export const metadata: Metadata = {
- title: 'Agentic Datasets',
- description: DESCRIPTION,
- alternates: enAlternates('/datasets'),
- openGraph: {
- title: 'Agentic Datasets | InferenceX',
- description: DESCRIPTION,
- url: `${SITE_URL}/datasets`,
- },
- twitter: { title: 'Agentic Datasets | InferenceX', description: DESCRIPTION },
-};
-
-const jsonLd = {
- '@context': 'https://schema.org',
- '@type': 'CollectionPage',
- name: 'InferenceX Agentic Datasets',
- description: DESCRIPTION,
- url: `${SITE_URL}/datasets`,
-};
-
-export default function DatasetsPage() {
- return (
-
-
-
-
-
-
- Agentic Benchmark Datasets
-
-
- InferenceX's agentic benchmark doesn't replay synthetic prompts — it replays
- real Claude Code coding sessions captured as conversation traces.
- Each trace is a full multi-turn session: the main agent's turns plus any
- subagents it spawned, with per-turn input/output token counts and the 64-token
- KV-cache block hashes needed to reconstruct prefix-cache reuse. The traces are
- published openly on HuggingFace under semianalysisai/cc-traces-weka-*{' '}
- (apache-2.0).
-
-
-
- How traces are captured
-
-
- Production Claude Code sessions are recorded through a logging proxy that captures
- every API request: its input and output token counts, the model used, timing (TTFT,
- inter-token latency), and a list of hash_ids — one per 64-token KV block
- of the request's input. Subagent invocations are grouped under their parent turn.
- No prompt or completion text is stored; only token counts and block hashes, so the
- corpus is shareable while remaining a faithful workload for replay.
-
-
-
- Cached prefix vs uncached suffix
-
-
- Agentic workloads are dominated by prefix reuse: each turn resends the growing
- conversation, so most of its input is already in the KV cache from prior turns. We
- reconstruct this exactly. Walking a conversation in order under an idealized infinite
- cache, a turn's cached prefix is its longest run of leading{' '}
- hash_ids already seen; the rest is the uncached suffix{' '}
- that must be (re)computed. Blocks are 64 tokens; the split is clamped so cached +
- uncached equals the turn's effective input even on a partial final block.
- Subagents run against a snapshot of the parent cache at spawn (their context is
- separate and is not folded back into the parent).
-
-
-
Dataset variants
-
-
- full — every captured request, unmodified.
-
-
- 256k — requests whose input + output exceeds 256,000 tokens are
- dropped so every turn fits a 256k context window (used when benchmarking engines
- configured for a 256k max context).
-
- Definitions for the metrics, serving techniques, numerical formats, and
- distributed systems concepts used across InferenceX. Based on measured behavior,
- not vendor peak specifications.
+ Definitions for agentic inference, benchmark metrics, serving techniques,
+ numerical formats, and distributed systems concepts used across InferenceX.
+ Entries describe measured behavior and published benchmark recipes.
@@ -173,6 +175,9 @@ export default function GlossaryPage() {
speedups on unchanged chips.
+
+ AgentX methodology →
+
Browse technical articles →
diff --git a/packages/app/src/app/layout.tsx b/packages/app/src/app/layout.tsx
index 0f8a9e5cd..841db6394 100644
--- a/packages/app/src/app/layout.tsx
+++ b/packages/app/src/app/layout.tsx
@@ -54,6 +54,11 @@ export const metadata: Metadata = {
},
description: DESCRIPTION,
keywords: [
+ 'AgentX scenario',
+ 'agentic inference benchmark',
+ 'agentic coding benchmark',
+ 'long context inference benchmark',
+ 'multi-turn inference benchmark',
'AI inference benchmark',
'GPU benchmark',
'LLM benchmark',
@@ -160,7 +165,7 @@ const jsonLd = {
'@id': `${SITE_URL}/#application`,
name: SITE_NAME,
description:
- 'Open-source AI inference benchmark dashboard. Compare chip performance for LLM inference across NVIDIA GB200, H100, AMD MI355X, and more.',
+ 'InferenceX is an open-source agentic inference benchmark dashboard. It compares the AgentX long-context, multi-turn coding scenario with fixed-sequence serving across NVIDIA, AMD, and other accelerators.',
url: SITE_URL,
applicationCategory: 'DeveloperApplication',
operatingSystem: 'Web',
diff --git a/packages/app/src/app/llms-full.txt/route.ts b/packages/app/src/app/llms-full.txt/route.ts
index 9648617c2..ccf5b9f29 100644
--- a/packages/app/src/app/llms-full.txt/route.ts
+++ b/packages/app/src/app/llms-full.txt/route.ts
@@ -28,7 +28,7 @@ export async function GET() {
`# ${SITE_NAME} Articles — Full Content`,
`> By ${AUTHOR_NAME}`,
'',
- `This file contains the full text of all articles from ${SITE_NAME} (${SITE_URL}/blog).`,
+ `This file contains the full text of all articles from ${SITE_NAME} (${SITE_URL}/blog), covering agentic inference benchmarks including AgentX results, fixed-sequence AI inference, chip performance, and ML infrastructure.`,
`It is intended for consumption by large language models and AI assistants.`,
'',
'---',
diff --git a/packages/app/src/app/llms.txt/route.ts b/packages/app/src/app/llms.txt/route.ts
index a53149eed..596c8ccdb 100644
--- a/packages/app/src/app/llms.txt/route.ts
+++ b/packages/app/src/app/llms.txt/route.ts
@@ -8,11 +8,13 @@ export async function GET() {
const lines = [
`# ${SITE_NAME} by ${AUTHOR_NAME}`,
'',
- `> ${SITE_NAME} is the open-source AI inference benchmark dashboard. We compare chip performance for LLM inference across NVIDIA GB200, H100, AMD MI355X, and more.`,
+ `> ${SITE_NAME} is an open-source agentic inference benchmark dashboard. It compares the AgentX long-context, multi-turn coding scenario with fixed-sequence serving across NVIDIA, AMD, and other accelerators using public runs.`,
'',
`## Links`,
'',
`- [Dashboard](${SITE_URL})`,
+ `- [AgentX](${SITE_URL}/agentx)`,
+ `- [AgentX Methodology](${SITE_URL}/agentx/methodology)`,
`- [Articles](${SITE_URL}/blog)`,
`- [API Reference](${SITE_URL}/api)`,
`- [OpenAPI 3.1 Specification](${SITE_URL}/api/openapi.json)`,
diff --git a/packages/app/src/app/manifest.ts b/packages/app/src/app/manifest.ts
index 26b9d5e46..fd80ad822 100644
--- a/packages/app/src/app/manifest.ts
+++ b/packages/app/src/app/manifest.ts
@@ -7,7 +7,7 @@ export default function manifest(): MetadataRoute.Manifest {
name: `${SITE_NAME} by ${AUTHOR_NAME}`,
short_name: SITE_NAME,
description:
- 'Open-source AI inference benchmark. Compare chip performance across NVIDIA, AMD, and more.',
+ 'Open-source agentic inference benchmark. Compare the AgentX scenario and fixed-sequence serving performance across NVIDIA, AMD, and more.',
start_url: '/',
display: 'standalone',
background_color: '#09090b',
diff --git a/packages/app/src/app/overview/page.tsx b/packages/app/src/app/overview/page.tsx
index ae76ab5a4..bdb133bda 100644
--- a/packages/app/src/app/overview/page.tsx
+++ b/packages/app/src/app/overview/page.tsx
@@ -18,21 +18,21 @@ import { getOverviewPageData } from '@/lib/overview-data.server';
export const dynamic = 'force-dynamic';
const DESCRIPTION =
- 'Compare hyperscaler cost per million total tokens across MI355X, B200, B300, GB200 and GB300 using the scenario shown for each active model.';
+ 'Compare hyperscaler cost per million total tokens across MI355X, B200, B300, GB200, and GB300 for the AgentX long-context, multi-turn coding scenario and fixed-sequence scenarios where data is available.';
export const metadata: Metadata = {
- title: 'Inference Cost Overview',
+ title: 'Agentic Inference Costs',
description: DESCRIPTION,
alternates: enAlternates('/overview'),
openGraph: {
- title: `Inference Cost Overview | ${SITE_NAME}`,
+ title: `Agentic Inference Costs | ${SITE_NAME}`,
description: DESCRIPTION,
url: `${SITE_URL}/overview`,
type: 'website',
},
twitter: {
card: 'summary_large_image',
- title: `Inference Cost Overview | ${SITE_NAME}`,
+ title: `Agentic Inference Costs | ${SITE_NAME}`,
description: DESCRIPTION,
},
};
diff --git a/packages/app/src/app/sitemap.ts b/packages/app/src/app/sitemap.ts
index d85b07299..10397f2b0 100644
--- a/packages/app/src/app/sitemap.ts
+++ b/packages/app/src/app/sitemap.ts
@@ -94,7 +94,12 @@ export default async function sitemap(): Promise {
changeFrequency: 'daily',
priority: 0.8,
}),
- ...localizedPair('/datasets', { lastModified: now, changeFrequency: 'weekly', priority: 0.6 }),
+ ...localizedPair('/agentx', { lastModified: now, changeFrequency: 'weekly', priority: 0.6 }),
+ ...localizedPair('/agentx/methodology', {
+ lastModified: now,
+ changeFrequency: 'monthly',
+ priority: 0.6,
+ }),
...localizedPair('/api', { lastModified: now, changeFrequency: 'monthly', priority: 0.7 }),
...localizedPair('/blog', { lastModified: now, changeFrequency: 'weekly', priority: 0.8 }),
...localizedPair('/glossary', {
diff --git a/packages/app/src/app/zh/about/page.tsx b/packages/app/src/app/zh/about/page.tsx
index 91209d257..41eb7c921 100644
--- a/packages/app/src/app/zh/about/page.tsx
+++ b/packages/app/src/app/zh/about/page.tsx
@@ -22,22 +22,22 @@ const faqJsonLd = {
})),
};
+const ABOUT_DESCRIPTION =
+ 'InferenceX 对比各类加速器与服务栈的智能体推理和固定序列 AI 推理性能。AgentX 是其长上下文多轮编码场景。';
+
export const metadata: Metadata = {
title: '关于',
- description:
- 'InferenceX 是一个独立、厂商中立、可复现的基准测试平台,持续测试各类 AI 加速器上的推理软件性能。',
+ description: ABOUT_DESCRIPTION,
alternates: zhAlternates('/about'),
openGraph: {
title: '关于 | InferenceX',
- description:
- 'InferenceX 是一个独立、厂商中立、可复现的基准测试平台,持续测试各类 AI 加速器上的推理软件性能。',
+ description: ABOUT_DESCRIPTION,
url: `${SITE_URL}/zh/about`,
locale: ZH_OG_LOCALE,
},
twitter: {
title: '关于 | InferenceX',
- description:
- 'InferenceX 是一个独立、厂商中立、可复现的基准测试平台,持续测试各类 AI 加速器上的推理软件性能。',
+ description: ABOUT_DESCRIPTION,
},
};
@@ -49,7 +49,7 @@ export default function AboutPageZh() {
随着世界以指数级速度迈向
@@ -57,8 +57,8 @@ export default function AboutPageZh() {
InferenceX™(原名
- InferenceMAX)是我们独立、厂商中立、可复现的基准测试平台,通过持续测试实际可用于 ML
- 社区的各类 AI 加速器上的推理软件来解决这些问题。
+ InferenceMAX)是我们独立、厂商中立、可复现的基准测试平台。它测试固定序列推理服务和
+ AgentX 长上下文多轮智能体编码工作负载,覆盖 ML 社区实际可用的各类 AI 加速器与服务栈。