Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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,066 changes: 533 additions & 533 deletions docs/app/page.tsx

Large diffs are not rendered by default.

61 changes: 61 additions & 0 deletions docs/app/platform/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
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">
<a 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" />
</a>
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
</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