mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-05 04:17:32 +00:00
docs: docusaurus setup (#3541)
# What does this PR do? - Docusaurus server setup - Deprecates Sphinx build pipeline - Deprecates remaining references to Readthedocs - MDX compile errors and broken links to be addressed in follow-up PRs <!-- Provide a short summary of what this PR does and why. Link to relevant issues if applicable. --> <!-- If resolving an issue, uncomment and update the line below --> <!-- Closes #[issue-number] --> ## Test Plan ``` npm install npm gen-api-docs all npm run build ``` <!-- Describe the tests you ran to verify your changes with result summaries. *Provide clear instructions so the plan can be easily re-executed.* -->
This commit is contained in:
parent
610526d6d7
commit
aebd728c81
25 changed files with 23461 additions and 208 deletions
163
docs/src/pages/index.js
Normal file
163
docs/src/pages/index.js
Normal file
|
@ -0,0 +1,163 @@
|
|||
import React from 'react';
|
||||
import clsx from 'clsx';
|
||||
import Layout from '@theme/Layout';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import styles from './index.module.css';
|
||||
|
||||
function HomepageHeader() {
|
||||
const {siteConfig} = useDocusaurusContext();
|
||||
return (
|
||||
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
||||
<div className="container">
|
||||
<div className={styles.heroContent}>
|
||||
<h1 className={styles.heroTitle}>Build AI Applications with Llama Stack</h1>
|
||||
<p className={styles.heroSubtitle}>
|
||||
Unified APIs for Inference, RAG, Agents, Tools, Safety, and Telemetry
|
||||
</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
className={clsx('button button--primary button--lg', styles.getStartedButton)}
|
||||
to="/docs/getting_started/quickstart">
|
||||
🚀 Get Started
|
||||
</Link>
|
||||
<Link
|
||||
className={clsx('button button--primary button--lg', styles.apiButton)}
|
||||
to="/docs/api/llama-stack-specification">
|
||||
📚 API Reference
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
function QuickStart() {
|
||||
return (
|
||||
<section className={styles.quickStart}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
<div className="col col--6">
|
||||
<h2 className={styles.sectionTitle}>Quick Start</h2>
|
||||
<p className={styles.sectionDescription}>
|
||||
Get up and running with Llama Stack in just a few commands. Build your first RAG application locally.
|
||||
</p>
|
||||
<div className={styles.codeBlock}>
|
||||
<pre><code>{`# Install uv and start Ollama
|
||||
ollama run llama3.2:3b --keepalive 60m
|
||||
|
||||
# Run Llama Stack server
|
||||
OLLAMA_URL=http://localhost:11434 \\
|
||||
uv run --with llama-stack \\
|
||||
llama stack build --distro starter \\
|
||||
--image-type venv --run
|
||||
|
||||
# Try the Python SDK
|
||||
from llama_stack_client import LlamaStackClient
|
||||
|
||||
client = LlamaStackClient(
|
||||
base_url="http://localhost:8321"
|
||||
)
|
||||
|
||||
response = client.inference.chat_completion(
|
||||
model="Llama3.2-3B-Instruct",
|
||||
messages=[{
|
||||
"role": "user",
|
||||
"content": "What is machine learning?"
|
||||
}]
|
||||
)`}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col col--6">
|
||||
<h2 className={styles.sectionTitle}>Why Llama Stack?</h2>
|
||||
<div className={styles.features}>
|
||||
<div className={styles.feature}>
|
||||
<div className={styles.featureIcon}>🔗</div>
|
||||
<div>
|
||||
<h4>Unified APIs</h4>
|
||||
<p>One consistent interface for all your AI needs - inference, safety, agents, and more.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className={styles.feature}>
|
||||
<div className={styles.featureIcon}>🔄</div>
|
||||
<div>
|
||||
<h4>Provider Flexibility</h4>
|
||||
<p>Swap between providers without code changes. Start local, deploy anywhere.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className={styles.feature}>
|
||||
<div className={styles.featureIcon}>🛡️</div>
|
||||
<div>
|
||||
<h4>Production Ready</h4>
|
||||
<p>Built-in safety, monitoring, and evaluation tools for enterprise applications.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className={styles.feature}>
|
||||
<div className={styles.featureIcon}>📱</div>
|
||||
<div>
|
||||
<h4>Multi-Platform</h4>
|
||||
<p>SDKs for Python, Node.js, iOS, Android, and REST APIs for any language.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function CommunityLinks() {
|
||||
return (
|
||||
<section className={styles.community}>
|
||||
<div className="container">
|
||||
<div className={styles.communityContent}>
|
||||
<h2 className={styles.sectionTitle}>Join the Community</h2>
|
||||
<p className={styles.sectionDescription}>
|
||||
Connect with developers building the future of AI applications
|
||||
</p>
|
||||
<div className={styles.communityLinks}>
|
||||
<a
|
||||
href="https://github.com/llamastack/llama-stack"
|
||||
className={clsx('button button--outline button--lg', styles.communityButton)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer">
|
||||
<span className={styles.communityIcon}>⭐</span>
|
||||
Star on GitHub
|
||||
</a>
|
||||
<a
|
||||
href="https://discord.gg/llama-stack"
|
||||
className={clsx('button button--outline button--lg', styles.communityButton)}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer">
|
||||
<span className={styles.communityIcon}>💬</span>
|
||||
Join Discord
|
||||
</a>
|
||||
<Link
|
||||
to="/docs/"
|
||||
className={clsx('button button--outline button--lg', styles.communityButton)}>
|
||||
<span className={styles.communityIcon}>📚</span>
|
||||
Read Docs
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Home() {
|
||||
const {siteConfig} = useDocusaurusContext();
|
||||
return (
|
||||
<Layout
|
||||
title="Build AI Applications"
|
||||
description="The open-source framework for building generative AI applications with unified APIs for Inference, RAG, Agents, Tools, Safety, and Telemetry.">
|
||||
<HomepageHeader />
|
||||
<main>
|
||||
<QuickStart />
|
||||
<CommunityLinks />
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
}
|
283
docs/src/pages/index.module.css
Normal file
283
docs/src/pages/index.module.css
Normal file
|
@ -0,0 +1,283 @@
|
|||
/**
|
||||
* CSS files with the .module.css suffix will be treated as CSS modules
|
||||
* and scoped locally.
|
||||
*/
|
||||
|
||||
.heroBanner {
|
||||
padding: 4rem 0;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: var(--hero-gradient);
|
||||
color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.heroBanner::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.1) 0%, transparent 50%),
|
||||
radial-gradient(circle at 70% 80%, rgba(255, 255, 255, 0.05) 0%, transparent 50%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.heroContent {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.heroLogo {
|
||||
height: 48px;
|
||||
width: auto;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.heroTitle {
|
||||
font-size: 2.8rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1rem;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.heroSubtitle {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 400;
|
||||
margin-bottom: 2rem;
|
||||
opacity: 0.9;
|
||||
line-height: 1.5;
|
||||
max-width: 600px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.heroBanner .getStartedButton {
|
||||
background: white;
|
||||
color: #332735;
|
||||
border: 2px solid white;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.heroBanner .getStartedButton:hover {
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #2b2129;
|
||||
border-color: rgba(255, 255, 255, 0.9);
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.heroBanner .apiButton {
|
||||
background: transparent;
|
||||
color: white;
|
||||
border: 2px solid white;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.heroBanner .apiButton:hover {
|
||||
background: white;
|
||||
border-color: white;
|
||||
color: #332735;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
/* Quick Start Section */
|
||||
.quickStart {
|
||||
padding: 4rem 0;
|
||||
background: var(--ifm-background-color);
|
||||
}
|
||||
|
||||
.sectionTitle {
|
||||
font-size: 2rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--ifm-color-emphasis-800);
|
||||
}
|
||||
|
||||
.sectionDescription {
|
||||
font-size: 1rem;
|
||||
color: var(--ifm-color-emphasis-600);
|
||||
margin-bottom: 1.5rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.codeBlock {
|
||||
background: var(--ifm-color-gray-900);
|
||||
border-radius: 8px;
|
||||
padding: 1.5rem;
|
||||
margin-top: 1.5rem;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.codeBlock pre {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.codeBlock code {
|
||||
color: var(--ifm-color-gray-100);
|
||||
font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Features */
|
||||
.features {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.feature {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
padding: 1rem;
|
||||
border-radius: 8px;
|
||||
background: var(--ifm-color-gray-50);
|
||||
border: 1px solid var(--ifm-color-gray-200);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.feature:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
||||
border-color: var(--ifm-color-primary-lighter);
|
||||
}
|
||||
|
||||
.featureIcon {
|
||||
font-size: 2rem;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: var(--ifm-color-primary-lightest);
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.feature h4 {
|
||||
margin: 0 0 0.5rem 0;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
color: var(--ifm-color-emphasis-800);
|
||||
}
|
||||
|
||||
.feature p {
|
||||
margin: 0;
|
||||
color: var(--ifm-color-emphasis-600);
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Community Section */
|
||||
.community {
|
||||
padding: 3rem 0;
|
||||
background: var(--ifm-color-gray-50);
|
||||
border-top: 1px solid var(--ifm-color-gray-200);
|
||||
}
|
||||
|
||||
.communityContent {
|
||||
text-align: center;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.communityLinks {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 1rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.communityButton {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.communityButton:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.communityIcon {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
/* Responsive Design */
|
||||
@media screen and (max-width: 996px) {
|
||||
.heroBanner {
|
||||
padding: 3rem 2rem;
|
||||
}
|
||||
|
||||
.heroTitle {
|
||||
font-size: 2.2rem;
|
||||
}
|
||||
|
||||
.heroSubtitle {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.quickStart {
|
||||
padding: 3rem 0;
|
||||
}
|
||||
|
||||
.sectionTitle {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
|
||||
.communityLinks {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.communityButton {
|
||||
width: 200px;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.heroLogo {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.heroTitle {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.codeBlock {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.codeBlock code {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.feature {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
}
|
7
docs/src/pages/markdown-page.md
Normal file
7
docs/src/pages/markdown-page.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: Markdown page example
|
||||
---
|
||||
|
||||
# Markdown page example
|
||||
|
||||
You don't need React to write simple standalone pages.
|
Loading…
Add table
Add a link
Reference in a new issue