Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions docs/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { Metadata } from "next"
import type { Metadata, Viewport } from "next"
import { Poppins } from "next/font/google"
import { GoogleTagManager } from "@next/third-parties/google"

Expand All @@ -13,7 +13,7 @@ import "@/styles/globals.css"
const inter = Poppins({
variable: "--font-inter",
subsets: ["latin"],
weight: "500"
weight: ["300", "400", "500", "600", "700"],
})

const baseUrl = Settings.metadataBase
Expand Down Expand Up @@ -49,6 +49,11 @@ export const metadata: Metadata = {
},
}

export const viewport: Viewport = {
width: "device-width",
initialScale: 1,
}

export default function RootLayout({
children,
}: Readonly<{
Expand Down
1,072 changes: 538 additions & 534 deletions docs/app/page.tsx

Large diffs are not rendered by default.

62 changes: 62 additions & 0 deletions docs/app/platform/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import Link from "next/link"
import { ArrowRight, Binoculars, Fingerprint, GitBranch, Radar, ShieldCheck, SlidersHorizontal } from "lucide-react"

const capabilities = [
["Discover", "Inventory", "Find agents, AI apps, MCP servers, tools, vector stores, LLM calls, service accounts, and unmanaged deployments.", Binoculars],
["Map", "Identity chain", "Connect human initiators, agents, orchestrators, sub-agents, service accounts, APIs, databases, and destinations.", GitBranch],
["Observe", "Runtime access", "See what agents and NHIs actually do with data: queries, operations, sensitive fields, movement, and timing.", Radar],
["Detect", "Appropriateness", "Surface behavior that is authorized but contextually wrong for workflow, data sensitivity, timing, or destination.", ShieldCheck],
["Govern", "Least privilege", "Compare allowed access with actual usage and right-size permissions using runtime evidence.", SlidersHorizontal],
["Investigate", "Triage", "Group identity, data, workflow, anomaly, and movement signals into investigation bundles.", Fingerprint],
] as const

export default function PlatformPage() {
return (
<main className="bg-[#050605] text-white">
<section className="border-b border-white/10 py-24">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<p className="text-sm font-semibold uppercase tracking-wide text-[#79d957]">Platform</p>
<h1 className="mt-5 max-w-5xl text-5xl font-semibold leading-[1.04] tracking-tight sm:text-7xl">
Runtime security for agentic data access.
</h1>
<p className="mt-8 max-w-3xl text-xl leading-9 text-white/50">
Aurva keeps agents, identities, data access, and downstream movement in one runtime context so teams can decide what matters.
</p>
</div>
</section>

<section className="py-20">
<div className="mx-auto grid max-w-7xl gap-4 px-4 sm:px-6 md:grid-cols-2 lg:grid-cols-3 lg:px-8">
{capabilities.map(([title, eyebrow, text, Icon]) => (
<div key={title} className="rounded-lg border border-white/10 bg-white/[0.03] p-6">
<div className="flex items-center justify-between">
<div className="text-xs font-semibold uppercase tracking-wide text-white/35">{eyebrow}</div>
<Icon size={21} className="text-[#79d957]" />
</div>
<h2 className="mt-10 text-3xl font-semibold tracking-tight">{title}</h2>
<p className="mt-4 text-sm leading-7 text-white/48">{text}</p>
</div>
))}
</div>
</section>

<section className="border-y border-white/10 py-20">
<div className="mx-auto grid max-w-7xl gap-8 px-4 sm:px-6 lg:grid-cols-[0.8fr_1.2fr] lg:px-8">
<h2 className="text-4xl font-semibold tracking-tight sm:text-6xl">Built around one question.</h2>
<p className="text-2xl leading-10 text-white/50">
Was this data access appropriate for the agent, identity, workflow, data sensitivity, timing, and destination?
</p>
</div>
</section>

<section className="py-16">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<Link href="/solutions" className="inline-flex items-center rounded-lg border border-white/15 px-5 py-3 text-sm font-semibold text-white/82 transition hover:bg-white/10">
Explore solutions
<ArrowRight size={16} className="ml-2" />
</Link>
</div>
</section>
</main>
)
}
43 changes: 43 additions & 0 deletions docs/app/solutions/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import { ArrowRight, Database, FileSearch, KeyRound, ShieldAlert } from "lucide-react"

const solutionGroups = [
["Agentic Security", "Discover agents, map identity chains, monitor runtime data access, and detect inappropriate use in context.", ["Agentic Access Monitoring", "MCP and Tool Security", "Prompt Injection Data Access"], ShieldAlert],
["Runtime Data Security", "See which identities, applications, and agents touch sensitive data across databases, APIs, and downstream destinations.", ["Data Detection and Response", "Database Activity Monitoring", "Data Flow Monitoring"], Database],
["Identity Security", "Use runtime evidence to govern service accounts, NHIs, excessive permissions, and agent access paths.", ["NHI Least Privilege", "Identity Chaining", "Permission Review"], KeyRound],
["Privacy and Compliance", "Prove what sensitive data was accessed, by whom, through which workflow, and where it moved.", ["AI Privacy Manager", "Compliance Readiness", "Investigation Evidence"], FileSearch],
] as const

export default function SolutionsPage() {
return (
<main className="bg-[#050605] text-white">
<section className="border-b border-white/10 py-24">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<p className="text-sm font-semibold uppercase tracking-wide text-[#79d957]">Solutions</p>
<h1 className="mt-5 max-w-5xl text-5xl font-semibold leading-[1.04] tracking-tight sm:text-7xl">
Secure sensitive data use across AI, identities, and runtime workflows.
</h1>
</div>
</section>

<section className="py-20">
<div className="mx-auto grid max-w-7xl gap-4 px-4 sm:px-6 lg:grid-cols-2 lg:px-8">
{solutionGroups.map(([title, text, links, Icon]) => (
<article key={title} className="rounded-lg border border-white/10 bg-white/[0.03] p-6">
<Icon size={23} className="text-[#79d957]" />
<h2 className="mt-10 text-3xl font-semibold tracking-tight">{title}</h2>
<p className="mt-4 max-w-xl text-sm leading-7 text-white/48">{text}</p>
<div className="mt-8 grid gap-2">
{links.map((link) => (
<a key={link} href="/use-cases" className="flex items-center justify-between border-t border-white/10 py-3 text-sm font-semibold text-white/78">
{link}
<ArrowRight size={15} />
</a>
))}
Comment thread
apurv-aurva marked this conversation as resolved.
</div>
</article>
))}
</div>
</section>
</main>
)
}
47 changes: 47 additions & 0 deletions docs/app/use-cases/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { Activity, ArrowRight, Bot, Database, GitBranch, KeyRound } from "lucide-react"

const useCases = [
["Agentic Access Monitoring", "See which agents exist, what identities they use, what data they touch, and whether behavior matches the intended workflow.", Bot],
["AI Data Exposure", "Detect when sensitive data is retrieved by an agent and sent to an LLM, external API, third-party tool, or unexpected destination.", Database],
["Identity Chaining", "Trace user-to-agent-to-service-account-to-database activity so approved credentials no longer hide agentic risk.", GitBranch],
["NHI Least Privilege", "Compare what non-human identities can access with what they actually use, then reduce excessive permissions with runtime evidence.", KeyRound],
["Runtime Appropriateness", "Prioritize the changes that matter: first-time sensitive data access, new destinations, unusual volumes, and purpose drift.", Activity],
] as const

export default function UseCasesPage() {
return (
<main className="bg-[#050605] text-white">
<section className="border-b border-white/10 py-24">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<p className="text-sm font-semibold uppercase tracking-wide text-[#79d957]">Use cases</p>
<h1 className="mt-5 max-w-5xl text-5xl font-semibold leading-[1.04] tracking-tight sm:text-7xl">
Start with the risk your security team needs to answer.
</h1>
</div>
</section>

<section className="py-20">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div className="divide-y divide-white/10 overflow-hidden rounded-lg border border-white/10 bg-white/[0.03]">
{useCases.map(([title, text, Icon]) => (
<article key={title} className="grid gap-6 p-6 md:grid-cols-[220px_1fr_auto] md:items-center">
<div className="flex items-center gap-3 text-sm font-semibold uppercase tracking-wide text-white/35">
<Icon size={18} className="text-[#79d957]" />
Use case
</div>
<div>
<h2 className="text-2xl font-semibold tracking-tight">{title}</h2>
<p className="mt-2 max-w-2xl text-sm leading-7 text-white/48">{text}</p>
</div>
<a href="/solutions" className="inline-flex items-center text-sm font-semibold text-white/78">
Solution
<ArrowRight size={15} className="ml-2" />
</a>
Comment thread
coderabbitai[bot] marked this conversation as resolved.
</article>
))}
</div>
</div>
</section>
</main>
)
}
22 changes: 14 additions & 8 deletions docs/components/navigation/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { GitHubLink } from "@/settings/navigation"

export function Footer() {
return (
<footer className="border-t py-8 text-sm text-muted-foreground">
<footer className="border-t border-white/10 bg-[#050B17] py-8 text-sm text-white/55">
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
<div className="flex flex-col items-center justify-between gap-4 sm:flex-row">
<div className="flex items-center gap-2">
Expand All @@ -28,30 +28,36 @@ export function Footer() {
</Link>
)}
<span>
AIOStack
&copy; {new Date().getFullYear()}{" "} <Link className="font-semibold hover:text-foreground" href={Company.link}>
Aurva
&copy; {new Date().getFullYear()}{" "} <Link className="font-semibold hover:text-white" href={Company.link}>
{Company.name}
</Link>{" "}

</span>
</div>
<div className="flex items-center gap-4">
<div className="flex flex-wrap items-center justify-center gap-x-4 gap-y-2">
<Link href="https://github.com/aurva-io/AIOstack/blob/main/LICENSE" target="_blank"
rel="noopener noreferrer" className="hover:text-foreground">
rel="noopener noreferrer" className="hover:text-white">
License
</Link>
<Link href="/docs/home" className="hover:text-foreground">
<Link href="/platform" className="hover:text-white">
Platform
</Link>
<Link href="/solutions" className="hover:text-white">
Solutions
</Link>
<Link href="/docs/home" className="hover:text-white">
Docs
</Link>
<Link href="/faqs" className="hover:text-foreground">
<Link href="/faqs" className="hover:text-white">
FAQs
</Link>
{GitHubLink.href && (
<Link
href={GitHubLink.href}
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-1 hover:text-foreground"
className="inline-flex items-center gap-1 hover:text-white"
>
<LuGithub className="h-3.5 w-3.5" /> GitHub
</Link>
Expand Down
38 changes: 12 additions & 26 deletions docs/components/navigation/logo.tsx
Original file line number Diff line number Diff line change
@@ -1,34 +1,20 @@
import Image from "next/image"
import { Link } from "lib/transition"

import { Settings } from "@/lib/meta"
export function Logo({ tone = "dark" }: { tone?: "dark" | "light" }) {
const isLight = tone === "light"

export function Logo() {
return (
<Link href="/" className="flex items-center gap-2.5">
<div className="relative w-7 h-7 perspective-1000">
<div className="relative w-full h-full preserve-3d animate-cube-rotate">
<Image
src={Settings.siteicon}
alt={`${Settings.title} main logo`}
width={28}
height={28}
loading="lazy"
decoding="async"
className="dark:invert absolute inset-0 backface-hidden"
/>
<Image
src={Settings.siteicon2}
alt={`${Settings.title} secondary logo`}
width={28}
height={28}
loading="lazy"
decoding="async"
className="absolute inset-0 backface-hidden rotate-y-180"
/>
</div>
</div>
<span className="text-md font-semibold">AIOStack</span>
<Link href="/" className="flex items-center">
<Image
src={isLight ? "/aiostack-logos/aurva.svg" : "/aiostack-logos/aurva-mono.svg"}
alt="Aurva"
width={isLight ? 121 : 180}
height={isLight ? 42 : 61}
loading="eager"
decoding="async"
className="h-8 w-auto"
/>
</Link>
)
}
43 changes: 27 additions & 16 deletions docs/components/navigation/navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,14 @@ import { Logo } from "@/components/navigation/logo"
import Search from "@/components/navigation/search"
import { SheetLeft } from "@/components/navigation/sidebar"
import { ModeToggle } from "@/components/navigation/theme-toggle"
import { Zap } from "lucide-react";


function PrimaryButton({ children, href = "#", onClick, className = "" }: { children: React.ReactNode; href?: string; onClick?: () => void; className?: string }) {
return (
<a
href={href}
onClick={onClick}
className={`inline-flex items-center justify-center rounded-2xl px-4 py-2 text-sm font-semibold text-white shadow-lg shadow-emerald-500/20 ring-1 ring-emerald-400/40 transition hover:scale-[1.01] hover:bg-emerald-500/90 focus:outline-none focus:ring-2 focus:ring-emerald-300 active:scale-[.99] bg-emerald-500 ${className}`}
className={`inline-flex items-center justify-center rounded-full bg-[#80CB51] px-4 py-2 text-sm font-medium text-[#07100B] transition hover:brightness-110 focus:outline-none focus:ring-2 focus:ring-[#80CB51] ${className}`}
>
{children}
</a>
Expand All @@ -29,7 +28,7 @@ function GhostButton({ children, href = "#", onClick, className = "" }: { childr
<a
href={href}
onClick={onClick}
className={`inline-flex items-center justify-center rounded-2xl px-4 py-2 text-sm font-semibold text-black dark:text-emerald-300 ring-1 ring-black/15 dark:ring-white/15 transition hover:bg-white/5 focus:outline-none focus:ring-2 focus:ring-emerald-300 ${className}`}
className={`inline-flex items-center justify-center rounded-full px-4 py-2 text-sm font-medium text-white/78 ring-1 ring-white/15 transition hover:bg-white/10 focus:outline-none focus:ring-2 focus:ring-[#80CB51] ${className}`}
>
{children}
</a>
Expand All @@ -39,16 +38,17 @@ function GhostButton({ children, href = "#", onClick, className = "" }: { childr
export function Navbar() {
const pathname = usePathname();
const isHomePage = pathname === '/' || pathname === '/about'
const isLightHome = pathname === '/'

return (
<nav className="bg-opacity-5 sticky top-0 z-50 h-16 w-fulls px-2 backdrop-blur-xl backdrop-filter md:px-4">
<nav className={`sticky top-0 z-50 h-16 w-full border-b px-2 backdrop-blur-xl backdrop-filter md:px-4 ${isLightHome ? "border-[#E2DED5] bg-[#F7F5EF]/90 text-[#111411]" : "border-white/10 bg-[#050B17]/95 text-white"}`}>
<div className="mx-auto flex h-full max-w-7xl items-center justify-between gap-4 p-1 sm:gap-8 sm:p-3 md:gap-12">
<div className="flex items-center gap-5">
<div className="flex items-center gap-6">
<div className="flex">
<Logo />
<Logo tone={isLightHome ? "light" : "dark"} />
</div>
<div className="text-muted-foreground hidden items-center gap-5 text-sm font-medium md:flex">
<div className={`hidden items-center gap-5 text-sm font-medium md:flex ${isLightHome ? "text-[#686D64]" : "text-muted-foreground"}`}>
<NavMenu />
</div>
</div>
Expand All @@ -72,15 +72,26 @@ export function Navbar() {
)} */}
{!isHomePage && <ModeToggle />}
</div>
<div className="hidden sm:flex items-center gap-3">
<GhostButton href={GitHubLink.href}>
<LuGithub size={16} className="mr-2" />
<span>Star on GitHub</span>
</GhostButton>
<PrimaryButton href="/#install">
<Zap size={16} className="mr-2" /> Install Free
</PrimaryButton>
</div>
{isLightHome ? (
<div className="hidden sm:flex items-center gap-3">
<GhostButton href="/#demo" className="rounded-[10px] text-[#111411] ring-[#D3D0C6] hover:bg-white">
Talk to an Engineer
</GhostButton>
<PrimaryButton href="https://aurva.ai/#install" className="rounded-[10px]">
Try free
</PrimaryButton>
</div>
) : (
<div className="hidden sm:flex items-center gap-3">
<GhostButton href={GitHubLink.href}>
<LuGithub size={16} className="mr-2" />
<span>Star on GitHub</span>
</GhostButton>
<PrimaryButton href="/#demo">
Get a demo
</PrimaryButton>
</div>
)}
<div className="flex sm:hidden">
<SheetLeft />
</div>
Expand All @@ -97,7 +108,7 @@ export function NavMenu({ isSheet = false }) {
const Comp = (
<Anchor
key={item.title + item.href}
activeClassName="font-bold text-primary"
activeClassName="font-bold text-white"
absolute
className={`flex items-center gap-1 ${isSheet ? "text-base font-semibold" : "text-sm font-medium"}`}
href={item.href}
Expand Down
Loading