diff --git a/apps/web/src/app/[locale]/page.tsx b/apps/web/src/app/[locale]/page.tsx
index c71597866..ae2ad20f4 100644
--- a/apps/web/src/app/[locale]/page.tsx
+++ b/apps/web/src/app/[locale]/page.tsx
@@ -14,7 +14,7 @@ import { useIncidents } from '@/hooks/useIncidents'
import { useHosts } from '@/stores/dashboard.store'
import { IncidentCard } from '@/components/incident'
import { OpenClawPanel } from '@/components/ai/openclaw-panel'
-import { HostGrid } from '@/components/infra/host-grid'
+import { HostGrid, type HostInfo } from '@/components/infra/host-grid'
import { AppLayout } from '@/components/layout'
// =============================================================================
@@ -214,7 +214,16 @@ export default function Home({ params }: { params: { locale: string } }) {
}}>
{tDashboard('infrastructure')}
-
+ ({
+ hostname: h.name,
+ ip: h.ip,
+ cpuPct: h.metrics?.cpu_percent ?? null,
+ ramPct: h.metrics?.memory_percent ?? null,
+ services: h.services.map(s => ({
+ name: s.name,
+ healthy: s.status === 'up' || s.status === 'healthy',
+ })),
+ }))} />
diff --git a/apps/web/src/components/incident/incident-card.tsx b/apps/web/src/components/incident/incident-card.tsx
index 056aa78d9..e4441ac6a 100644
--- a/apps/web/src/components/incident/incident-card.tsx
+++ b/apps/web/src/components/incident/incident-card.tsx
@@ -334,7 +334,7 @@ export function IncidentCard({ incident, decision, onApprovalChange }: IncidentC
gap: 5,
fontSize: 13,
color: '#87867f',
- width: '100%',
+ width: 'calc(100% - 20px)',
textAlign: 'left' as const,
fontFamily: 'inherit',
}}