Skip to content
Draft
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
118 changes: 118 additions & 0 deletions content/marketing/use-cases/decentralized-ai.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
title: "Decentralized AI"
description: "Why AR.IO and Arweave are a strong foundation for AI data, provenance, and resilient access."
full: true
---

import { Card, Cards } from "fumadocs-ui/components/card";
import { Callout } from "fumadocs-ui/components/callout";
import { Steps, Step } from "fumadocs-ui/components/steps";
import { Sparkles, ShieldCheck, Database, Globe, Cpu, ArrowRight } from "lucide-react";

# Decentralized AI

Artificial Intelligence thrives on vast amounts of data for training, analysis, and execution. Managing this data efficiently and securely gets harder when you need **immutability**, **auditability**, and **long-term accessibility**.

<Cards>
<Card
icon={<Sparkles />}
title="Talk to the team"
description="Explore how permanence + provenance can strengthen your AI stack."
href="mailto:info@pds.inc"
/>
<Card
icon={<ArrowRight />}
title="Get started"
description="Jump into the docs and start building on AR.IO."
href="/learn"
/>
</Cards>

<Callout type="info">
<strong>Quick takeaway:</strong> AR.IO makes Arweave data faster and easier to use via gateways, while Arweave provides permanent, verifiable storage for datasets, model artifacts, and audit trails.
</Callout>

## Why AR.IO and Arweave for AI?

## Key benefits

<Cards>
<Card
icon={<Database />}
title="Permanent data storage"
description="Pay once, store forever—predictable costs for long-lived datasets and model artifacts."
/>
<Card
icon={<ShieldCheck />}
title="Immutable data integrity"
description="Once stored, data can’t be silently changed—your AI inputs remain verifiable."
/>
<Card
icon={<Globe />}
title="Scalable & accessible"
description="AR.IO gateways improve read/write performance so systems can scale without sacrificing availability."
/>
<Card
icon={<Cpu />}
title="Provenance & coordination"
description="Maintain transparent histories of data and outputs, with emerging compute patterns in the ecosystem."
/>
</Cards>

## How teams use this (examples)

<Steps>
<Step title="Store training datasets & artifacts permanently">
Keep the exact training inputs, configs, and outputs available for auditing and reproducibility.
</Step>
<Step title="Serve and retrieve data reliably">
Use AR.IO gateways for performant access to historical and newly-published data—without tampering risk.
</Step>
<Step title="Prove what was used (and when)">
Leverage immutable provenance to satisfy governance, compliance, and trust requirements.
</Step>
</Steps>

## AI projects leveraging AR.IO + Arweave

<Cards>
<Card
title="Machine learning model training"
description="Store training datasets permanently to continually refine and audit models."
href="https://www.firstbatch.xyz/"
/>
<Card
title="AI governance & compliance"
description="Maintain transparent, immutable records of decisions and data handling."
href="https://getfair.ai/"
/>
<Card
title="Decentralized computation for AI models"
description="Explore AO, decentralized compute built on top of Arweave."
href="https://ao.arweave.net/"
/>
</Cards>

## Next steps

<Cards>
<Card
title="Upload data"
description="Store datasets and artifacts on Arweave using Turbo."
href="/build/upload"
/>
<Card
title="Access data"
description="Retrieve data via decentralized gateways and verified routing."
href="/build/access"
/>
<Card
title="ArNS naming"
description="Use resilient, censorship-resistant names for datasets and resources."
href="/build/access/arns"
/>
</Cards>

## Contact

Email us at **[`info@pds.inc`](mailto:info@pds.inc)** to discuss how AR.IO and Arweave can support your AI roadmap.
12 changes: 12 additions & 0 deletions public/ario-lockup.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ export default function Layout({ children }: { children: React.ReactNode }) {
</DocsLayout>
);
}


47 changes: 16 additions & 31 deletions src/app/[[...slug]]/page.tsx → src/app/[...slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@ import { LLMCopyButton, ViewOptions } from "@/components/page-actions";
import { PageFeedback } from "@/components/page-feedback";
import { redirect } from "next/navigation";

export default async function Page(props: {
params: Promise<{ slug?: string[] }>;
}) {
export default async function Page(props: { params: Promise<{ slug: string[] }> }) {
const params = await props.params;

// Try to get the page content first (this will work for both root and other pages)
const page = source.getPage(params.slug);

// If no page found, trigger 404
Expand Down Expand Up @@ -45,8 +42,7 @@ export default async function Page(props: {
// For public assets like /llms-full.txt, use a plain anchor so the browser
// requests the static file instead of the docs catch-all route.
const isPublicAsset =
href.startsWith("/") &&
/\.(?:txt|json|xml|pdf)($|[?#])/i.test(href);
href.startsWith("/") && /\.(?:txt|json|xml|pdf)($|[?#])/i.test(href);

if (isPublicAsset) return <a {...props} />;

Expand All @@ -62,16 +58,13 @@ export default async function Page(props: {

export async function generateStaticParams() {
const params = source.generateParams();

// Add root path for static export
return [
{ slug: [] }, // Root path
...params
];

// `app/page.tsx` owns `/`; docs pages require at least one segment.
return params.filter((p) => Array.isArray(p.slug) && p.slug.length > 0);
}

export async function generateMetadata(props: {
params: Promise<{ slug?: string[] }>;
params: Promise<{ slug: string[] }>;
}): Promise<Metadata> {
const params = await props.params;

Expand Down Expand Up @@ -101,18 +94,15 @@ export async function generateMetadata(props: {
card: "summary_large_image",
title: "AR.IO Documentation",
description: "Documentation for AR.IO",
images: [
"/meta.png",
],
images: ["/meta.png"],
creator: "@ar_io_network",
site: "@ar_io_network",
},
icons: {
icon: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
shortcut:
"https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
apple:
"https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
apple: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
},
};
}
Expand All @@ -130,13 +120,8 @@ export async function generateMetadata(props: {
// Use existing frontmatter fields, with fallbacks
const pageTitle = frontmatter.title || page.data.title;
const pageDescription = frontmatter.description || page.data.description;
const pageImage =
frontmatter.image || frontmatter.icon || "/meta.png";
const pageKeywords = frontmatter.keywords || [
"AR.IO",
"Arweave",
"documentation",
];
const pageImage = frontmatter.image || frontmatter.icon || "/meta.png";
const pageKeywords = frontmatter.keywords || ["AR.IO", "Arweave", "documentation"];
const pageAuthor = frontmatter.author || "AR.IO Team";

return {
Expand All @@ -156,7 +141,7 @@ export async function generateMetadata(props: {
},
],
// Add canonical URL for better SEO
url: `https://docs.ar.io/${params.slug?.join("/") || ""}`,
url: `https://docs.ar.io/${params.slug.join("/")}`,
},
twitter: {
card: "summary_large_image",
Expand All @@ -167,11 +152,9 @@ export async function generateMetadata(props: {
site: "@ar_io_network",
},
icons: {
icon: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
shortcut:
"https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
apple:
"https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
icon: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
shortcut: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
apple: "https://arweave.net/XAv8yHVUdsjaiM_WJhHAAyBmjpk4RRDvzB9hfzsD-so",
},
// Add additional metadata for better SEO
keywords: pageKeywords,
Expand All @@ -189,3 +172,5 @@ export async function generateMetadata(props: {
},
};
}


23 changes: 23 additions & 0 deletions src/app/global.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,29 @@
@import "fumadocs-ui/css/preset.css";
@import "fumadocs-openapi/css/preset.css";

/* AR.IO marketing purple palette overrides (light + dark)
Use :root to guarantee runtime override of Fumadocs CSS variables. */
:root {
/* Primary brand purple (used by buttons, links, pills, and our gradients) */
--color-fd-primary: hsl(258, 88%, 62%);
--color-fd-primary-foreground: hsl(0, 0%, 100%);

/* Softer purple accents for hover surfaces */
--color-fd-accent: hsla(258, 88%, 62%, 14%);
--color-fd-accent-foreground: hsl(258, 30%, 18%);

/* Focus ring */
--color-fd-ring: hsl(258, 88%, 62%);
}

.dark {
--color-fd-primary: hsl(258, 95%, 76%);
--color-fd-primary-foreground: hsl(258, 40%, 10%);
--color-fd-accent: hsla(258, 95%, 76%, 18%);
--color-fd-accent-foreground: hsl(0, 0%, 96%);
--color-fd-ring: hsl(258, 95%, 76%);
}

/* Define font-inter class */
.font-inter {
font-family:
Expand Down
5 changes: 5 additions & 0 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ export default function Layout({ children }: LayoutProps<"/">) {
data-domain="docs.ar.io"
/>
<RootProvider
theme={{
attribute: "class",
defaultTheme: "light",
enableSystem: false,
}}
search={{
SearchDialog,
}}
Expand Down
Loading