-
- Your observability data deserves better than a dashboard
+
+ Your Observability data deserves better than a dashboard
Connect Parseable to Claude, Cursor, or any MCP-compatible agent and investigate incidents across logs, metrics, traces, and alerts - in natural language, without switching context.
diff --git a/src/ui-app/components/landing/FeatureGrid.tsx b/src/ui-app/components/landing/FeatureGrid.tsx
index 5269eb0..8bec3e8 100644
--- a/src/ui-app/components/landing/FeatureGrid.tsx
+++ b/src/ui-app/components/landing/FeatureGrid.tsx
@@ -1,105 +1,72 @@
import {
- IconBell,
- IconBolt,
- IconDatabase,
- IconEye,
- IconSearch,
- IconShieldCheck,
-} from "@tabler/icons-react";
+ Alert01Icon,
+ BoltIcon,
+ ChatSearch01Icon,
+ EyeIcon,
+ Search01Icon,
+ ShieldCheckIcon,
+} from "@hugeicons/core-free-icons";
+import { HugeiconsIcon } from "@hugeicons/react";
const FEATURES = [
{
- icon: ,
- iconColor: "#3A3A8C",
- iconBg: "rgba(58,58,140,0.08)",
+ icon: ChatSearch01Icon,
+ mobileOrder: "order-1",
title: "Natural language querying",
- desc: "Ask questions in plain English. The server translates them to SQL and runs against your Parseable datasets.",
+ description: "Ask questions in plain English. The server translates them to SQL and runs against your Parseable datasets.",
},
{
- icon: ,
- iconColor: "#D97706",
- iconBg: "rgba(217,119,6,0.08)",
+ icon: Search01Icon,
+ mobileOrder: "order-2",
title: "Sub-second search",
- desc: "Full-fidelity queries across millions of log events, powered by Parseable's columnar storage engine.",
+ description: "Full-fidelity queries across millions of log events, powered by Parseable's columnar storage engine.",
},
{
- icon: ,
- iconColor: "#0891B2",
- iconBg: "rgba(8,145,178,0.08)",
+ icon: BoltIcon,
+ mobileOrder: "order-6",
title: "Full tool surface",
- desc: "Your Parseable instance publishes its live OSS, Enterprise, or Cloud tool catalog.",
+ description: "Your Parseable instance publishes its live OSS, Enterprise, or Cloud tool catalog.",
},
{
- icon: ,
- iconColor: "#059669",
- iconBg: "rgba(5,150,105,0.08)",
+ icon: ShieldCheckIcon,
+ mobileOrder: "order-3",
title: "Direct API key authentication",
- desc: "Connects to your Parseable instance using its URL and API key headers. No OAuth flow or separate account required.",
+ description: "Connects to your Parseable instance using its URL and API key headers. No OAuth flow or separate account required.",
},
{
- icon: ,
- iconColor: "#7C3AED",
- iconBg: "rgba(124,58,237,0.08)",
+ icon: EyeIcon,
+ mobileOrder: "order-4",
title: "Dashboard-free investigation",
- desc: "Debug production incidents, find anomalies, and correlate signals without switching context.",
+ description: "Debug production incidents, find anomalies, and correlate signals without switching context.",
},
{
- icon: ,
- iconColor: "#DC2626",
- iconBg: "rgba(220,38,38,0.08)",
+ icon: Alert01Icon,
+ mobileOrder: "order-5",
title: "Safety rails built in",
- desc: "Parseable validates tool input and enforces RBAC at execution time.",
+ description: "Parseable validates tool input and enforces RBAC at execution time.",
},
];
export function FeatureGrid() {
return (
-
-
-
-
- Everything you need to investigate faster
-
-
+
+
+
+ Everything that you need to investigate
+
+
-
- {FEATURES.map(({ icon, iconColor, iconBg, title, desc }) => (
-
-
- {icon}
-
-
-
- {title}
-
-
- {desc}
-
-
+
+ {FEATURES.map(({ icon, title, description, mobileOrder }) => (
+
+
+
+
{title}
- ))}
-
+
{description}
+
+ ))}
);
}
-
-// ─── Prompts ──────────────────────────────────────────────────────────────────
diff --git a/src/ui-app/components/landing/Footer.tsx b/src/ui-app/components/landing/Footer.tsx
index 959da23..9f2f5b8 100644
--- a/src/ui-app/components/landing/Footer.tsx
+++ b/src/ui-app/components/landing/Footer.tsx
@@ -1,33 +1,54 @@
+import { IconBrandGithub, IconBrandLinkedin, IconBrandSlack, IconBrandX, IconBrandYoutube, IconChevronDown } from "@tabler/icons-react";
import { Link } from "../ui/Link";
+const groups = [
+ { title: "Product", links: [["Showcase", "https://www.parseable.com/showcase"], ["Integrations", "https://www.parseable.com/integrations"], ["Features", "https://www.parseable.com/docs"]] },
+ { title: "Resources", links: [["Blogs", "https://www.parseable.com/blog"], ["Docs", "https://www.parseable.com/docs"], ["Cloud quickstart", "https://www.parseable.com/docs/quickstart"]] },
+ { title: "Legal", links: [["Privacy policy", "/policy"], ["Terms of use", "/tos"], ["DPA", "https://www.parseable.com/dpa"]] },
+ { title: "Community", links: [["GitHub", "https://github.com/parseablehq/parseable-mcp-server"], ["Slack", "https://logg.ing/community"], ["Status", "https://status.parseable.com"]] },
+];
+
export function Footer() {
return (
-
-
-
- © {new Date().getFullYear()} Parseable, Inc.
-
-
- {[
- { label: "Terms", href: "/tos" },
- { label: "Privacy", href: "/policy" },
- { label: "Docs", href: "https://www.parseable.com/docs/mcp" },
- { label: "GitHub", href: "https://github.com/parseablehq/parseable-mcp-server" },
- ].map(({ label, href }) => (
-
- {label}
-
- ))}
-
+
);
}
-
-// ─── Page ─────────────────────────────────────────────────────────────────────
diff --git a/src/ui-app/components/landing/Hero.tsx b/src/ui-app/components/landing/Hero.tsx
index 46be79d..ef57b80 100644
--- a/src/ui-app/components/landing/Hero.tsx
+++ b/src/ui-app/components/landing/Hero.tsx
@@ -1,29 +1,29 @@
+import { CircleLockCheck01Icon, Telescope01Icon } from "@hugeicons/core-free-icons";
+import { HugeiconsIcon } from "@hugeicons/react";
+
export function Hero() {
return (
-
-
- {/* Badge */}
-
-
-
- Observability, meet AI
-
+
+
+
+
+ Parseable MCP Server
+
+
+ Log monitoring
+
+ AI native
+
+
+
+
+ Connect Claude, Cursor, or any MCP-compatible agent to Parseable. Query terabytes of logs, metrics, and traces in natural language - at sub-second speed.
+
+
-
- {/* H1 */}
-
- Parseable MCP Server
-
-
- {/* Description */}
-
- Connect Claude, Cursor, or any MCP-compatible agent to Parseable.
- Query terabytes of logs, metrics, and traces in natural language - at
- sub-second speed.
-
);
diff --git a/src/ui-app/components/landing/Nav.tsx b/src/ui-app/components/landing/Nav.tsx
index 5801414..d61757b 100644
--- a/src/ui-app/components/landing/Nav.tsx
+++ b/src/ui-app/components/landing/Nav.tsx
@@ -3,21 +3,18 @@ import {
IconArrowRight,
IconBrandGithub,
IconBrandSlack,
- IconCalendarEvent,
IconChartLine,
IconChevronDown,
IconCode,
- IconCoin,
IconCpu,
IconLogs,
IconMenu2,
IconMessage,
IconPlugConnected,
IconRoute,
- IconRocket,
+ IconShieldCheck,
IconSparkles,
IconSum,
- IconTelescope,
IconX,
type TablerIcon,
} from "@tabler/icons-react";
@@ -34,81 +31,74 @@ type ProductItem = {
Icon: TablerIcon;
};
-const PRODUCT_SECTIONS: { title: string; items: ProductItem[] }[] = [
- {
- title: "AI Native",
- items: [
- { label: "Ask questions", href: `${SITE}/docs/user-guide/ai-native/keystone`, description: "Natural language interface", Icon: IconMessage },
- { label: "Proactive alerting", href: `${SITE}/docs/user-guide/alerting/forecasting`, description: "Time series forecasting alerts", Icon: IconSparkles },
- { label: "Summary on demand", href: `${SITE}/docs/user-guide/ai-native/summary`, description: "Real time insights", Icon: IconSum },
- ],
- },
- {
- title: "Product",
- items: [
- { label: "Logs", href: `${SITE}/solutions/log-monitoring`, description: "Centralized management at scale", Icon: IconLogs },
- { label: "Metrics", href: `${SITE}/solutions/metrics-monitoring`, description: "High cardinality made simple", Icon: IconChartLine },
- { label: "Traces", href: `${SITE}/solutions/traces`, description: "End to end distributed tracing", Icon: IconRoute },
- { label: "Alerts", href: `${SITE}/docs/user-guide/alerting`, description: "Get notified when issues arise", Icon: IconBell },
- { label: "Agent observability", href: `${SITE}/docs/user-guide/agent-observability`, description: "Observe your AI Agents", Icon: IconCpu },
- { label: "SQL Editor", href: `${SITE}/docs/user-guide/sql-editor`, description: "Query telemetry data with SQL", Icon: IconCode },
- ],
- },
- {
- title: "Platform",
- items: [
- { label: "OTel first", href: `${SITE}/docs/ingest-data/otel`, description: "OTel native ingestion and analysis", Icon: IconTelescope },
- { label: "Integration", href: `${SITE}/docs/integrations`, description: "100s of integrations supported", Icon: IconPlugConnected },
- { label: "Predictable cost", href: `${SITE}/pricing`, description: "Pay only for what you use", Icon: IconCoin },
- ],
- },
+const CAPABILITY_COLUMNS: ProductItem[][] = [
+ [
+ { label: "Agent observability", description: "Deep insights into agents", href: "/docs/user-guide/agent-observability", Icon: IconCpu },
+ { label: "APM", description: "Performance monitoring", href: "/docs/user-guide/apm", Icon: IconChartLine },
+ { label: "Logs", description: "Log analysis", href: "/solutions/log-monitoring", Icon: IconLogs },
+ { label: "Metrics", description: "Timeseries data analysis", href: "/solutions/metrics-monitoring", Icon: IconChartLine },
+ { label: "Traces", description: "Distributed tracing", href: "/solutions/traces", Icon: IconRoute },
+ ],
+ [
+ { label: "Ask questions", description: "Query in natural language", href: "/docs/user-guide/ai-native/keystone", Icon: IconMessage },
+ { label: "Summary on demand", description: "Instant data summaries", href: "/docs/user-guide/ai-native/summary", Icon: IconSum },
+ { label: "Anomaly detection", description: "ML anomaly detection", href: "/docs/user-guide/alerting", Icon: IconBell },
+ { label: "Proactive learning", description: "Learn from patterns", href: "/docs/user-guide/alerting/forecasting", Icon: IconSparkles },
+ { label: "SQL & PromQL Editor", description: "Raw query execution", href: "/docs/user-guide/sql-editor", Icon: IconCode },
+ ],
+];
+
+const CONNECTORS: ProductItem[] = [
+ { label: "MCP", description: "Connect any LLM", href: "https://mcp.parseable.com", Icon: IconPlugConnected },
+ { label: "pb", description: "CLI for agents & humans", href: "/docs/pb-cli", Icon: IconCode },
+ { label: "Grafana", description: "Connect to Grafana", href: "/docs/integrations/visualization/grafana", Icon: IconChartLine },
+ { label: "AI providers", description: "Ingest from agents", href: "/docs/ingest-data/ai-agents", Icon: IconCpu },
+ { label: "Kafka & Redpanda", description: "Ingest from topics", href: "/docs/ingest-data/streaming/kafka", Icon: IconRoute },
+];
+
+const RESOURCES: ProductItem[] = [
+ { label: "Blog", description: "Read our latest articles", href: "/blog", Icon: IconLogs },
+ { label: "About", description: "Learn more about us", href: "/about", Icon: IconMessage },
+ { label: "Trust center", description: "Privacy and security practices", href: "https://trust.parseable.com/", Icon: IconShieldCheck },
];
const baseLink =
- "inline-flex w-max items-center justify-center gap-2.5 rounded-lg px-4 py-2 font-inter text-sm font-normal leading-normal text-black/80 transition-colors hover:bg-[rgba(241,231,255,0.40)] hover:text-black hover:backdrop-blur-[4px] focus:outline-none";
+ "inline-flex w-max items-center justify-center gap-1 font-inter text-base font-medium leading-normal text-[#6d6d6d] transition-colors hover:text-[#1b1b1b] focus:outline-none focus-visible:text-[#1b1b1b]";
-function ProductMenu({ mobile = false }: { mobile?: boolean }) {
+function productHref(href: string) {
+ return href.startsWith("http") ? href : `${SITE}${href}`;
+}
+
+function ProductColumn({ title, items }: { title?: string; items: ProductItem[] }) {
return (
-
- {PRODUCT_SECTIONS.map((section) => (
-
-
{section.title}
-
- {section.items.map(({ label, href, description, Icon }) => (
-
-
-
-
-
-
- {label}
-
-
- {description}
-
-
- ))}
-
-
- ))}
- {!mobile && (
-
-
-
-
Start for free Start your 14 days fully featured trial
-
-
-
-
Book a demo Talk to our team of observability experts
+
+ {title ?
{title}
:
}
+
+ {items.map(({ label, description, href, Icon }) => (
+
+
+ {label} {description}
+ ))}
+
+
+ );
+}
+
+function ProductMenu({ mobile = false }: { mobile?: boolean }) {
+ if (mobile) return
{CAPABILITY_COLUMNS.map((items, index) =>
)}
;
+ return (
+
+
+
+
{CAPABILITY_COLUMNS.map((items, index) => )}
+
+
+ Download Enterprise Trial
Download the latest Enterprise edition of Parseable for a full-featured trial.
Download
+ Latest in Parseable
+
- )}
+
);
}
@@ -131,46 +121,53 @@ export function Nav() {
}, [mobileOpen]);
return (
-
-
-
-
+
+
+
+
+
-
- Home
-
+
+ Home
+
Product
-
-
Pricing
-
Docs
-
+
Resources
-
-
About us
-
Blog
-
Trust center
+
+
+ {RESOURCES.map(({ label, description, href, Icon }) => (
+
+
+ {label} {description}
+
+ ))}
+
+
Docs
+
About
+
Pricing
+
-
-
-
-
-
Start for free
+
+
+
+ Start for free
-
setMobileOpen(true)} className="flex h-10 w-10 cursor-pointer items-center justify-center justify-self-end rounded-lg text-[#3A3A8C] lg:hidden" aria-label="Open menu">
+
setMobileOpen(true)} className="flex size-6 cursor-pointer items-center justify-center justify-self-end text-[#1b1b1b] lg:hidden" aria-label="Open menu">
{mobileOpen && (
diff --git a/src/ui-app/components/landing/Prompts.tsx b/src/ui-app/components/landing/Prompts.tsx
index 8dfc249..0322b84 100644
--- a/src/ui-app/components/landing/Prompts.tsx
+++ b/src/ui-app/components/landing/Prompts.tsx
@@ -6,7 +6,7 @@ type CopyKey = string;
function useCopy() {
const [copied, setCopied] = useState
(null);
const copy = useCallback((text: string, key: CopyKey) => {
- navigator.clipboard.writeText(text).catch(() => {});
+ navigator.clipboard.writeText(text).catch(() => { });
setCopied(key);
setTimeout(() => setCopied(null), 2000);
}, []);
@@ -86,83 +86,50 @@ const PROMPT_CATEGORIES: PromptCategory[] = [
];
export function Prompts() {
- const [category, setCategory] = useState("All");
+ const [category, setCategory] = useState("Discover");
const { copied, copy } = useCopy();
- const filtered =
- category === "All"
- ? PROMPTS
- : PROMPTS.filter((p) => p.category === category);
+ const featured = [PROMPTS[0], PROMPTS[1], PROMPTS[2], PROMPTS[14], PROMPTS[3], PROMPTS[3], PROMPTS[0], PROMPTS[1]];
+ const filtered = category === "Discover" ? featured : category === "All" ? PROMPTS : PROMPTS.filter((p) => p.category === category);
return (
-