/_includes/filename.md
- const escapedFileName = includeFileName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
-
- // Pattern to match any path ending with /_includes/filename
- const includePattern = `[^"']*\\/_includes\\/${escapedFileName}`;
-
- // Check for both readfile syntaxes with flexible path matching
- const pattern1 = new RegExp(`\\{\\{%\\s*readfile\\s+(?:file=)?["'](${includePattern})["']\\s*%\\}\\}`, 'i');
- const pattern2 = new RegExp(`\\{\\{<\\s*readfile\\s+file=["'](${includePattern})["']\\s*>\\}\\}`, 'i');
-
- if (pattern1.test(content) || pattern2.test(content)) {
- pagesUsingInclude.push(page);
- }
- }
- } catch (e) {
- // Skip if file can't be read
- }
- }
- }
-
- return pagesUsingInclude;
- }
-
- function buildRows(files, isDeleted = false) {
- const rows = [];
-
- for (const fp of files) {
- if (fp.startsWith('content/')) {
- // Check if this is an include file
- if (isIncludeFile(fp)) {
- // Use just the filename for includes
- const filename = fp.split('/').pop();
-
- // Find pages that use this include
- const dependentPages = findPagesUsingInclude(fp);
-
- // Build the title cell with filename and dependent pages
- let titleCell = `\`${filename}\``;
- if (dependentPages.length > 0) {
- // Add dependent pages as a nested list
- const pageLinks = dependentPages.map(page => {
- const href = previewBase ? (previewBase + page.relPermalink) : '';
- const linkText = page.title || titleFromPath(page.path);
- return href ? `[${linkText}](${href})` : linkText;
- });
-
- const dependentList = pageLinks.map(link => ` ↳ ${link}`).join('');
- titleCell += `:${dependentList}`;
- }
-
- rows.push(`| ${titleCell} | \`${fp}\` |`);
- } else {
- // Regular content file
- const e = mapEntry(fp);
- // Don't create links for deleted files
- const titleCell = (e.href && !isDeleted) ? `[${e.title}](${e.href})` : e.title;
- const pathCell = '`' + e.path + '`';
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- } else {
- // Static/assets: create direct preview links if base is known
- // Only link common web assets; skip JSON, map files, etc.
- const isLinkableAsset = /\.(png|jpe?g|gif|webp|svg|css|js|ico|txt|pdf|mp4|webm)$/i.test(fp);
- const rel = fp.replace(/^static\//, '/').replace(/^assets\//, '/assets/');
- const href = (previewBase && isLinkableAsset && !isDeleted) ? (previewBase + rel) : '';
- const title = titleFromPath(fp);
- const titleCell = href ? `[${title}](${href})` : title;
- const pathCell = '`' + fp + '`';
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- }
-
- return rows;
- }
-
- function buildRenamedRows(renamedFiles) {
- const rows = [];
-
- for (const rename of renamedFiles) {
- const oldPath = rename.old;
- const newPath = rename.new;
-
- if (newPath.startsWith('content/')) {
- // Map the new path to get the preview link
- const e = mapEntry(newPath);
- const titleCell = e.href ? `[${e.title}](${e.href})` : e.title;
- const pathCell = `\`${oldPath}\` → \`${newPath}\``;
- rows.push(`| ${titleCell} | ${pathCell} |`);
- } else {
- // Static/assets: create direct preview links if base is known
- const isLinkableAsset = /\.(png|jpe?g|gif|webp|svg|css|js|ico|txt|pdf|mp4|webm)$/i.test(newPath);
- const rel = newPath.replace(/^static\//, '/').replace(/^assets\//, '/assets/');
- const href = (previewBase && isLinkableAsset) ? (previewBase + rel) : '';
- const title = titleFromPath(newPath);
- const titleCell = href ? `[${title}](${href})` : title;
- const pathCell = `\`${oldPath}\` → \`${newPath}\``;
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- }
-
- return rows;
- }
-
- const addedRows = buildRows(addedFiltered);
- const modifiedRows = buildRows(modified);
- const deletedRows = buildRows(deletedFiltered, true); // Pass true for deleted files
- const renamedRows = buildRenamedRows(renamedFiles);
-
- const header = '\n\n**PR Preview: Changed content**\n\nBase preview: ' + previewBase;
-
- function section(title, rows) {
- if (rows.length === 0) return '';
- return `\n\n### ${title}\n\n| Title | Path |\n| --- | --- |\n${rows.join('\n')}`;
- }
-
- const body = [
- header,
- section('Renamed/Moved', renamedRows),
- section('Added', addedRows),
- section('Modified', modifiedRows),
- section('Deleted', deletedRows),
- ].join('');
-
- // Find and update our existing comment
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- per_page: 100,
- });
-
- const existing = comments.find(c => //.test(c.body || ''));
- if (existing) {
- await github.rest.issues.updateComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: existing.id,
- body,
- });
- core.info('Updated existing preview links comment');
-
- // Add link to PR description if we have preview links
- if (added.length + modified.length > 0) {
- try {
- const pr = await github.rest.pulls.get({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: context.issue.number,
- });
-
- const currentBody = pr.data.body || '';
- const commentUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/pull/${context.issue.number}#issuecomment-${existing.id}`;
- const linkMarker = '';
- const linkText = `\n\n${linkMarker}\n\n📄 **[View preview links for changed content](${commentUrl})**`;
-
- // Only add if not already present
- if (!currentBody.includes(linkMarker)) {
- await github.rest.pulls.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: context.issue.number,
- body: currentBody + linkText,
- });
- core.info('Added preview link to PR description');
- }
- } catch (e) {
- core.warning(`Could not update PR description: ${e.message}`);
- }
- }
- } else {
- // This shouldn't happen since main workflow creates comment first
- await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- body,
- });
- core.info('Created new preview links comment');
- }
diff --git a/.github/workflows/pr-preview-links.yml b/.github/workflows/pr-preview-links.yml
deleted file mode 100644
index 920f5312fe..0000000000
--- a/.github/workflows/pr-preview-links.yml
+++ /dev/null
@@ -1,717 +0,0 @@
-name: PR Preview Links
-
-on:
- pull_request:
- types: [opened, synchronize, reopened]
-
-permissions:
- contents: read
- pull-requests: write
- issues: write
-
-jobs:
- preview-links:
- runs-on: ubuntu-latest
- env:
- CF_PAGES_SUFFIX: docodile.pages.dev
- steps:
- - name: Checkout
- uses: actions/checkout@v5
- with:
- fetch-depth: 0
- ref: ${{ github.event.pull_request.head.sha }}
-
- - name: Setup Node.js
- uses: actions/setup-node@v6
- with:
- node-version-file: .node-version
-
- - name: Get Hugo version and setup
- run: |
- set -euo pipefail
- ver=$(grep 'HUGO_VERSION' wrangler.toml | awk -F '"' '{print $2}')
- wget "https://github.com/gohugoio/hugo/releases/download/v${ver}/hugo_extended_${ver}_linux-amd64.deb" -O hugo.deb
- sudo apt-get update
- sudo apt-get install -y ./hugo.deb
-
- - name: Setup Go
- uses: actions/setup-go@v6
- with:
- go-version-file: go.mod
- check-latest: true
-
- - name: Setup deps for build
- run: |
- set -euo pipefail
- npm install
- go mod download
- hugo mod get -u
-
- - name: Get changed files
- id: changed
- uses: tj-actions/changed-files@v47
- with:
- files: |
- content/**
- static/**
- assets/**
- layouts/**
- i18n/**
- configs/**
- include_all_old_new_renamed_files: true
-
- - name: Build Hugo (generate pageurls)
- if: steps.changed.outputs.any_changed == 'true'
- run: |
- # Debug: Check what ref we're building
- echo "Current branch: $(git branch --show-current)"
- echo "HEAD commit: $(git rev-parse HEAD)"
- echo "PR head SHA: ${{ github.event.pull_request.head.sha }}"
-
- hugo --minify
- test -f public/pageurls.json && echo "Found pageurls.json" || (echo "Missing pageurls.json" && ls -la public || true)
-
- # Debug: Check a specific file's title in the generated JSON
- if [ -f public/pageurls.json ]; then
- echo "Checking for public-api entries in pageurls.json:"
- jq '.[] | select(.path | contains("public-api"))' public/pageurls.json || true
- fi
-
- - name: Create or find preview comment
- if: steps.changed.outputs.any_changed == 'true'
- id: find-comment
- uses: actions/github-script@v8
- with:
- script: |
- // First, check if our comment already exists
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- per_page: 100,
- });
-
- const existingComment = comments.find(c => //.test(c.body || ''));
- if (existingComment) {
- core.info(`Found existing preview comment: ${existingComment.id}`);
- core.setOutput('comment_id', existingComment.id);
- core.setOutput('comment_exists', 'true');
- } else {
- // Create placeholder comment immediately
- const placeholderBody = `\n\n**PR Preview: Changed content**\n\n⏳ *Generating preview links...*\n\nThis comment will be automatically updated when file changes are detected and Cloudflare Pages finishes deploying. `;
-
- const newComment = await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- body: placeholderBody,
- });
-
- core.info(`Created placeholder preview comment: ${newComment.data.id}`);
- core.setOutput('comment_id', newComment.data.id);
- core.setOutput('comment_exists', 'false');
- }
-
- - name: Find Cloudflare Branch Preview URL
- if: steps.changed.outputs.any_changed == 'true'
- id: find-preview
- uses: actions/github-script@v8
- with:
- script: |
- function htmlDecode(s) {
- return (s || '')
- .replace(/&/g, '&')
- .replace(/</g, '<')
- .replace(/>/g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, "'");
- }
- function sanitizeUrl(u) {
- if (!u) return '';
- u = htmlDecode(u.trim());
- u = u.replace(/^['"<]+/, '').replace(/[>'"]+$/, '');
- u = u.split(/[\s<>'"\]\)]/)[0];
- try { u = decodeURI(u); } catch (e) {}
- return u.replace(/\/$/, '');
- }
- function extractBranchPreviewUrl(body) {
- // Look for "Branch Preview URL:" followed by a URL
- // In Cloudflare's table format, it's split across table cells
- const patterns = [
- // Table format with anchor tag (what Cloudflare actually uses)
- // Matches across multiple lines in a table cell
- /Branch\s+Preview\s+URL:<\/strong><\/td>[\s\S]*?]+href=['"]([^'"<>]+pages\.dev[^'"<>]*)['"]/i,
- // Try anchor tag format on same line
- /Branch\s+Preview\s+URL:\s* ]+href=['"]([^'"<>]+pages\.dev[^'"<>]*)['"]/i,
- // Try markdown link format
- /Branch\s+Preview\s+URL:\s*\[.*?\]\(([^)]+pages\.dev[^)]*)\)/i,
- // Try plain URL format (with or without angle brackets)
- /Branch\s+Preview\s+URL:\s*(?:https?:\/\/)?([^\s<>]+pages\.dev[^\s<>]*)/i
- ];
-
- for (const pattern of patterns) {
- const m = (body || '').match(pattern);
- if (m && m[1]) {
- const url = m[1];
- // Make sure we have the full URL including https://
- if (!url.startsWith('http')) {
- return sanitizeUrl('https://' + url);
- }
- return sanitizeUrl(url);
- }
- }
- return '';
- }
- async function fromOurExistingComment() {
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- per_page: 100,
- });
- const ours = comments.find(c => //i.test(c.body || ''));
- if (!ours) return '';
- const body = ours.body || '';
- const hidden = body.match(//i);
- if (hidden && hidden[1]) return sanitizeUrl(hidden[1]);
- return '';
- }
- async function waitForCloudflareBranchUrl(maxWaitMs = 120000) { // Max 2 minutes
- const startTime = Date.now();
- let delayMs = 5000; // Start with 5 seconds
- let attempt = 0;
-
- while (Date.now() - startTime < maxWaitMs) {
- attempt++;
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- per_page: 100,
- });
-
- for (const c of comments) {
- // Check if this is a Cloudflare comment
- if (c.user && c.user.login && c.user.login.includes('cloudflare') && c.body && c.body.includes('pages.dev')) {
- core.info(`Found Cloudflare comment from ${c.user.login}`);
- const url = extractBranchPreviewUrl(c.body || '');
- if (url) {
- core.info(`Successfully extracted Branch Preview URL: ${url}`);
- return url;
- } else if (c.body.includes('Branch Preview URL')) {
- core.info('Branch Preview URL field found but URL not yet populated');
- }
- }
- }
-
- const elapsed = Math.round((Date.now() - startTime) / 1000);
- const remaining = Math.round((maxWaitMs - (Date.now() - startTime)) / 1000);
-
- if (Date.now() - startTime + delayMs < maxWaitMs) {
- core.info(`Attempt ${attempt}: Branch Preview URL not found yet (${elapsed}s elapsed, ${remaining}s remaining)`);
- await new Promise(r => setTimeout(r, delayMs));
- // Exponential backoff: increase delay but cap at 20 seconds
- delayMs = Math.min(delayMs * 1.5, 20000);
- }
- }
-
- core.warning('Branch Preview URL not found within 2 minutes. Links will be added when Cloudflare comment triggers update workflow.');
- return '';
- }
- let base = await waitForCloudflareBranchUrl();
- if (!base) base = await fromOurExistingComment();
- core.info(`Branch Preview URL found: ${base || '(not yet)'}`);
- core.setOutput('base', base);
-
- - name: Update PR comment with preview links
- if: steps.changed.outputs.any_changed == 'true'
- uses: actions/github-script@v8
- env:
- ADDED: ${{ steps.changed.outputs.added_files }}
- MODIFIED: ${{ steps.changed.outputs.modified_files }}
- DELETED: ${{ steps.changed.outputs.deleted_files }}
- RENAMED: ${{ steps.changed.outputs.renamed_files }}
- RENAMED_PAIRS: ${{ steps.changed.outputs.all_old_new_renamed_files }}
- PREVIEW_BASE: ${{ steps.find-preview.outputs.base }}
- COMMENT_ID: ${{ steps.find-comment.outputs.comment_id }}
- with:
- script: |
- const fs = require('fs');
- const path = require('path');
-
- function splitList(s) {
- if (!s) return [];
- // Support newline, comma, or space separated outputs
- return s
- .split(/\r?\n|,|\s+/)
- .map(x => x.trim())
- .filter(Boolean);
- }
-
- const added = splitList(process.env.ADDED);
- const modified = splitList(process.env.MODIFIED);
- const deleted = splitList(process.env.DELETED);
- const renamed = splitList(process.env.RENAMED);
- const renamedPairs = splitList(process.env.RENAMED_PAIRS);
-
- // Process renamed files - tj-actions outputs them as "old_path new_path" pairs
- const renamedFiles = [];
- const renamedMapping = new Map(); // old path -> new path
- for (let i = 0; i < renamedPairs.length; i += 2) {
- if (i + 1 < renamedPairs.length) {
- const oldPath = renamedPairs[i];
- const newPath = renamedPairs[i + 1];
- renamedMapping.set(oldPath, newPath);
- renamedFiles.push({ old: oldPath, new: newPath });
- }
- }
-
- // Filter out renamed files from added and deleted arrays to avoid duplication
- const addedFiltered = added.filter(f => !Array.from(renamedMapping.values()).includes(f));
- const deletedFiltered = deleted.filter(f => !Array.from(renamedMapping.keys()).includes(f));
-
- const allChanged = [...addedFiltered, ...modified, ...deletedFiltered, ...renamed];
- const anyEligible = allChanged.some(p => /^(content|static|assets)\//.test(p));
- if (!anyEligible) {
- core.info('No relevant content changes. Updating comment to reflect this.');
-
- // Update the comment to show no content changes
- const commentId = process.env.COMMENT_ID;
- if (!commentId) {
- core.error('No comment ID found');
- return;
- }
-
- const previewBase = (process.env.PREVIEW_BASE || '').replace(/\/$/, '');
- const header = '\n\n**PR Preview: Changed content**';
- const body = header + '\n\nNo documentation content changes in this PR.';
-
- await github.rest.issues.updateComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: parseInt(commentId),
- body,
- });
-
- core.info('Updated preview comment to show no content changes');
- return;
- }
-
- let pageMap = [];
-
- // Load pageurls.json for all languages
- const languages = ['', 'ja', 'ko']; // '' for English (root)
- for (const lang of languages) {
- const pageurlsPath = lang ? `public/${lang}/pageurls.json` : 'public/pageurls.json';
- try {
- const raw = fs.readFileSync(pageurlsPath, 'utf8');
- const langPages = JSON.parse(raw);
- pageMap = pageMap.concat(langPages);
- core.info(`Loaded ${langPages.length} pages from ${pageurlsPath}`);
- } catch (e) {
- core.warning(`Could not read ${pageurlsPath}. ${e.message}`);
- }
- }
-
- // Build lookup: support keys with and without language prefix
- const byPath = new Map();
- for (const p of pageMap) {
- const lang = p.lang || 'en'; // Default to 'en' if no lang specified
- const rel = (p.path || '').replace(/^\/+/, '').replace(/\\/g, '/');
- const withLang = lang && !rel.startsWith(lang + '/') ? `${lang}/${rel}` : rel;
- const withoutLang = lang && rel.startsWith(lang + '/') ? rel.slice(lang.length + 1) : rel;
-
- // Create all possible key variations
- const keys = new Set([
- rel,
- withLang,
- withoutLang,
- path.posix.join('content', withLang),
- path.posix.join('content', withoutLang),
- path.posix.join('content', rel),
- // Add explicit handling for language in path
- path.posix.join('content', lang, rel),
- path.posix.join('content', lang, withoutLang),
- // Add .md extension variations for content files
- rel.endsWith('.md') ? rel : rel + '.md',
- withLang.endsWith('.md') ? withLang : withLang + '.md',
- withoutLang.endsWith('.md') ? withoutLang : withoutLang + '.md',
- path.posix.join('content', lang, rel.endsWith('.md') ? rel : rel + '.md'),
- path.posix.join('content', lang, withoutLang.endsWith('.md') ? withoutLang : withoutLang + '.md'),
- path.posix.join('content', withLang.endsWith('.md') ? withLang : withLang + '.md'),
- path.posix.join('content', withoutLang.endsWith('.md') ? withoutLang : withoutLang + '.md'),
- // Special handling for index files
- path.posix.join('content', lang, '_index.md'),
- path.posix.join('content', lang, 'index.md'),
- ].filter(Boolean).map(k => k.replace(/\\/g, '/')));
-
- // Debug log for new pages
- if (p.path && p.path.includes('dspy')) {
- core.info(`Debug: Page ${p.path} (lang: ${lang}) has keys: ${Array.from(keys).join(', ')}`);
- }
-
- for (const k of keys) byPath.set(k, p);
- }
-
- // Find Cloudflare preview base URL from existing PR comments
- const comments = await github.paginate(github.rest.issues.listComments, {
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- per_page: 100,
- });
- // Helpers to extract and sanitize pages.dev URLs
- function htmlDecode(s) {
- return s
- .replace(/&/g, '&')
- .replace(/</g, '<')
- .replace(/>/g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, "'");
- }
- function sanitizeUrl(u) {
- if (!u) return '';
- u = htmlDecode(u.trim());
- // trim surrounding quotes or angle brackets
- u = u.replace(/^['"<]+/, '').replace(/[>'"]+$/, '');
- // cut at first disallowed delimiter if present
- u = u.split(/[\s<>'"\]\)]/)[0];
- try { u = decodeURI(u); } catch (e) {}
- // remove trailing slash
- return u.replace(/\/$/, '');
- }
- function extractUrls(body) {
- const urls = [];
- const regex = /https?:\/\/[^\s'"<>]+pages\.dev[^\s'"<>]*/ig;
- const matches = (body || '').match(regex) || [];
- for (let m of matches) {
- const clean = sanitizeUrl(m);
- if (clean && !urls.includes(clean)) urls.push(clean);
- }
- return urls;
- }
-
- // Use Branch Preview URL extracted from Cloudflare comment
- const previewBase = (process.env.PREVIEW_BASE || '').replace(/\/$/, '');
- if (!previewBase) {
- core.warning('No Branch Preview URL found yet; leaving links unlinked rather than using commit URL.');
- }
- core.info(`Preview base: ${previewBase || '(not found yet)'}`);
-
- function mapEntry(filePath) {
- const norm = filePath.replace(/\\/g, '/');
-
- // Try multiple variations to find the item
- let item = byPath.get(norm);
- if (!item) item = byPath.get(norm.replace(/^content\//, ''));
- if (!item) item = byPath.get(norm.replace(/\.md$/, ''));
- if (!item) item = byPath.get(norm.replace(/^content\//, '').replace(/\.md$/, ''));
-
- // Debug log for unmatched files
- if (!item) {
- core.info(`Debug: Could not find mapping for ${norm}`);
- // For new files, construct the URL based on the file path
- if (norm.startsWith('content/') && norm.endsWith('.md')) {
- // Extract language and path
- const pathParts = norm.replace(/^content\//, '').replace(/\.md$/, '').split('/');
- let lang = 'en';
- let urlPath = pathParts.join('/');
-
- // Check if first part is a language code
- if (['en', 'ja', 'ko'].includes(pathParts[0])) {
- lang = pathParts[0];
- urlPath = pathParts.slice(1).join('/');
- }
-
- // Handle _index.md files
- if (urlPath.endsWith('/_index') || urlPath === '_index') {
- urlPath = urlPath.replace(/\/_index$/, '').replace(/^_index$/, '');
- }
-
- // Construct the URL
- const rel = lang === 'en' ? `/${urlPath}/` : `/${lang}/${urlPath}/`;
- const href = previewBase ? (previewBase.replace(/\/$/, '') + rel) : '';
-
- core.info(`Debug: Constructed URL for new file ${norm}: ${href}`);
- return { title: titleFromPath(norm), rel, href, path: norm };
- }
- }
-
- if (!item) return { title: titleFromPath(norm), rel: '', href: '', path: norm };
- const rel = item.relPermalink || '';
- const href = previewBase ? (previewBase.replace(/\/$/, '') + rel) : '';
- const title = item.title || titleFromPath(norm);
- return { title, rel, href, path: norm };
- }
-
- function titleFromPath(p) {
- const stem = p.replace(/^content\//, '').replace(/\.(md|markdown)$/, '');
- const parts = stem.split('/');
- const last = parts[parts.length - 1];
- const base = last === 'index' ? (parts[parts.length - 2] || 'index') : last;
- return base.replace(/[\-_]+/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
- }
-
- // Function to check if a file is an include
- function isIncludeFile(filePath) {
- return /^content\/[^\/]+\/_includes\//.test(filePath);
- }
-
- // Function to find pages that use a specific include
- function findPagesUsingInclude(includePath) {
- const includeFileName = includePath.split('/').pop();
- const pagesUsingInclude = [];
-
- // Search through all pages in pageMap
- for (const page of pageMap) {
- if (page.path && page.path.endsWith('.md')) {
- try {
- // Construct the correct file path
- // page.path might already include content/ prefix, so handle both cases
- let contentPath = page.path;
- if (!contentPath.startsWith('content/')) {
- contentPath = path.join('content', page.lang || 'en', page.path);
- }
- if (fs.existsSync(contentPath)) {
- const content = fs.readFileSync(contentPath, 'utf8');
-
- // Check for usage of the include file with various path formats
- // The include might be referenced as:
- // - /_includes/filename.md
- // - /content/en/_includes/filename.md
- // - /content//_includes/filename.md
- const escapedFileName = includeFileName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
-
- // Pattern to match any path ending with /_includes/filename
- const includePattern = `[^"']*\\/_includes\\/${escapedFileName}`;
-
- // Check for both readfile syntaxes with flexible path matching
- const pattern1 = new RegExp(`\\{\\{%\\s*readfile\\s+(?:file=)?["'](${includePattern})["']\\s*%\\}\\}`, 'i');
- const pattern2 = new RegExp(`\\{\\{<\\s*readfile\\s+file=["'](${includePattern})["']\\s*>\\}\\}`, 'i');
-
- if (pattern1.test(content) || pattern2.test(content)) {
- pagesUsingInclude.push(page);
- }
- }
- } catch (e) {
- // Skip if file can't be read
- }
- }
- }
-
- return pagesUsingInclude;
- }
-
- function buildRows(files, isDeleted = false) {
- const rows = [];
-
- for (const fp of files) {
- if (fp.startsWith('content/')) {
- // Check if this is an include file
- if (isIncludeFile(fp)) {
- // Use just the filename for includes
- const filename = fp.split('/').pop();
-
- // Find pages that use this include
- const dependentPages = findPagesUsingInclude(fp);
-
- // Build the title cell with filename and dependent pages
- let titleCell = `\`${filename}\``;
- if (dependentPages.length > 0) {
- // Add dependent pages as a nested list
- const pageLinks = dependentPages.map(page => {
- const href = previewBase ? (previewBase + page.relPermalink) : '';
- const linkText = page.title || titleFromPath(page.path);
- return href ? `[${linkText}](${href})` : linkText;
- });
-
- const dependentList = pageLinks.map(link => ` ↳ ${link}`).join('');
- titleCell += `:${dependentList}`;
- }
-
- rows.push(`| ${titleCell} | \`${fp}\` |`);
- } else {
- // Regular content file
- const e = mapEntry(fp);
- // Don't create links for deleted files
- const titleCell = (e.href && !isDeleted) ? `[${e.title}](${e.href})` : e.title;
- const pathCell = '`' + e.path + '`';
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- } else {
- // Static/assets: create direct preview links if base is known
- // Only link common web assets; skip JSON, map files, etc.
- const isLinkableAsset = /\.(png|jpe?g|gif|webp|svg|css|js|ico|txt|pdf|mp4|webm)$/i.test(fp);
- const rel = fp.replace(/^static\//, '/').replace(/^assets\//, '/assets/');
- const href = (previewBase && isLinkableAsset && !isDeleted) ? (previewBase + rel) : '';
- const title = titleFromPath(fp);
- const titleCell = href ? `[${title}](${href})` : title;
- const pathCell = '`' + fp + '`';
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- }
-
- return rows;
- }
-
- // Calculate file sizes/changes for sorting by delta
- function getFileStats(files) {
- const { execSync } = require('child_process');
- return files.map(fp => {
- let size = 0;
- try {
- // Use git to get the number of changed lines
- // For added files, count all lines; for modified, count insertions + deletions
- const diffStat = execSync(`git diff --numstat origin/${{ github.base_ref }}...HEAD -- "${fp}" 2>/dev/null || echo "0 0 ${fp}"`, { encoding: 'utf8' }).trim();
- const parts = diffStat.split(/\s+/);
- if (parts.length >= 2) {
- const insertions = parseInt(parts[0]) || 0;
- const deletions = parseInt(parts[1]) || 0;
- size = insertions + deletions;
- }
- } catch (e) {
- // If git diff fails, try file size as fallback
- try {
- if (fs.existsSync(fp)) {
- const stats = fs.statSync(fp);
- size = stats.size;
- }
- } catch (e2) {
- // Ignore errors
- }
- }
- return { path: fp, size };
- });
- }
-
- // Sort files by size (as a proxy for change delta) and limit to maxRows
- function limitAndSortFiles(files, maxRows = 20) {
- if (files.length <= maxRows) {
- return { files: files.sort(), truncated: false };
- }
-
- // Get file stats and sort by size descending
- const stats = getFileStats(files);
- stats.sort((a, b) => b.size - a.size);
-
- // Take top maxRows files
- const topFiles = stats.slice(0, maxRows).map(s => s.path);
- // Sort alphabetically for consistent display
- topFiles.sort();
-
- return { files: topFiles, truncated: true, total: files.length };
- }
-
- function buildRenamedRows(renamedFiles) {
- const rows = [];
-
- for (const rename of renamedFiles) {
- const oldPath = rename.old;
- const newPath = rename.new;
-
- if (newPath.startsWith('content/')) {
- // Map the new path to get the preview link
- const e = mapEntry(newPath);
- const titleCell = e.href ? `[${e.title}](${e.href})` : e.title;
- const pathCell = `\`${oldPath}\` → \`${newPath}\``;
- rows.push(`| ${titleCell} | ${pathCell} |`);
- } else {
- // Static/assets: create direct preview links if base is known
- const isLinkableAsset = /\.(png|jpe?g|gif|webp|svg|css|js|ico|txt|pdf|mp4|webm)$/i.test(newPath);
- const rel = newPath.replace(/^static\//, '/').replace(/^assets\//, '/assets/');
- const href = (previewBase && isLinkableAsset) ? (previewBase + rel) : '';
- const title = titleFromPath(newPath);
- const titleCell = href ? `[${title}](${href})` : title;
- const pathCell = `\`${oldPath}\` → \`${newPath}\``;
- rows.push(`| ${titleCell} | ${pathCell} |`);
- }
- }
-
- return rows;
- }
-
- const MAX_ROWS_PER_TABLE = 20;
- const addedInfo = limitAndSortFiles(addedFiltered, MAX_ROWS_PER_TABLE);
- const modifiedInfo = limitAndSortFiles(modified, MAX_ROWS_PER_TABLE);
- const deletedInfo = limitAndSortFiles(deletedFiltered, MAX_ROWS_PER_TABLE);
- const renamedInfo = { files: renamedFiles.slice(0, MAX_ROWS_PER_TABLE), truncated: renamedFiles.length > MAX_ROWS_PER_TABLE, total: renamedFiles.length };
-
- const addedRows = buildRows(addedInfo.files);
- const modifiedRows = buildRows(modifiedInfo.files);
- const deletedRows = buildRows(deletedInfo.files, true); // Pass true for deleted files
- const renamedRows = buildRenamedRows(renamedInfo.files);
-
- const header = '\n\n**PR Preview: Changed content**' + (previewBase ? `\n\nBase preview: ${previewBase}` : '\n\n⏳ *Links will be added automatically when Cloudflare Pages finishes deploying (typically 2-5 minutes)*');
- if (!previewBase) {
- core.info('Preview base URL not available yet. Comment will be automatically updated when Cloudflare posts the Branch Preview URL.');
- }
-
- function section(title, rows, info) {
- if (rows.length === 0 && !info.truncated) return '';
-
- let sectionTitle = title;
- if (info.truncated) {
- sectionTitle += ` (showing ${rows.length} of ${info.total} files with largest changes)`;
- }
-
- return `\n\n### ${sectionTitle}\n\n| Title | Path |\n| --- | --- |\n${rows.join('\n')}`;
- }
-
- const body = [
- header,
- section('Renamed/Moved', renamedRows, renamedInfo),
- section('Added', addedRows, addedInfo),
- section('Modified', modifiedRows, modifiedInfo),
- section('Deleted', deletedRows, deletedInfo),
- ].join('');
-
- // Check if body exceeds GitHub's limit
- const MAX_COMMENT_SIZE = 65536;
- if (body.length > MAX_COMMENT_SIZE) {
- core.warning(`Preview comment size (${body.length}) exceeds GitHub's limit (${MAX_COMMENT_SIZE}). This should not happen with row limits in place.`);
- }
-
- // Update the existing comment
- const commentId = process.env.COMMENT_ID;
- if (!commentId) {
- core.error('No comment ID found');
- return;
- }
-
- await github.rest.issues.updateComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: parseInt(commentId),
- body,
- });
-
- core.info(`Updated preview comment ${commentId} with ${addedFiltered.length + modified.length + deletedFiltered.length + renamedFiles.length} changed files`);
-
- // Add link to PR description if we have preview links and this is the first time
- if (previewBase && (addedFiltered.length + modified.length + renamedFiles.length) > 0) {
- try {
- const pr = await github.rest.pulls.get({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: context.issue.number,
- });
-
- const currentBody = pr.data.body || '';
- const commentUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/pull/${context.issue.number}#issuecomment-${commentId}`;
- const linkMarker = '';
- const linkText = `\n\n${linkMarker}\n📄 **[View preview links for changed pages](${commentUrl})**`;
-
- // Only add if not already present
- if (!currentBody.includes(linkMarker)) {
- await github.rest.pulls.update({
- owner: context.repo.owner,
- repo: context.repo.repo,
- pull_number: context.issue.number,
- body: currentBody + linkText,
- });
- core.info('Added preview link to PR description');
- }
- } catch (e) {
- core.warning(`Could not update PR description: ${e.message}`);
- }
- }
diff --git a/README.md b/README.md
index 0635aa3a79..6f245570e2 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Weights & Biases Documentation
-The Weights & Biases Docs ([https://docs.wandb.ai/](https://docs.wandb.ai/)) is built using Docsy, a technical documentation theme for Hugo, a static website generator. The high level overview of the doc writing process is:
+The Weights & Biases Docs ([https://docs.wandb.ai/](https://docs.wandb.ai/)) is built using Mintlify, a static website generator. The high level overview of the doc writing process is:
1. Edit the desired files
2. Create a pull request proposing your changes
@@ -30,10 +30,11 @@ This section shows how to edit a page or report a bug from within your browser w
If you work for Weights & Biases, file a doc JIRA, using this template: https://wandb.atlassian.net/secure/CreateIssueDetails!init.jspa?priority=3&pid=10026&issuetype=10047.
-
+{/*
To report a bug on a page you're reading on docs.wandb.com:
1. Scroll to the bottom of the page and click **Report issue**.
1. Provide a title and optionally edit the description, then click **Create**.
+*/}
To report a bug from https://github.com/wandb/docs:
1. Click the **Issues** tab.
@@ -42,227 +43,105 @@ To report a bug from https://github.com/wandb/docs:
## Prerequisites
-A current version of NodeJS is required; ideally, something newer than version 20. If you still need to use an old version of node for other projects, we suggest using `nvm` and setting up version 20 using that, which you can swap into with the `use` command:
+The `mint` CLI is required for local builds. See https://www.mintlify.com/docs/installation. Install it from `npx` or from Homebrew.
-```
-nvm install 20
-nvm use 20
-```
### macOS
-After cloning this repo, `cd` into your local clone directory and these commands:
-
-```
-brew install go
-brew install hugo
-brew install npm
-npm install
-hugo mod get -u
-```
-
-The last lines critical, as it downloads Hugo, the [Docsy](https://docsy.dev) module for Hugo, and the dependencies of each.
-
-## Running the website locally
-
-```bash
-hugo server
-```
-
-## Exiting `hugo server`
-
-Hit `CTRL+C` in the terminal that is showing `hugo` activity to interrupt the server and exit to the terminal prompt.
-
-## Hugo and Docsy shortcodes
-
-- We use Docsy's `alert` shortcode for admonitions. The alert `color` determines the admonition type. Refer to [alerts](https://www.docsy.dev/docs/adding-content/shortcodes/#alert) for details. Examples:
- ```markdown
- {{% alert %}}
- Only **public** reports are viewable when embedded.
- {{% /alert %}}
- ```
- ```markdown
- {{% alert title="Undo changes to your workspace" %}}
- Select the undo button (arrow that points left) to undo any unwanted changes.
- {{% /alert %}}
- ```
- ```markdown
- {{% alert title="Warning" color="warning" %}}
- This is a warning.
- {{% /alert %}}
- ```
-- We use Docsy's `tabpane` and `tab` shortcodes for tabbed content. Refer to [tabpane](https://www.docsy.dev/docs/adding-content/shortcodes/#tabpane) for details. Example:
- ```markdown
- {{< tabpane text=true >}}
- {{% tab header="GitHub repository dispatch" value="github" %}}
- ... Markdown contents ...
- {{% /tab %}}
-
- {{% tab header="Microsoft Teams notification" value="microsoft"%}}
- ... Markdown contents ...
- {{% /tab %}}
- {{< /tabpane >}}
- ```
-- We use a custom `img` shortcode for images. It is implemented in `layouts/shortcodes/img.html`. Examples:
- ```markdown
- {{< img src="/images/app_ui/automated_workspace.svg" >}}
- ```
- ```markdown
- {{< img src="/images/app_ui/automated_workspace.svg" alt="automated workspace icon" >}}
+After cloning this repo:
+1. `cd` into the clone.
+2. Create a working branch:
+ ```shell
+ git checkout -b my_working_branch origin/main
```
- ```markdown
- {{< img src="/images/app_ui/automated_workspace.svg" alt="automated workspace icon" width="32px" >}}
+3. Build and build and serve the docs locally:
+ ```shell
+ mint dev
```
- ```markdown
- {{< img src="/images/app_ui/demo_make_a_custom_chart_bar_chart.gif" alt="Creating a custom bar chart showing accuracy across runs in a project" max-width="90%" >}}
+ By default, content is served from `https://localhost:3000/`.
+4. Check for broken links and images:
+ ```shell
+ mint broken-links
+ ```
+5. Push your branch to `origin`:
+ ```shell
+ git push origin my_working_branch
```
-- We use a custom `ctabutton` shortcode to link to Colab notebooks. It is implemented in `layouts/shortcodes/cta-button.html`. Examples:
- ```markdown
- {{< cta-button colabLink="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/boosting/Using_W&B_Sweeps_with_XGBoost.ipynb" >}}
- ```
-- We use a custom `prism` shortcode to load titled code examples from `static/` within the docs repo. Example for a file stored in `static/webhook_test.sh`:
- ```markdown
- {{< prism file="/webhook_test.sh" title="webhook_test.sh">}}{{< /prism >}}
- ```
-- We are _experimenting_ with using `readfile` for includes. If you run into issues, report it in a Github issue.
-
- Add a Markdown file with no front matter to `content/_includes/`. Subdirectories are supported. Include the file using the [`readfile`](https://www.docsy.dev/docs/adding-content/shortcodes/#reuse-documentation) shortcode. For example:
- ```markdown
- {{< readfile file="/_includes/enterprise-only.md" >}}
- ```
-
- - If you change an include, the `hugo serve` incremental build does not pick up the change. Stop and restart `hugo serve`.
- - Hugo and Docsy shortcodes are **not** supported inside the include file.
-## Editing style
-
-Style overrides are in `/assets/scss/_variables_project.scss`. Here we can override all the styles that ship with the Docsy theme. O
-
-## Troubleshooting
-
-As you run the website locally, you may run into the following error:
-
-```console
-$ hugo server
-WARN 2023/06/27 16:59:06 Module "project" is not compatible with this Hugo version; run "hugo mod graph" for more information.
-Start building sites …
-hugo v0.101.0-466fa43c16709b4483689930a4f9ac8add5c9f66+extended windows/amd64 BuildDate=2022-06-16T07:09:16Z VendorInfo=gohugoio
-Error: Error building site: "C:\Users\foo\path\to\docsy-example\content\en\_index.md:5:1": failed to extract shortcode: template for shortcode "blocks/cover" not found
-Built in 27 ms
-```
-
-This error occurs if you are running an outdated version of Hugo. As of docsy theme version `v0.7.0`, hugo version `0.110.0` or higher is required.
-See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo.
-
-Or you may be confronted with the following error:
-
-```console
-$ hugo server
-
-INFO 2021/01/21 21:07:55 Using config file:
-Building sites … INFO 2021/01/21 21:07:55 syncing static files to /
-Built in 288 ms
-Error: Error building site: TOCSS: failed to transform "scss/main.scss" (text/x-scss): resource "scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68" not found in file cache
-```
-
-This error occurs if you have not installed the extended version of Hugo.
-See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-hugo) of the user guide for instructions on how to install Hugo.
+6. The first time you push a new branch, the terminal output includes a link to create a PR. Click the link and create a draft PR. CI tests will run.
+7. When you are satisfied with your PR and all tests pass, click **Ready for review** to convert the draft PR to a reviewable PR. A member of the W&B docs team will review your changes and give feedback.
+8. When all feedback is addressed and the PR is approved, the reviewer will merge the PR.
-Or you may encounter the following error:
-```console
-$ hugo server
+## Running the website locally
-Error: failed to download modules: binary with name "go" not found
-```
+Build and build and serve the docs locally:
+ ```shell
+ mint dev
+ ```
-This error occurs if you have not installed the `go` programming language on your system.
-See this [section](https://www.docsy.dev/docs/get-started/docsy-as-module/installation-prerequisites/#install-go-language) of the user guide for instructions on how to install `go`.
+## Exiting `mint dev`
+To interrupt the Mintlify server, type `CTRL+C` in the terminal where it is running.
-[alternate dashboard]: https://app.netlify.com/sites/goldydocs/deploys
-[deploys]: https://app.netlify.com/sites/docsy-example/deploys
-[Docsy user guide]: https://docsy.dev/docs
-[Docsy]: https://github.com/google/docsy
-[example.docsy.dev]: https://example.docsy.dev
-[Hugo theme module]: https://gohugo.io/hugo-modules/use-modules/#use-a-module-for-a-theme
-[Netlify]: https://netlify.com
-[Docker Compose documentation]: https://docs.docker.com/compose/gettingstarted/
+## Mintlify compatibility
+Mintlify processes Markdown files in `.mdx` format, which has stricter requirements than `.md`. If a file contains incompatible Markdown, `mint dev` will fail and `mint broken-links` will show errors. For example, HTML comments (``) are not supported. Instead, use this syntax for comments: `{/* like this */}`.
+For general guidelinest, refer to the **Create content** section of the [Mintlify documentation](https://www.mintlify.com/docs/). For example:
+- [Format text](https://www.mintlify.com/docs/create/text)
+- [Lists and tables](https://www.mintlify.com/docs/create/list-table)
+- [Images and embeds](https://www.mintlify.com/docs/create/image-embeds)
+- [Callouts](https://www.mintlify.com/docs/components/callouts)
+- [Cards](https://www.mintlify.com/docs/components/cards)
+- [Tabs](https://www.mintlify.com/docs/components/tabs)
+This list of links is not exhaustive. Check the Mintlify documentation for full details.
## How to edit the docs locally
1. Navigate to your local clone this repo and pull the latest changes from main:
-
-```bash
-git pull origin main
-```
-
+ ```bash
+ git pull origin main
+ ```
2. Create a feature branch off of `main`.
-
-```bash
-git checkout -b
-```
-
+ ```bash
+ git checkout -b
+ ```
3. After installing the prerequsites documented above, start a local preview of the docs.
-
-```bash
-hugo server
-```
-
-This will return the localhost URL and port number where you can preview your changes to the docs as you make them (e.g. `https://localhost:1313`).
-
+ ```bash
+ mint dev
+ ```
+ This will return the localhost URL and port number where you can preview your changes to the docs as you make them (e.g. `https://localhost:3000`).
4. Make your changes on the new branch.
-5. Check your changes are rendered correctly. Any time you save a file, the preview should automatically update.
+5. Check your changes are rendered correctly. Any time you save a file, the preview automatically updates.
7. Commit the changes to the branch.
-
-```bash
-git add .
-git commit -m 'Useful commit message.'
-```
-
+ ```bash
+ git add .
+ git commit -m 'Useful commit message.'
+ ```
8. Push the branch to GitHub.
-
-```bash
-git push origin
-```
-
+ ```bash
+ git push origin
+ ```
9. Open a pull request from the new branch to the original repo.
-
## What files do I edit?
+You can edit most `.mdx` files in the repo directly. Content in a few directories is generated from upstream code. Edit the code in the source repo, not in `wandb/docs`. After your upstream change is merged and released, when the relevant content is next generated, your change will be included.
-There are two types of docs in our Docs site: Developer Guide and the API Reference Guide.
-
-### Developer Guide
-
-All markdown files for the [W&B Developer Guide](https://docs.wandb.ai/) are stored in:
-
-```bash
-content/guides/
-```
-
-The PR you create will get reviewed and (if approved) merged by the Docs Team.
-
-### API Reference Guide
-
-All markdown files for the [W&B API Reference Guide](https://docs.wandb.ai/ref) are stored in:
-
-```bash
-content/ref
-```
-
-The markdown files are generated from docstrings in https://github.com/wandb/wandb. Modify the docstring from the appropriate Python Class, function, or CLI definition to update the public-facing documentation API.
-
-Once you are done, create a pull request from https://github.com/wandb/wandb. The PR you create will get reviewed and (if approved) merged by the SDK Team. The Docs are updated when the W&B SDK Team makes an W&BSDK Release. SDK Releases occur about every 2-4 weeks.
+| Directory | Source repo |
+|-----------|-------------|
+| `/ref/python/`| [`wandb/wandb`](https://github.com/wandb/wandb) |
+| `/models/ref/cli/` | [`wandb/wandb`](https://github.com/wandb/wandb)|
+| `/weave/api-reference/` | [`wandb/weave`](https://github.com/wandb/weave) |
+| `/weave/cookbooks/` | [`wandb/weave`](https://github.com/wandb/weave) |
+| `/weave/reference/` | [`wandb/weave`](https://github.com/wandb/weave) |
## AI resources
-The `.ai/` directory contains resources specifically designed for AI agents working with this repository. These include:
+The `.ai/` directory contains experimental resources specifically designed for AI agents working with this repository. These include:
- **[Runbooks](.ai/runbooks/)**: Step-by-step instructions for complex, recurring tasks (e.g., testing GitHub Actions changes)
- **[Style guide](.ai/style-guide.md)**: Quick reference for AI agents on wandb/docs style conventions
-If you're using an AI agent to help with documentation tasks, provide these resources as context to ensure consistent, high-quality contributions. See the [.ai/README.md](.ai/README.md) for more details.
+If you're using an AI agent to help with documentation tasks, provide these resources as context to ensure consistent, high-quality contributions. Agents do not discover or load the prompts in `.ai/` automatically. See the [.ai/README.md](.ai/README.md) for more details.
## License
@@ -278,7 +157,7 @@ The source for this documentation is offered under the Apache 2.0 license.
## Attributions
-- This project uses Docsy, a Hugo theme by Google. [License](https://github.com/google/docsy/blob/main/LICENSE)
+- This project uses Mintlify. [License](https://github.com/mintlify)
- A dependency of Docsy is the `caniuse-lite` package, offered under CC-BY-4.0. [License](https://github.com/browserslist/caniuse-lite/blob/main/LICENSE)
- Another dependency of Docsy is Font Awesome Free, offered under the CC-BY-4.0, SIL OFL 1.1, and MIT licenses. [License notice](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt)
- This site is built using Hugo, a static site generator. [License](https://github.com/gohugoio/hugo/blob/master/LICENSE)
diff --git a/archetypes/support.md b/archetypes/support.md
deleted file mode 100644
index 25c8ab376f..0000000000
--- a/archetypes/support.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Your Title Here
-toc_hide: true
-type: docs
-url: /support/:filename
-support:
- - your-term-here
----
-
-Your content here.
diff --git a/assets/images/app_ui/custom-charts-query-example.png b/assets/images/app_ui/custom-charts-query-example.png
deleted file mode 100644
index a3861e85dc..0000000000
Binary files a/assets/images/app_ui/custom-charts-query-example.png and /dev/null differ
diff --git a/assets/images/app_ui/custom-charts-script-plots.png b/assets/images/app_ui/custom-charts-script-plots.png
deleted file mode 100644
index 52d5462c63..0000000000
Binary files a/assets/images/app_ui/custom-charts-script-plots.png and /dev/null differ
diff --git a/assets/images/app_ui/manual-line-plot.png b/assets/images/app_ui/manual-line-plot.png
deleted file mode 100644
index e256d7651f..0000000000
Binary files a/assets/images/app_ui/manual-line-plot.png and /dev/null differ
diff --git a/assets/images/app_ui/run-colors-colorblind-deuteranomaly.png b/assets/images/app_ui/run-colors-colorblind-deuteranomaly.png
deleted file mode 100644
index 059c04fb08..0000000000
Binary files a/assets/images/app_ui/run-colors-colorblind-deuteranomaly.png and /dev/null differ
diff --git a/assets/images/app_ui/run-colors-colorblind-other.png b/assets/images/app_ui/run-colors-colorblind-other.png
deleted file mode 100644
index 54f66db76e..0000000000
Binary files a/assets/images/app_ui/run-colors-colorblind-other.png and /dev/null differ
diff --git a/assets/images/app_ui/run-colors-default.png b/assets/images/app_ui/run-colors-default.png
deleted file mode 100644
index e0486f7fb0..0000000000
Binary files a/assets/images/app_ui/run-colors-default.png and /dev/null differ
diff --git a/assets/images/app_ui/run-colors-key-based.png b/assets/images/app_ui/run-colors-key-based.png
deleted file mode 100644
index 8890cbce9a..0000000000
Binary files a/assets/images/app_ui/run-colors-key-based.png and /dev/null differ
diff --git a/assets/images/general/architecture.png b/assets/images/general/architecture.png
deleted file mode 100644
index 4a877d94cc..0000000000
Binary files a/assets/images/general/architecture.png and /dev/null differ
diff --git a/assets/images/hosting/saas_cloud_arch.png b/assets/images/hosting/saas_cloud_arch.png
deleted file mode 100644
index 7a0bbf499b..0000000000
Binary files a/assets/images/hosting/saas_cloud_arch.png and /dev/null differ
diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss
deleted file mode 100644
index edaf1036fe..0000000000
--- a/assets/scss/_variables_project.scss
+++ /dev/null
@@ -1,1493 +0,0 @@
-/*
-
-Add styles or override variables from the theme here.
-
-*/
-
-@import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&display=swap');
-
-// First define the base color tokens
-// Moon (Grayscale)
-$moon-white: #ffffff;
-$moon-50: #fafafa;
-$moon-100: #f5f6f7;
-$moon-200: #e4e6eb;
-$moon-250: #dfe0e2;
-$moon-300: #d3d7de;
-$moon-350: #c1c6cf;
-$moon-400: #aeb3bd;
-$moon-500: #79808a;
-$moon-600: #565c66;
-$moon-650: #4a4f58;
-$moon-700: #3f464f;
-$moon-750: #363c44;
-$moon-800: #2b3038;
-$moon-900: #1a1d24;
-$moon-950: #171a1f;
-
-// Teal colors
-$teal-300: #a9edf2;
-$teal-400: #58d3db;
-$teal-450: #10bfcc;
-$teal-500: #13a9ba;
-$teal-550: #0e97a7;
-$teal-600: #038194;
-
-// Border colors
-$border-default: $moon-200; // Using moon-200 instead of moon-250
-$border-hover: $moon-350; // color/moon/350
-$border-active: $teal-500; // color/teal/500
-$border-subtle: $moon-100; // color/moon/100
-$dark-border-default: $moon-750; // color/moon/750
-$dark-border-hover: $moon-650; // color/moon/650
-$dark-border-subtle: $moon-800; // color/moon/800
-
-// Border radius
-$border-radius-medium: 8px; // Used for most components
-$border-radius-large: 12px; // Used for modals and larger components
-
-// Then define the semantic color tokens
-// Text colors
-$text-primary: $moon-800; // color/moon/800
-$text-secondary: $moon-600; // color/moon/600
-$text-tertiary: $moon-500; // color/moon/500
-$text-disabled: $moon-350; // color/moon/350
-
-// Link colors
-$link-primary: $teal-600; // color/teal/600
-$link-hover: $teal-550; // color/teal/550
-$link-secondary: $moon-600; // color/moon/600
-$link-secondary-hover: $moon-500; // color/moon/500
-
-// Background colors
-$bg-primary: $moon-white; // White background
-$bg-secondary: $moon-50; // color/moon/50
-$bg-tertiary: $moon-100; // color/moon/100
-$bg-disabled: $moon-350; // color/moon/350
-
-// Dark mode colors
-$dark-text-primary: $moon-200; // color/moon/200
-$dark-text-secondary: $moon-400; // color/moon/400
-$dark-text-tertiary: $moon-500; // color/moon/500
-$dark-text-disabled: $moon-650; // color/moon/650
-
-$dark-link-primary: $teal-500; // color/teal/500
-$dark-link-hover: $teal-450; // color/teal/450
-$dark-link-secondary: $moon-600; // color/moon/600
-$dark-link-secondary-hover: $moon-500; // color/moon/500
-
-$dark-bg-primary: $moon-900; // color/moon/900
-$dark-bg-secondary: $moon-800; // color/moon/800
-$dark-bg-tertiary: $moon-700; // color/moon/700
-$dark-bg-disabled: $moon-650; // color/moon/650
-
-// Other brand colors
-$nav-bg: rgb(26, 28, 31);
-$wandb-gold: #FFCC33;
-$wandb-link-blue: rgb(7, 177, 196);
-$hover-bg: #A9EDF260;
-
-// Gradients
-$sunset-gradient: linear-gradient(98deg, #e180ff 0%, #ffcf4d 100%);
-$wandb-gradient: linear-gradient(180deg, #ffcc33 39%, #ffad33 72%);
-
-// Font weights
-$font-weight-light: 300;
-$font-weight-regular: 400;
-$font-weight-medium: 500;
-$font-weight-semibold: 600;
-$font-weight-bold: 700;
-
-// Bootstrap overrides
-:root {
- --bs-nav-link-font-size: 18px;
-}
-
-// Typography Component
-// Base body styles
-body {
- font-family: "Source Sans Pro", sans-serif;
- font-size: 16px;
- font-weight: $font-weight-regular;
- color: $text-primary;
- background-color: $bg-primary;
-
- [data-bs-theme=dark] & {
- color: $dark-text-primary;
- background-color: $dark-bg-primary;
- }
-}
-p, td, div
-{
- font-family: "Source Sans Pro", sans-serif;
-}
-.td-sidebar-nav__section-title, .td-sidebar-nav__section without-child
-{
- font-size: 16px;
- font-weight: $font-weight-bold;
-}
-
-// Headings
-h1, h2, h3, h4, h5, h6 {
- font-weight: $font-weight-regular !important;
- font-family: "Source Serif 4", sans-serif;
- color: $text-primary;
-
- [data-bs-theme=dark] & {
- color: $dark-text-primary;
- }
-}
-
-// Heading sizes
-h1, .td-content h1 { font-size: 32px !important; }
-h2, .td-content h2 { font-size: 24px !important; }
-h3, .td-content h3 { font-size: 20px !important; }
-h4, .td-content h4 { font-size: 18px !important; }
-h5, .td-content h5 { font-size: 17px !important; }
-h6, .td-content h6 { font-size: 16px !important; }
-
-// Lead paragraph
-.td-content .lead {
- font-size: 16px !important;
- font-weight: $font-weight-regular !important;
-}
-
-// Reading time
-.reading-time {
- font-size: 14px;
- color: $text-secondary;
-
- [data-bs-theme=dark] & {
- color: $dark-text-secondary;
- }
-}
-
-// Links
-a {
- color: $link-primary !important;
- text-decoration: none !important;
-
- &:hover {
- color: $link-hover !important;
- text-decoration: none !important;
- }
-
- [data-bs-theme=dark] & {
- color: $dark-link-primary !important;
-
- &:hover {
- color: $dark-link-hover !important;
- }
- }
-}
-
-// hide "create child" and "create project issue" links
-.td-page-meta__child, .td-page-meta__project-issue { display: none !important; }
-
-// shrink the right nav a bit
-.td-page-meta {
- display: none !important;
- font-size: 16px !important;
- a {
- padding-bottom: 15px;
- line-height: 22px;
- }
-}
-
-// hide left nav label
-.tree-root { display: none !important;}
-
-// First define breakpoints
-$breakpoint-sm: 576px; // Phone
-$breakpoint-md: 768px; // Tablet
-$breakpoint-lg: 992px; // Desktop
-$breakpoint-xl: 1200px; // Large desktop
-
-// Consolidated navbar styles with mobile-first approach
-.td-navbar {
- background-color: $bg-primary !important;
- padding: 0 !important;
- border-bottom: 1px solid $border-default !important;
-
- // Base styles (mobile first)
- .container-fluid {
- padding: 8px !important;
- gap: 16px !important;
-
- .td-navbar-nav-scroll {
- align-items: center !important;
- height: auto !important;
- margin: 0 !important;
- padding: 0 !important;
- gap: 16px !important;
-
- .navbar-nav {
- display: flex !important;
- align-items: center !important;
- padding-left: 0 !important;
- margin: 0 !important;
- gap: 8px !important;
-
- .nav-item {
- padding-inline-end: 0 !important;
- }
-
- &.main-nav {
- padding: 0 !important;
- margin: 0 !important;
-
- // Nav links base styles
- .nav-link {
- color: $text-secondary !important;
- font-weight: $font-weight-regular !important;
- transition: all 0.2s ease-in-out !important;
- border-bottom: none !important;
- border-radius: $border-radius-medium !important;
- padding: 8px 10px !important;
- font-size: 16px !important;
-
- &:hover {
- text-decoration: none !important;
- background-color: rgba($moon-300, 0.2) !important;
- }
-
- &.active {
- color: $link-primary !important;
- background-color: rgba($moon-300, 0.2) !important;
- font-weight: $font-weight-regular !important;
- }
- }
-
- }
-
- &.main-nav-right {
- padding: 0 !important;
- margin: 0 !important;
- align-items: center !important;
- gap: 0 !important;
-
- // Update mobile light/dark toggle styles
- .td-light-dark-menu {
- display: flex !important;
- align-items: center !important;
- margin: 0 !important;
- gap: 0 !important;
- min-width: 0 !important;
- }
-
- // Dropdown styles
- .nav-item.dropdown {
- margin: 0 !important;
-
- .nav-link {
- font-size: 16px !important;
- font-weight: $font-weight-regular !important;
- color: $text-secondary !important;
-
- &:hover {
- background-color: transparent !important;
- }
-
- &::after {
- display: none !important;
- }
-
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
- }
- }
- }
- }
- }
- }
- }
-
- // Brand/logo styles
- .navbar-brand {
- display: flex !important;
- align-items: center !important;
- padding: 0 !important;
- margin-right: 0 !important;
-
- .navbar-logo {
- display: block;
- width: auto;
- height: auto;
- margin: 0 !important;
-
- svg {
- margin: 0 !important;
- width: 100%;
- }
- }
- }
-
- // Hide the doc site name
- .navbar-brand__name {
- display: none !important;
- }
-
-
- // Tablet styles (577px and up)
- @media (min-width: $breakpoint-sm + 1) {
- .container-fluid {
- padding: 8px 12px !important;
- }
-
- .navbar-brand {
- margin-right: 1rem !important;
- }
- }
-
- // Desktop styles (992px and up)
- @media (min-width: $breakpoint-lg) {
- .container-fluid {
- padding: 8px 24px !important;
- flex-direction: row !important;
- align-items: center !important;
- justify-content: flex-start !important;
- gap: 32px !important;
-
- .td-navbar-nav-scroll {
- flex-grow: 1 !important;
-
- .navbar-nav {
-
- &.main-nav {
- flex-grow: 1 !important;
- gap: 16px !important;
-
- .nav-link {
- padding: 6px 12px !important;
- font-size: 18px !important;
- }
- }
-
- &.main-nav-right {
- gap: 16px !important;
-
- .nav-link{
- font-size: 16px !important;
- color: $text-secondary !important;
- }
- }
- }
- .main-nav-search {
- min-width: 300px !important;
-
- .DocSearch.DocSearch-Button {
- margin: 0 !important;
- min-width: 100% !important;
- }
- }
- }
- }
-
-
- .nav-item.dropdown {
- &.d-none.d-lg-block,
- &.td-light-dark-menu {
- margin: 0 4px !important;
-
- .nav-link {
- font-size: 16px !important;
- }
- }
- }
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- background-color: $dark-bg-primary !important;
- border-bottom: 1px solid $dark-border-default !important;
-
- &.js-navbar-scroll {
- background-color: $dark-bg-primary !important;
- }
-
- .td-navbar-nav-scroll {
-
- .navbar-nav {
-
- &.main-nav {
- .nav-link {
- color: $moon-white !important;
-
- &:hover {
- color: $teal-500 !important;
- }
-
- &.active {
- color: $teal-500 !important;
- }
- }
- }
-
- .nav-item.dropdown {
- &.d-none.d-lg-block,
- &.td-light-dark-menu {
- .nav-link {
- color: $dark-text-primary !important;
-
- &:hover {
- color: $dark-link-primary !important;
- }
- }
- }
- }
- }
- }
- }
-
- // Update the light/dark menu styles
- .td-light-dark-menu {
- &.nav-item.dropdown {
- margin: 0 2px !important;
- display: flex !important;
- align-items: center !important;
- }
-
- // Hide from navbar-right on mobile
- &.d-none {
- @media (max-width: #{$breakpoint-lg - 1}) {
- display: none !important;
- }
- }
- }
-}
-
-// headings use WandB serif font
-h1, h2, h3, h4, h5, h6 {
- font-weight: $font-weight-regular !important;
- font-family: "Source Serif 4", sans-serif;
- color: $text-primary;
-}
-
-.td-sidebar-nav-active-item {
- text-decoration: none;
-}
-
-ol.breadcrumb li {
- font-size: 13px;
-}
-ol.breadcrumb li:not(:first-child):before {
- content: ">" !important;
-}
-
-.td-sidebar-nav__section-title, .td-sidebar-nav__section {
- margin-bottom: 10px !important;
- .nav-link.dropdown-toggle {
- margin-left: -5px !important;
- }
-}
-
-.td-content .lead {
- font-size: 16px !important;
- font-weight: $font-weight-regular !important;
-}
-
-// Table of Contents Component
-#TableOfContents {
-
- font-size: 13px !important;
- font-family: "Source Sans Pro", sans-serif;
- a{
- margin: 0px !important;
- padding: 8px !important;
- font-weight: 500 !important;
- }
- // List styles
- ul {
- padding: 0px !important;
- li {
- padding: 0px !important;
- line-height: 14px;
- }
- }
-
- // Link styles
- a {
- display: block;
- color: $text-secondary !important;
-
- &:hover {
- color: $link-primary !important;
- text-decoration: none !important;
- }
-
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
-
- &:hover {
- color: $dark-link-primary !important;
- }
- }
- }
-
- // Dark mode
- [data-bs-theme=dark] & {
- color: $dark-text-primary;
- }
-}
-
-// tabs
-ul {
- &.nav-tabs {
- border-bottom: none !important;
-
- li {
- &.nav-item {
- margin: 0 !important;
-
- button {
- color: $text-primary !important;
-
- &.active {
- color: $link-primary !important;
- background-color: var(--td-pre-bg) !important;
- border-bottom-color: var(--td-pre-bg) !important;
- }
-
- // Add dark mode styles
- [data-bs-theme=dark] & {
- color: $dark-text-primary !important;
-
- &.active {
- color: $dark-link-primary !important;
- }
- }
- }
- }
- }
- }
-}
-
-.tab-content {
- > .tab-pane {
- border-radius: 0 $border-radius-medium $border-radius-medium $border-radius-medium !important;
- border: 1px solid $border-default !important;
-
- // Add dark mode styles
- [data-bs-theme=dark] & {
- border-color: $dark-border-default !important;
- }
- }
-}
-
-// Buttons Component
-// Base button styles
-.button-base {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: $font-weight-semibold;
- padding: 0 12px;
- min-height: 40px;
- border-radius: $border-radius-medium;
- transition: background-color 0.3s, color 0.3s;
- text-decoration: none !important;
- border: none;
-
- &:hover {
- text-decoration: none !important;
- }
-}
-
-// CTA Container styles
-.cta-container {
- display: flex;
- align-items: center; // Vertically center the buttons
- gap: 16px; // Consistent spacing between buttons
- margin: 24px 0;
- flex-wrap: wrap; // Allow wrapping on smaller screens
-}
-
-// CTA Button
-.cta-button {
- @extend .button-base;
- color: $moon-800 !important;
- background-color: $moon-100;
- height: 40px; // Fixed height for consistency
- padding: 0 16px;
- display: inline-flex;
- align-items: center; // Center button contents vertically
- white-space: nowrap; // Prevent text wrapping inside button
-
- &:hover {
- background-color: $hover-bg;
- }
-
- // Icon styles
- svg, img {
- width: 24px;
- height: 24px;
- margin-right: 8px;
- }
-
- [data-bs-theme=dark] & {
- color: $dark-text-primary !important;
- background-color: $dark-bg-secondary;
-
- &:hover {
- background-color: $dark-bg-tertiary;
- }
- }
-}
-
-// Contact Us Button
-.contact-us-button {
- @extend .button-base;
- background-color: $teal-500;
- color: $moon-white !important;
- gap: 8px;
-
- &:hover {
- background-color: $teal-450;
- }
-
- img {
- width: 112px;
- height: 24px;
- }
-
- p {
- margin: 0;
- color: $moon-white;
- }
-
- [data-bs-theme=dark] & {
- background-color: $teal-450;
-
- &:hover {
- background-color: $teal-400;
- }
- }
-}
-
-// Banners Component
-// Base banner styles
-.banner-base {
- display: flex;
- padding: 32px 40px;
- flex-direction: column;
- align-items: flex-start;
- gap: 24px;
- border-radius: $border-radius-large;
- margin-bottom: 30px;
-
- h1, h2, p, div {
- filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.5));
- }
-}
-
-// Standard Banner
-.banner {
- @extend .banner-base;
- background-position: center;
- background-repeat: no-repeat;
- background-size: cover;
- min-height: 200px;
- color: $moon-white;
- overflow: hidden;
-}
-
-// Help Banner
-.help-banner {
- @extend .banner-base;
- padding: 56px 40px 72px 40px;
- background: $moon-900;
- background-image: url('/images/support/support_banner.png');
- background-size: cover;
- background-position: center;
- box-shadow: none;
-
- &.card:hover {
- box-shadow: none;
- transform: none;
- }
-
- h2 {
- color: $moon-50;
- font-size: 40px;
- font-weight: $font-weight-semibold;
- font-family: "Source Sans Pro";
- line-height: 140%;
- }
-
- p {
- color: $moon-250;
- font-size: 20px;
- font-weight: $font-weight-regular;
- font-family: "Source Sans Pro";
- line-height: 140%;
- }
-}
-
-// Card Banner
-.card-banner {
- @extend .banner-base;
- align-items: center;
- background: $moon-50;
- color: $moon-800;
-
- h2 {
- font-size: 24px;
- font-weight: $font-weight-semibold;
- color: $moon-900;
- margin: 0;
- }
-
- p {
- font-size: 16px;
- font-weight: $font-weight-regular;
- margin: 0;
- }
-
- &.card-banner-gray {
- &:hover {
- box-shadow: none;
- transform: none;
- }
- }
-
- // Icon container
- &-icon {
- display: flex;
- width: 64px;
- height: 64px;
- justify-content: center;
- align-items: center;
- border-radius: 100px;
- background: rgba($teal-300, 0.48);
-
- img {
- width: 32px;
- height: 32px;
- }
- }
-
- [data-bs-theme=dark] & {
- background: $dark-bg-secondary;
- color: $dark-text-primary;
-
- h2 {
- color: $dark-text-primary;
- }
-
- p {
- color: $dark-text-secondary;
- }
- }
-}
-
-// Add border radius to all images, code blocks and alerts
-img, pre, .highlight, .code-toolbar, .alert {
- border-radius: $border-radius-medium !important;
-}
-
-// Style images and iframes consistently
-img, iframe {
- margin-top: 1rem;
- margin-bottom: 2rem;
- display: block;
-}
-
-.section-index {
- max-width: 80%;
-}
-
-.section-index .entry p {
- margin-top: 5px;
-}
-
-@media (min-width: $breakpoint-lg) {
- img, iframe {
- max-width: 80% !important;
- }
-}
-
-// Override section index heading font weight
-.section-index h5 a, .section-index .h5 a {
- font-size: 20px !important;
- font-weight: $font-weight-regular !important;
-}
-
-// Add dark mode styles using data-bs-theme attribute
-[data-bs-theme=dark] {
- body {
- color: $dark-text-primary;
- background-color: $dark-bg-primary;
- }
-
- // Update sidebar nav colors for dark mode
- .td-sidebar-nav {
- a {
- color: $dark-text-primary !important;
- &:hover {
- color: $dark-link-primary !important;
- }
- .td-sidebar-nav-active-item {
- color: $dark-link-primary !important;
- }
- }
- }
-
- // Update headings color for dark mode
- h1, h2, h3, h4, h5, h6 {
- color: $dark-text-primary;
- }
-
- // Update reading time color for dark mode
- .reading-time {
- color: $dark-text-secondary;
- }
-
- // Update table of contents color
- #TableOfContents {
- color: $dark-text-primary;
- }
-
- .td-footer {
- background-color: transparent !important;
- color: $dark-text-primary !important;
- border-top: 1px solid $moon-750 !important;
- }
-
- // Update border colors for dark mode
- .border,
- .border-top,
- .border-right,
- .border-bottom,
- .border-left {
- border-color: $dark-border-default !important;
-
- &:hover {
- border-color: $dark-border-hover !important;
- }
- }
-}
-
-// For light mode (default) borders
-.border,
-.border-top,
-.border-right,
-.border-bottom,
-.border-left {
- border-color: $border-default !important;
-
- &:hover {
- border-color: $border-hover !important;
- }
-}
-
-// Footer Component
-.td-footer {
- background-color: transparent !important;
- color: $text-primary !important;
- border-top: 1px solid $moon-200 !important;
- padding: 1.5rem 0 !important;
- min-height: auto !important;
- margin: 0 !important;
-
- // Container styles
- .container-fluid {
- padding: 0 2rem !important;
- }
-
- // Row alignment
- .row {
- align-items: center !important;
- }
-
- // Footer links
- &__links-item {
- margin-bottom: 0 !important;
- }
-
- // Links and icons
- a, i {
- color: inherit !important;
- transition: color 0.3s !important;
-
- &:hover {
- color: $link-hover !important;
- }
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- background-color: transparent !important;
- color: $dark-text-primary !important;
- border-top: 1px solid $moon-750 !important;
-
- a:hover,
- i:hover {
- color: $wandb-gold !important;
- }
- }
-}
-
-// Feedback Component
-.td-content > .d-print-none { // Target only the feedback section at bottom of content
- margin-top: 4rem;
- display: flex;
- align-items: center; // Change back to center for vertical alignment
- flex-wrap: wrap; // Allow wrapping on smaller screens
- gap: 8px; // Consistent spacing between elements
-
- // Hide feedback title
- .feedback--title {
- display: none;
- }
-
- // Question and buttons container
- .feedback--question {
- margin: 0;
- display: flex;
- align-items: center;
- gap: 16px;
- }
-
- // Buttons container
- .btn {
- min-width: 50px;
- display: flex;
- align-items: center;
- justify-content: center;
-
- &.feedback--answer-no {
- margin: 0 !important;
- }
- }
-
- // Response styling
- .feedback--response {
- width: 100%;
- margin-top: 1rem;
- }
-}
-
-// Last modified date with feedback links - mobile styles
-div.td-page-meta__lastmod {
- display: flex !important;
- flex-direction: column !important; // Stack elements vertically on mobile
- gap: 8px !important;
- color: $text-secondary !important;
- font-size: 14px !important;
- margin-top: 0 !important;
-
- // Container for last modified text and commit link
- &:first-child {
- display: flex !important;
- align-items: center !important;
- gap: 4px !important;
- }
-
- // Style the commit link
- a {
- color: $text-secondary !important;
- &:hover {
- color: $link-primary !important;
- }
- }
-
- .feedback--links {
- display: flex !important;
- margin-top: 8px !important;
- align-items: center !important;
- gap: 16px !important;
-
- // Style the edit/issue links
- a {
- color: $text-secondary !important;
- &:hover {
- color: $link-primary !important;
- }
- }
- }
-
- // Tablet and desktop styles
- @media (min-width: $breakpoint-lg) {
- flex-direction: row !important; // Switch to horizontal layout
- align-items: center !important;
- justify-content: space-between !important;
-
- .feedback--links {
- margin-top: 0 !important;
- margin-left: auto !important;
- }
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
-
- a {
- color: $dark-text-secondary !important;
- &:hover {
- color: $dark-link-primary !important;
- }
- }
- }
-}
-
-// Feedback buttons
-.feedback--answer {
- @extend .button-base;
- color: $moon-800 !important;
- background-color: $moon-100 !important;
- background-image: none !important;
- margin-right: 8px !important;
- box-shadow: none !important;
- display: inline-block !important;
- margin-bottom: 0 !important;
- border: none !important;
-
- &:hover {
- background-color: $hover-bg !important;
- text-decoration: none !important;
- border: none !important;
- box-shadow: none !important;
- }
-
- // Remove unwanted margin
- &.mb-4 {
- margin-bottom: 0 !important;
- }
-
- // Hide disabled buttons
- &:disabled {
- display: none !important;
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- color: $dark-text-primary !important;
- background-color: $dark-bg-secondary !important;
- border: none !important;
-
- &:hover {
- background-color: $dark-bg-tertiary !important;
- border: none !important;
- box-shadow: none !important;
- }
- }
-}
-
-// Remove feedback links from original location
-.td-content > .d-print-none .feedback--links {
- display: none !important;
-}
-
-// Update the sidebar navigation styles
-.td-sidebar-nav {
- font-family: "Source Sans Pro", sans-serif;
- padding-left: 15px !important;
-
- // Base link styles
- a {
- color: $text-secondary !important;
- font-weight: $font-weight-regular;
- text-decoration: none !important;
-
- &:hover {
- color: $link-primary !important;
- text-decoration: none !important;
- }
- }
-
- // Active item styles
- .td-sidebar-nav-active-item {
- color: $link-primary !important;
- font-weight: $font-weight-medium !important;
- text-decoration: none !important;
-
- &:hover {
- text-decoration: none !important;
- }
- }
-
- // Section title styles
- &__section-title {
- display: block;
- font-weight: $font-weight-regular !important;
- line-height: 19px;
- margin-bottom: 10px !important;
- margin-top: 5px !important;
-
- .active {
- font-weight: $font-weight-regular !important;
- }
-
- a {
- color: var(--bs-secondary-color);
- font-weight: $font-weight-regular !important;
- }
- }
-
- // Dark mode overrides
- [data-bs-theme=dark] & {
- a {
- color: $dark-text-secondary !important;
-
- &:hover {
- color: $dark-link-primary !important;
- }
- }
-
- .td-sidebar-nav-active-item {
- color: $dark-link-primary !important;
- }
- }
-}
-
-// Foldable Nav
-nav.foldable-nav .with-child, nav.foldable-nav .without-child {
- padding-left: 10px !important;
- }
- // Update existing chevron styles
- nav.foldable-nav .ul-1 .with-child {
- & > label {
- display: flex;
- justify-content: space-between;
- align-items: center;
- width: 100%;
- position: relative;
- padding-right: 20px; // Space for chevron
-
- // Remove default chevrons
- &:before {
- display: none !important;
- }
- }
- }
-
- // Add chevrons to all expandable items
- nav.foldable-nav .ul-1 .with-child > label:after {
- content: "\f105" !important; // fa-angle-right (thinner chevron)
- font-family: "Font Awesome 6 Free", "Font Awesome 5 Free";
- font-weight: 900;
- color: $moon-500;
- transition: color 0.3s;
- font-size: 14px;
- position: absolute;
- right: 0px;
- top: 35%;
- transform: translateY(-50%);
- }
-
- // Change chevron for expanded items
- nav.foldable-nav .ul-1 .with-child > input:checked + label:after {
- content: "\f107" !important; // fa-angle-down (thinner chevron)
- }
-
- // Hover states
- nav.foldable-nav .ul-1 .with-child > label:hover:after {
- color: $teal-600 !important;
- }
-
- // Dark mode hover state
- [data-bs-theme=dark] nav.foldable-nav .ul-1 .with-child > label:hover:after {
- color: $wandb-gold !important;
- }
-
- // Dark mode hover state
- [data-bs-theme=dark] nav.foldable-nav .ul-1 .with-child > label:hover:after {
- color: $wandb-gold !important;
- }
-
-
-// Theme-based logo visibility
-[data-bs-theme="dark"] {
- .theme-light-only {
- display: none;
- }
- .theme-dark-only {
- display: block;
- }
-}
-
-[data-bs-theme="light"] {
- .theme-light-only {
- display: block;
- }
- .theme-dark-only {
- display: none;
- }
-}
-
-
-// Add consistent padding for main content
-.td-main {
- main {
- &.ps-md-5 {
- padding-left: 2rem !important;
- padding-right: 2rem !important;
-
- // Tablet (768px and up)
- @media (min-width: $breakpoint-md) {
- padding-left: 3rem !important;
- padding-right: 3rem !important;
- }
- }
- }
-}
-
-// Google Search style overrides
-.gsc-control-cse, .gsc-webResult.gsc-result, .gsc-cursor-page, .gsc-refinementHeader, .gs-no-results-result div {
- background-color: transparent !important;
- border: 0px !important;
-}
-.gs-title {
- font-family: "Source Serif 4", sans-serif !important;
-}
-.gs-title b, .gs-title a, .gsc-cursor-page, .gsc-above-wrapper-area, .gcsc-find-more-on-google-query, .gcsc-find-more-on-google-magnifier {
- color: $link-primary !important;
- text-decoration: none !important;
- font-size: 18px !important;
- &:hover {
- color: $link-hover !important;
- text-decoration: none !important;
- }
- [data-bs-theme=dark] & {
- color: $dark-link-primary !important;
-
- &:hover {
- color: $dark-link-hover !important;
- }
- }
-}
-.gsc-above-wrapper-area a:hover{
- background-color: $bg-secondary !important;
-}
-.gsc-result-info, .gs-per-result-labels {
- font-family: "Source Sans Pro", sans-serif !important;
- font-size: 14px !important;
- color: $text-secondary !important;
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
- }
-}
-.gsc-refinementBlock span {
- margin-left: 10px !important;
- margin-right: 10px !important;
-}
-.gs-visibleUrl-breadcrumb {
- font-family: "Source Sans Pro", sans-serif !important;
- font-size: 14px !important;
- color: $text-tertiary !important;
- [data-bs-theme=dark] & {
- color: $wandb-gold !important;
- }
-}
-
-.gs-snippet, .gsc-refinementHeader {
- font-family: "Source Sans Pro", sans-serif !important;
- font-size: 16px !important;
- color: $text-primary !important;
- [data-bs-theme=dark] & {
- color: $dark-text-primary !important;
- }
-}
-.gsc-above-wrapper-area {
- display: none !important;
-}
-body > div.container-fluid.td-default.td-outer > main > section > div > h2 {
- margin-left: 1.0rem !important;
-}
-.gs-per-result-labels {
- padding: 5px !important;
- border-radius: $border-radius-medium;
- font-size: 12px;
- max-width: fit-content;
-}
-.gs-per-result-labels span {
- display: none;
-}
-.gsc-inline-block:hover, .gsc-refinementhActive, .gs-per-result-labels {
- background-color: $bg-tertiary !important;
- [data-bs-theme=dark] & {
- background-color: $dark-bg-tertiary !important;
- }
-}
-.td-search__input, .form-control, .td-search-input
-{
- color: $text-tertiary !important;
- border: $text-tertiary !important;
- background-color: transparent !important;
- [data-bs-theme=dark] & {
- color: $dark-text-tertiary !important;
- border: $dark-text-tertiary !important;
- }
-}
-.gcsc-find-more-on-google {
- display: none !important;
-}
-
-// DocSearch Component
-.DocSearch {
- // Button styles
- &-Button {
- font-family: "Source Sans Pro", sans-serif;
- font-size: 16px;
- background: transparent !important;
- border: 1px solid $border-default !important;
-
- &:active,
- &:focus,
- &:hover {
- background: var(--docsearch-searchbox-focus-background);
- box-shadow: inset 0 0 0 2px $teal-500 !important;
- color: var(--docsearch-text-color);
- outline: none;
- border-color: $teal-500 !important;
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- border: 1px solid $dark-border-default !important;
-
- &:hover, &:focus, &:active {
- border-color: $teal-500 !important;
- box-shadow: inset 0 0 0 2px $teal-450 !important;
- }
- }
- }
-
- // Placeholder text color
- &-Button-Placeholder {
- color: $text-secondary !important;
-
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
- }
- }
-
- // Search icon color
- &-Search-Icon {
- color: $text-secondary !important;
-
- [data-bs-theme=dark] & {
- color: $dark-text-secondary !important;
- }
- }
-
- // Modal styles
- &-Modal {
- border-radius: $border-radius-large !important;
- }
-
- // Hide footer
- &-Footer {
- display: none !important;
- }
-}
-
-// DocSearch Container with CSS Variables
-.DocSearch-Container {
- font-family: "Source Sans Pro", sans-serif;
- font-size: 16px;
-
- // Light mode variables
- --docsearch-primary-color: #{$teal-500} !important;
- --docsearch-highlight-color: #{$teal-500} !important;
- --docsearch-text-color: #{$moon-800} !important;
- --docsearch-muted-color: #{$moon-500} !important;
- --docsearch-container-background: rgba(101, 108, 133, 0.8) !important;
- --docsearch-modal-background: #{$moon-white} !important;
- --docsearch-searchbox-background: #{$moon-100} !important;
- --docsearch-searchbox-focus-background: #{$moon-white} !important;
- --docsearch-hit-color: #{$moon-800} !important;
- --docsearch-hit-background: #{$moon-white} !important;
- --docsearch-hit-active-background: #{$teal-500} !important;
- --docsearch-footer-background: #{$moon-white} !important;
- --docsearch-logo-color: #{$teal-500} !important;
- --docsearch-key-gradient: linear-gradient(-26.5deg, #{$moon-200}, #{$moon-100}) !important;
- --docsearch-key-shadow: inset 0 -2px 0 0 #{$moon-300} !important;
- --docsearch-searchbox-shadow: inset 0 0 0 2px #{$teal-500} !important;
-
- .DocSearch-Modal {
- border-radius: 0 !important;
- max-width: 800px !important;
- }
-
- // Search form styles
- .DocSearch-Form {
- border-radius: 30px !important;
- }
-
- // Search results styles
- .DocSearch-Hit {
- border-radius: $border-radius-medium;
-
- > a {
- box-shadow: none !important;
- border-radius: $border-radius-medium;
- border: 1px solid $border-default !important;
-
- }
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
- --docsearch-primary-color: #{$teal-400} !important;
- --docsearch-highlight-color: #{$teal-400} !important;
- --docsearch-text-color: #{$moon-200} !important;
- --docsearch-muted-color: #{$moon-400} !important;
- --docsearch-container-background: rgba(21, 23, 31, 0.8) !important;
- --docsearch-modal-background: #{$moon-800} !important;
- --docsearch-searchbox-background: #{$moon-900} !important;
- --docsearch-searchbox-focus-background: #{$moon-900} !important;
- --docsearch-hit-color: #{$moon-200} !important;
- --docsearch-hit-background: #{$moon-800} !important;
- --docsearch-hit-active-background: #{$teal-400} !important;
- --docsearch-footer-background: #{$moon-800} !important;
- --docsearch-logo-color: #{$teal-400} !important;
- --docsearch-key-gradient: linear-gradient(-26.5deg, #{$moon-800}, #{$moon-750}) !important;
- --docsearch-key-shadow: inset 0 -2px 0 0 #{$moon-700} !important;
- --docsearch-searchbox-shadow: inset 0 0 0 2px #{$teal-400} !important;
- }
-
- .DocSearch-Hit-source {
- color: $text-secondary !important;
- font-size: 14px !important;
- }
-
- .DocSearch-Hit-title {
- font-size: 1rem !important;
- }
-
- // Dark mode styles
- [data-bs-theme=dark] & {
-
- .DocSearch-Modal {
- box-shadow: inset 1px 1px 0 0 hsla(0, 0%, 18%, 0.5), 0 3px 8px 0 $moon-900;
- }
-
- .DocSearch-Hit {
- > a {
- border: 1px solid $dark-border-default !important;
- }
- }
-
- .DocSearch-Hit-source {
- color: $dark-text-secondary !important;
- font-size: 14px !important;
- }
-
- .DocSearch-Hit-title {
- font-size: 1rem !important;
- }
- }
-}
-
-@media (min-width: $breakpoint-lg) {
- .DocSearch {
-
- .DocSearch-Modal {
- border-radius: $border-radius-large !important;
- }
- }
-}
diff --git a/blog.mdx b/blog.mdx
new file mode 100644
index 0000000000..a9fc4170fa
--- /dev/null
+++ b/blog.mdx
@@ -0,0 +1,4 @@
+---
+title: "W&B Tutorials & Blog"
+url: "https://wandb.ai/fully-connected"
+---
\ No newline at end of file
diff --git a/content/en/_includes/_index.md b/content/en/_includes/_index.md
deleted file mode 100644
index f26bedc3a6..0000000000
--- a/content/en/_includes/_index.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-headless: true
-cascade:
- headless: true
----
\ No newline at end of file
diff --git a/content/en/_includes/enterprise-cloud-only.md b/content/en/_includes/enterprise-cloud-only.md
deleted file mode 100644
index 79dfef4358..0000000000
--- a/content/en/_includes/enterprise-cloud-only.md
+++ /dev/null
@@ -1,2 +0,0 @@
-This feature requires a [Pro or Enterprise plan](https://wandb.ai/site/pricing/).
-
diff --git a/content/en/_includes/enterprise-only.md b/content/en/_includes/enterprise-only.md
deleted file mode 100644
index f9f25d8b80..0000000000
--- a/content/en/_includes/enterprise-only.md
+++ /dev/null
@@ -1,2 +0,0 @@
-This feature is available for all [Enterprise](https://wandb.ai/site/pricing/) licenses.
-
diff --git a/content/en/_includes/metric-naming-examples.md b/content/en/_includes/metric-naming-examples.md
deleted file mode 100644
index 35c37f22d4..0000000000
--- a/content/en/_includes/metric-naming-examples.md
+++ /dev/null
@@ -1,15 +0,0 @@
-**Valid metric names:**
-```python
-with wandb.init() as run:
- run.log({"accuracy": 0.9, "val_loss": 0.1, "epoch_5": 5})
- run.log({"modelAccuracy": 0.95, "learning_rate": 0.001})
-```
-
-**Invalid metric names (avoid these):**
-```python
-with wandb.init() as run:
- run.log({"acc,val": 0.9}) # Contains comma
- run.log({"loss-train": 0.1}) # Contains hyphen
- run.log({"test acc": 0.95}) # Contains space
- run.log({"5_fold_cv": 0.8}) # Starts with number
-```
diff --git a/content/en/_includes/metric-naming-rules.md b/content/en/_includes/metric-naming-rules.md
deleted file mode 100644
index 1ea9c267f2..0000000000
--- a/content/en/_includes/metric-naming-rules.md
+++ /dev/null
@@ -1,3 +0,0 @@
-* **Allowed characters**: Letters (A-Z, a-z), digits (0-9), and underscores (_)
-* **Starting character**: Names must start with a letter or underscore
-* **Pattern**: Metric names should match `/^[_a-zA-Z][_a-zA-Z0-9]*$/`
\ No newline at end of file
diff --git a/content/en/_includes/project-visibility-settings.md b/content/en/_includes/project-visibility-settings.md
deleted file mode 100644
index 1fdea11bce..0000000000
--- a/content/en/_includes/project-visibility-settings.md
+++ /dev/null
@@ -1,15 +0,0 @@
-1. In the W&B App, from any page in the project, click **Overview** in the left navigation.
-1. At the top right, click **Edit**.
-1. Choose a new value for **Project visibility**:
-
- - **Team** (default): Only your team can view and edit the project.
- - **Restricted**: Only invited members can access the project, and public access is turned off.
- - **Open**: Anyone can submit runs or create reports, but only your team can edit it. Appropriate only for classroom settings, public benchmark competitions, or other non-durable contexts.
- - **Public**: Anyone can view the project, but only your team can edit it.
-
- {{% alert %}}
- If your W&B admins have turned off **Public** visibility, you cannot choose it. Instead, you can share a view-only [W&B Report]({{< relref "/guides/core/reports/collaborate-on-reports.md#share-a-report" >}}), or contact your W&B organization's admins for assistance.
- {{% /alert %}}
-1. Click **Save**.
-
-If you update a project to a more strict privacy setting, you may need to re-invite individual users to restore their ability to access the project.
\ No newline at end of file
diff --git a/content/en/_includes/public-api-use.md b/content/en/_includes/public-api-use.md
deleted file mode 100644
index ca360bef77..0000000000
--- a/content/en/_includes/public-api-use.md
+++ /dev/null
@@ -1 +0,0 @@
-> Training and fine-tuning models is done elsewhere in [the W&B Python SDK]({{< relref "/ref/python" >}}). Use the Public API for querying and managing data *after* it has been logged to W&B.
diff --git a/content/en/_includes/release-notes-support-eol-reminder.md b/content/en/_includes/release-notes-support-eol-reminder.md
deleted file mode 100644
index 4330765d5a..0000000000
--- a/content/en/_includes/release-notes-support-eol-reminder.md
+++ /dev/null
@@ -1,3 +0,0 @@
-A W&B Server release is supported for 12 months from its initial release date. As a reminder, customers using [Self-managed](/guides/hosting/hosting-options/self-managed/) are responsible to upgrade to a [supported release](/ref/releases-notes/) in time to maintain support.
-
-Refer to [Release policies and processes](/ref/release-notes/release-policies/). For assistance or questions, contact [support](mailto:support@wandb.com).
\ No newline at end of file
diff --git a/content/en/_includes/service-account-benefits.md b/content/en/_includes/service-account-benefits.md
deleted file mode 100644
index cb0bcf0544..0000000000
--- a/content/en/_includes/service-account-benefits.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Key benefits of service accounts:
-- **No license consumption**: Service accounts do not consume user seats or licenses
-- **Dedicated API keys**: Secure credentials for automated workflows
-- **User attribution**: Optionally attribute automated runs to human users
-- **Enterprise-ready**: Built for production automation at scale
-- **Delegated operations**: Service accounts operate on behalf of the user or organization that creates them
\ No newline at end of file
diff --git a/content/en/_includes/unsupported_server_version.md b/content/en/_includes/unsupported_server_version.md
deleted file mode 100644
index 95c709f1a5..0000000000
--- a/content/en/_includes/unsupported_server_version.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This release is no longer supported. A major release and its patches are supported for 12 months from the initial release date.
-
-Customers using [Self-managed](/guides/hosting/hosting-options/self-managed/) are responsible to upgrade to a [supported release](/ref/releases-notes/) in time to maintain support. For assistance or questions, contact [support](mailto:support@wandb.com).
\ No newline at end of file
diff --git a/content/en/_index.md b/content/en/_index.md
deleted file mode 100644
index a303b77bb4..0000000000
--- a/content/en/_index.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Weights & Biases Documentation
----
-
-
-
-{{< banner title="Weights & Biases Documentation" background="/images/support/support_banner.png" >}}
-Choose the product for which you need documentation.
-{{< /banner >}}
-
-
-{{< cardpane >}}
-{{% card %}}
-
-
-{{< img src="/icons/Name=Models, Mode=Dark.svg" width="60" height="60" >}}
-
-
W&B Models
-
-### Develop AI models
-
-Use [W&B Models]({{< relref "/guides/" >}}) to manage AI model development. Features include training, fine-tuning, reporting, automating hyperparameter sweeps, and utilizing the model registry for versioning and reproducibility.
-
-- [Introduction]({{< relref "/guides/" >}})
-- [Quickstart]({{< relref "/guides/quickstart/" >}})
-- [YouTube Tutorial](https://www.youtube.com/watch?v=tHAFujRhZLA)
-- [Online Course](https://wandb.ai/site/courses/101/)
-
-
{{% /card %}}
-
-{{% card %}}
-
-
-{{< img src="/icons/Name=Weave, Mode=Dark.svg" width="60" height="60" >}}
-
-
W&B Weave
-
-### Use AI models in your app
-
-Use [W&B Weave](https://weave-docs.wandb.ai/) to manage AI models in your code. Features include tracing, output evaluation, cost estimates, and a hosted inference service and playground for comparing different large language models (LLMs) and settings.
-
-- [Introduction](https://weave-docs.wandb.ai/)
-- [Quickstart](https://weave-docs.wandb.ai/quickstart)
-- [YouTube Demo](https://www.youtube.com/watch?v=IQcGGNLN3zo)
-- [Try the Playground](https://weave-docs.wandb.ai/guides/tools/playground/)
-- [Use Weave in your W&B runs]({{< relref "/guides/weave/set-up-weave" >}})
-
-
{{% /card %}}
-{{< /cardpane >}}
-
-
-
-
-{{< cardpane >}}
-{{% card %}}
-
-
-{{< img src="/icons/Name=Inference, Mode=Dark.svg" width="60" height="60" >}}
-
-
W&B Inference
-
-### Access foundation models
-
-Use [W&B Inference]({{< relref "/guides/inference/" >}}) to access leading open-source foundation models through an OpenAI-compatible API. Features include multiple model options, usage tracking, and integration with Weave for tracing and evaluation.
-
-- [Introduction]({{< relref "/guides/inference/" >}})
-- [Available Models]({{< relref "/guides/inference/models/" >}})
-- [API Reference]({{< relref "/guides/inference/api-reference/" >}})
-- [Try in Playground](https://wandb.ai/inference)
-
-
{{% /card %}}
-
-{{% card %}}
-
-
-{{< img src="/icons/Name=Training, Mode=Dark.svg" width="60" height="60" >}}
-
-
W&B Training
-
-### Post-train your models
-
-Now in public preview, use [W&B Training]({{< relref "/guides/training/" >}}) to post-train large language models using serverless reinforcement learning (RL). Features include fully managed GPU infrastructure, integration with ART and RULER, and automatic scaling for multi-turn agentic tasks.
-
-- [Introduction]({{< relref "/guides/training/" >}})
-- [Prerequisites]({{< relref "/guides/training/prerequisites/" >}})
-- [Serverless RL]({{< relref "/guides/training/serverless-rl/" >}})
-- [API Reference]({{< relref "/ref/training" >}})
-
-
{{% /card %}}
-{{< /cardpane >}}
-
-
-
-
-
-
-
diff --git a/content/en/guides/_index.md b/content/en/guides/_index.md
deleted file mode 100644
index 62ae807b51..0000000000
--- a/content/en/guides/_index.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-description: An overview of W&B and how to get started.
-menu:
- default:
- identifier: guides
- weight: 1
-type: docs
-cascade:
- type: docs
-title: Guides
-no_list: true
----
-
-## What is W&B?
-
-W&B is the AI developer platform, with tools for training models, fine-tuning models, and leveraging foundation models.
-
-{{< img src="/images/general/architecture.png" alt="W&B platform architecture diagram" >}}
-
-W&B consists of three major components: [Models]({{< relref "/guides/models.md" >}}), [Weave](https://wandb.github.io/weave/), and [Core]({{< relref "/guides/core/" >}}):
-
-**[W&B Models]({{< relref "/guides/models/" >}})** is a set of lightweight, interoperable tools for machine learning practitioners training and fine-tuning models.
-- [Experiments]({{< relref "/guides/models/track/" >}}): Machine learning experiment tracking
-- [Sweeps]({{< relref "/guides/models/sweeps/" >}}): Hyperparameter tuning and model optimization
-- [Registry]({{< relref "/guides/core/registry/" >}}): Publish and share your ML models and datasets
-
-**[W&B Weave]({{< relref "/guides/weave/" >}})** is a lightweight toolkit for tracking and evaluating LLM applications.
-
-**[W&B Core]({{< relref "/guides/core/" >}})** is set of powerful building blocks for tracking and visualizing data and models, and communicating results.
-- [Artifacts]({{< relref "/guides/core/artifacts/" >}}): Version assets and track lineage
-- [Tables]({{< relref "/guides/models/tables/" >}}): Visualize and query tabular data
-- [Reports]({{< relref "/guides/core/reports/" >}}): Document and collaborate on your discoveries
-
-**[W&B Inference]({{< relref "/guides/inference/" >}})** is a set of tools for accessing open-source foundation models through W&B Weave and an OpenAI-compatible API.
-
-**[W&B Training]({{< relref "/guides/training/" >}})** provides serverless reinforcement learning for post-training LLMs to improve reliability on multi-turn agentic tasks.
-
-{{% alert %}}
-Learn about recent releases in the [W&B release notes]({{< relref "/ref/release-notes/" >}}).
-{{% /alert %}}
-
-## How does W&B work?
-
-Read the following sections in this order if you are a first-time user of W&B and you are interested in training, tracking, and visualizing machine learning models and experiments:
-
-1. Learn about [runs]({{< relref "/guides/models/track/runs/" >}}), W&B's basic unit of computation.
-2. Create and track machine learning experiments with [Experiments]({{< relref "/guides/models/track/" >}}).
-3. Discover W&B's flexible and lightweight building block for dataset and model versioning with [Artifacts]({{< relref "/guides/core/artifacts/" >}}).
-4. Automate hyperparameter search and explore the space of possible models with [Sweeps]({{< relref "/guides/models/sweeps/" >}}).
-5. Manage the model lifecycle from training to production with [Registry]({{< relref "/guides/core/registry/" >}}).
-6. Visualize predictions across model versions with our [Data Visualization]({{< relref "/guides/models/tables/" >}}) guide.
-7. Organize runs, embed and automate visualizations, describe your findings, and share updates with collaborators with [Reports]({{< relref "/guides/core/reports/" >}}).
-
-VIDEO
-
-## Are you a first-time user of W&B?
-
-Try the [quickstart]({{< relref "/guides/quickstart/" >}}) to learn how to install W&B and how to add W&B to your code.
\ No newline at end of file
diff --git a/content/en/guides/core/_index.md b/content/en/guides/core/_index.md
deleted file mode 100644
index da95cd63f0..0000000000
--- a/content/en/guides/core/_index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-menu:
- default:
- identifier: core
-title: W&B Core
-weight: 70
-no_list: true
----
-
-W&B Core is the foundational framework supporting [W&B Models]({{< relref "/guides/models/" >}}) and [W&B Weave]({{< relref "/guides/weave/" >}}), and is itself supported by the [W&B Platform]({{< relref "/guides/hosting/" >}}).
-
-{{< img src="/images/general/core.png" alt="W&B Core framework diagram" >}}
-
-W&B Core provides capabilities across the entire ML lifecycle. With W&B Core, you can:
-
-- [Version and manage ML]({{< relref "/guides/core/artifacts/" >}}) pipelines with full lineage tracing for easy auditing and reproducibility.
-- Explore and evaluate data and metrics using [interactive, configurable visualizations]({{< relref "/guides/models/tables/" >}}).
-- [Document and share]({{< relref "/guides/core/reports/" >}}) insights across the entire organization by generating live reports in digestible, visual formats that are easily understood by non-technical stakeholders.
-- [Query and create visualizations of your data]({{< relref "/guides/models/app/features/panels/query-panels/" >}}) that serve your custom needs.
-- [Protect sensitive strings using secrets]({{< relref "/guides/core/secrets.md" >}}).
-- Configure automations that trigger key workflows for [model CI/CD]({{< relref "/guides/core/automations/" >}}).
diff --git a/content/en/guides/core/artifacts/_index.md b/content/en/guides/core/artifacts/_index.md
deleted file mode 100644
index d8ae8a76e1..0000000000
--- a/content/en/guides/core/artifacts/_index.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-description: Overview of W&B Artifacts, how they work, and how to get started using them.
-menu:
- default:
- identifier: artifacts
- parent: core
-title: Artifacts
-url: guides/artifacts
-cascade:
-- url: guides/artifacts/:filename
-weight: 1
----
-
-
-{{< cta-button productLink="https://wandb.ai/wandb/arttest/artifacts/model/iv3_trained/5334ab69740f9dda4fed/lineage" colabLink="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb-artifacts/Artifact_fundamentals.ipynb" >}}
-
-Use W&B Artifacts to track and version data as the inputs and outputs of your [W&B Runs]({{< relref "/guides/models/track/runs/" >}}). For example, a model training run might take in a dataset as input and produce a trained model as output. You can log hyperparameters, metadata, and metrics to a run, and you can use an artifact to log, track, and version the dataset used to train the model as input and another artifact for the resulting model checkpoints as output.
-
-## Use cases
-You can use artifacts throughout your entire ML workflow as inputs and outputs of [runs]({{< relref "/guides/models/track/runs/" >}}). You can use datasets, models, or even other artifacts as inputs for processing.
-
-{{< img src="/images/artifacts/artifacts_landing_page2.png" >}}
-
-| Use Case | Input | Output |
-|------------------------|-----------------------------|------------------------------|
-| Model Training | Dataset (training and validation data) | Trained Model |
-| Dataset Pre-Processing | Dataset (raw data) | Dataset (pre-processed data) |
-| Model Evaluation | Model + Dataset (test data) | [W&B Table]({{< relref "/guides/models/tables/" >}}) |
-| Model Optimization | Model | Optimized Model |
-
-
-{{% alert %}}
-The proceeding code snippets are meant to be run in order.
-{{% /alert %}}
-
-## Create an artifact
-
-Create an artifact with four lines of code:
-1. Create a [W&B run]({{< relref "/guides/models/track/runs/" >}}).
-2. Create an artifact object with the [`wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md" >}}) API.
-3. Add one or more files, such as a model file or dataset, to your artifact object.
-4. Log your artifact to W&B.
-
-For example, the proceeding code snippet shows how to log a file called `dataset.h5` to an artifact called `example_artifact`:
-
-```python
-import wandb
-
-run = wandb.init(project="artifacts-example", job_type="add-dataset")
-artifact = wandb.Artifact(name="example_artifact", type="dataset")
-artifact.add_file(local_path="./dataset.h5", name="training_dataset")
-artifact.save()
-
-# Logs the artifact version "my_data" as a dataset with data from dataset.h5
-```
-
-- The `type` of the artifact affects how it appears in the W&B platform. If you do not specify a `type`, it defaults to `unspecified`.
-- Each label of the dropdown represents a different `type` parameter value. In the above code snippet, the artifact's `type` is `dataset`.
-
-{{% alert %}}
-See the [track external files]({{< relref "./track-external-files.md" >}}) page for information on how to add references to files or directories stored in external object storage, like an Amazon S3 bucket.
-{{% /alert %}}
-
-## Download an artifact
-Indicate the artifact you want to mark as input to your run with the [`use_artifact`]({{< relref "/ref/python/experiments/run.md#use_artifact" >}}) method.
-
-Following the preceding code snippet, this next code block shows how to use the `training_dataset` artifact:
-
-```python
-artifact = run.use_artifact(
- "training_dataset:latest"
-) # returns a run object using the "my_data" artifact
-```
-This returns an artifact object.
-
-Next, use the returned object to download all contents of the artifact:
-
-```python
-datadir = (
- artifact.download()
-) # downloads the full `my_data` artifact to the default directory.
-```
-
-{{% alert %}}
-You can pass a custom path into the `root` [parameter]({{< relref "/ref/python/experiments/artifact.md" >}}) to download an artifact to a specific directory. For alternate ways to download artifacts and to see additional parameters, see the guide on [downloading and using artifacts]({{< relref "./download-and-use-an-artifact.md" >}}).
-{{% /alert %}}
-
-
-## Next steps
-* Learn how to [version]({{< relref "./create-a-new-artifact-version.md" >}}) and [update]({{< relref "./update-an-artifact.md" >}}) artifacts.
-* Learn how to trigger downstream workflows or notify a Slack channel in response to changes to your artifacts with [automations]({{< relref "/guides/core/automations/" >}}).
-* Learn about the [registry]({{< relref "/guides/core/registry/" >}}), a space that houses trained models.
-* Explore the [Python SDK]({{< relref "/ref/python/experiments/artifact.md" >}}) and [CLI]({{< relref "/ref/cli/wandb-artifact/" >}}) reference guides.
diff --git a/content/en/guides/core/artifacts/artifacts-walkthrough.md b/content/en/guides/core/artifacts/artifacts-walkthrough.md
deleted file mode 100644
index dbee141b1a..0000000000
--- a/content/en/guides/core/artifacts/artifacts-walkthrough.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-description: >-
- Artifacts quickstart shows how to create, track, and use a dataset artifact
- with W&B.
-displayed_sidebar: default
-title: "Tutorial: Create, track, and use a dataset artifact"
----
-This walkthrough demonstrates how to create, track, and use a dataset artifact from [W&B Runs]({{< relref "/guides/models/track/runs/" >}}).
-
-## 1. Log into W&B
-
-Import the W&B library and log in to W&B. You will need to sign up for a free W&B account if you have not done so already.
-
-```python
-import wandb
-
-wandb.login()
-```
-
-## 2. Initialize a run
-
-Use the [`wandb.init()`]({{< relref "/ref/python/functions/init.md" >}}) API to generate a background process to sync and log data as a W&B Run. Provide a project name and a job type:
-
-```python
-# Create a W&B Run. Here we specify 'dataset' as the job type since this example
-# shows how to create a dataset artifact.
-run = wandb.init(project="artifacts-example", job_type="upload-dataset")
-```
-
-## 3. Create an artifact object
-
-Create an artifact object with the [`wandb.Artifact()`]({{< relref "/ref/python/experiments/artifact.md" >}}) API. Provide a name for the artifact and a description of the file type for the `name` and `type` parameters, respectively.
-
-For example, the following code snippet demonstrates how to create an artifact called `‘bicycle-dataset’` with a `‘dataset’` label:
-
-```python
-artifact = wandb.Artifact(name="bicycle-dataset", type="dataset")
-```
-
-For more information about how to construct an artifact, see [Construct artifacts]({{< relref "./construct-an-artifact.md" >}}).
-
-## Add the dataset to the artifact
-
-Add a file to the artifact. Common file types include models and datasets. The following example adds a dataset named `dataset.h5` that is saved locally on our machine to the artifact:
-
-```python
-# Add a file to the artifact's contents
-artifact.add_file(local_path="dataset.h5")
-```
-
-Replace the filename `dataset.h5` in the preceding code snippet with the path to the file you want to add to the artifact.
-
-## 4. Log the dataset
-
-Use the W&B run objects `log_artifact()` method to both save your artifact version and declare the artifact as an output of the run.
-
-```python
-# Save the artifact version to W&B and mark it
-# as the output of this run
-run.log_artifact(artifact)
-```
-
-A `'latest'` alias is created by default when you log an artifact. For more information about artifact aliases and versions, see [Create a custom alias]({{< relref "./create-a-custom-alias.md" >}}) and [Create new artifact versions]({{< relref "./create-a-new-artifact-version.md" >}}), respectively.
-
-## 5. Download and use the artifact
-
-The following code example demonstrates the steps you can take to use an artifact you have logged and saved to the W&B servers.
-
-1. First, initialize a new run object with **`wandb.init()`.**
-2. Second, use the run objects [`use_artifact()`]({{< relref "/ref/python/experiments/run.md#use_artifact" >}}) method to tell W&B what artifact to use. This returns an artifact object.
-3. Third, use the artifacts [`download()`]({{< relref "/ref/python/experiments/artifact.md#download" >}}) method to download the contents of the artifact.
-
-```python
-# Create a W&B Run. Here we specify 'training' for 'type'
-# because we will use this run to track training.
-run = wandb.init(project="artifacts-example", job_type="training")
-
-# Query W&B for an artifact and mark it as input to this run
-artifact = run.use_artifact("bicycle-dataset:latest")
-
-# Download the artifact's contents
-artifact_dir = artifact.download()
-```
-
-Alternatively, you can use the Public API (`wandb.Api`) to export (or update data) data already saved in a W&B outside of a Run. See [Track external files]({{< relref "./track-external-files.md" >}}) for more information.
diff --git a/content/en/guides/core/artifacts/construct-an-artifact.md b/content/en/guides/core/artifacts/construct-an-artifact.md
deleted file mode 100644
index 57430a7c73..0000000000
--- a/content/en/guides/core/artifacts/construct-an-artifact.md
+++ /dev/null
@@ -1,258 +0,0 @@
----
-description: Create, construct a W&B Artifact. Learn how to add one or more files
- or a URI reference to an Artifact.
-menu:
- default:
- identifier: construct-an-artifact
- parent: artifacts
-title: Create an artifact
-weight: 2
----
-
-Use the W&B Python SDK to construct artifacts from [W&B Runs]({{< relref "/ref/python/experiments/run.md" >}}). You can add [files, directories, URIs, and files from parallel runs to artifacts]({{< relref "#add-files-to-an-artifact" >}}). After you add a file to an artifact, save the artifact to the W&B Server or [your own private server]({{< relref "/guides/hosting/hosting-options/self-managed.md" >}}).
-
-For information on how to track external files, such as files stored in Amazon S3, see the [Track external files]({{< relref "./track-external-files.md" >}}) page.
-
-## How to construct an artifact
-
-Construct a [W&B Artifact]({{< relref "/ref/python/experiments/artifact.md" >}}) in three steps:
-
-### 1. Create an artifact Python object with `wandb.Artifact()`
-
-Initialize the [`wandb.Artifact()`]({{< relref "/ref/python/experiments/artifact.md" >}}) class to create an artifact object. Specify the following parameters:
-
-* **Name**: Specify a name for your artifact. The name should be unique, descriptive, and easy to remember. Use an artifacts name to both: identify the artifact in the W&B App UI and when you want to use that artifact.
-* **Type**: Provide a type. The type should be simple, descriptive and correspond to a single step of your machine learning pipeline. Common artifact types include `'dataset'` or `'model'`.
-
-
-{{% alert %}}
-The "name" and "type" you provide is used to create a directed acyclic graph. This means you can view the lineage of an artifact on the W&B App.
-
-See the [Explore and traverse artifact graphs]({{< relref "./explore-and-traverse-an-artifact-graph.md" >}}) for more information.
-{{% /alert %}}
-
-
-{{% alert color="secondary" %}}
-Artifacts can not have the same name, even if you specify a different type for the types parameter. In other words, you can not create an artifact named `cats` of type `dataset` and another artifact with the same name of type `model`.
-{{% /alert %}}
-
-You can optionally provide a description and metadata when you initialize an artifact object. For more information on available attributes and parameters, see the [`wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md" >}}) Class definition in the Python SDK Reference Guide.
-
-The proceeding example demonstrates how to create a dataset artifact:
-
-```python
-import wandb
-
-artifact = wandb.Artifact(name="", type="")
-```
-
-Replace the string arguments in the preceding code snippet with your own name and type.
-
-### 2. Add one more files to the artifact
-
-Add files, directories, external URI references (such as Amazon S3) and more with artifact methods. For example, to add a single text file, use the [`add_file`]({{< relref "/ref/python/experiments/artifact.md#add_file" >}}) method:
-
-```python
-artifact.add_file(local_path="hello_world.txt", name="optional-name")
-```
-
-You can also add multiple files with the [`add_dir`]({{< relref "/ref/python/experiments/artifact.md#add_dir" >}}) method. To add files, see [Update an artifact]({{< relref "./update-an-artifact.md" >}}).
-
-### 3. Save your artifact to the W&B server
-
-Finally, save your artifact to the W&B server. Artifacts are associated with a run. Therefore, use a run objects [`log_artifact()`]({{< relref "/ref/python/experiments/run.md#log_artifact" >}}) method to save the artifact.
-
-```python
-# Create a W&B Run. Replace 'job-type'.
-run = wandb.init(project="artifacts-example", job_type="job-type")
-
-run.log_artifact(artifact)
-```
-
-{{% alert title="When to use Artifact.save() or wandb.Run.log_artifact()" %}}
-- Use `Artifact.save()` to update an existing artifact without creating a new run.
-- Use `wandb.Run.log_artifact()` to create a new artifact and associate it with a specific run.
-{{% /alert %}}
-
-{{% alert color="secondary" %}}
-Calls to `log_artifact` are performed asynchronously for performant uploads. This can cause surprising behavior when logging artifacts in a loop. For example:
-
-```python
-for i in range(10):
- a = wandb.Artifact(
- "race",
- type="dataset",
- metadata={
- "index": i,
- },
- )
- # ... add files to artifact a ...
- run.log_artifact(a)
-```
-
-The artifact version **v0** is NOT guaranteed to have an index of 0 in its metadata, as the artifacts may be logged in an arbitrary order.
-{{% /alert %}}
-
-## Add files to an artifact
-
-The following sections demonstrate how to construct artifacts with different file types and from parallel runs.
-
-For the following examples, assume you have a project directory with multiple files and a directory structure:
-
-```
-project-directory
-|-- images
-| |-- cat.png
-| +-- dog.png
-|-- checkpoints
-| +-- model.h5
-+-- model.h5
-```
-
-### Add a single file
-
-The proceeding code snippet demonstrates how to add a single, local file to your artifact:
-
-```python
-# Add a single file
-artifact.add_file(local_path="path/file.format")
-```
-
-For example, suppose you had a file called `'file.txt'` in your working local directory.
-
-```python
-artifact.add_file("path/file.txt") # Added as `file.txt'
-```
-
-The artifact now has the following content:
-
-```
-file.txt
-```
-
-Optionally, pass the desired path within the artifact for the `name` parameter.
-
-```python
-artifact.add_file(local_path="path/file.format", name="new/path/file.format")
-```
-
-The artifact is stored as:
-
-```
-new/path/file.txt
-```
-
-| API Call | Resulting artifact |
-| --------------------------------------------------------- | ------------------ |
-| `artifact.add_file('model.h5')` | model.h5 |
-| `artifact.add_file('checkpoints/model.h5')` | model.h5 |
-| `artifact.add_file('model.h5', name='models/mymodel.h5')` | models/mymodel.h5 |
-
-### Add multiple files
-
-The proceeding code snippet demonstrates how to add an entire, local directory to your artifact:
-
-```python
-# Recursively add a directory
-artifact.add_dir(local_path="path/file.format", name="optional-prefix")
-```
-
-The proceeding API calls produce the proceeding artifact content:
-
-| API Call | Resulting artifact |
-| ------------------------------------------- | ------------------------------------------------------ |
-| `artifact.add_dir('images')` | cat.png
dog.png
|
-| `artifact.add_dir('images', name='images')` | images/cat.png
images/dog.png
|
-| `artifact.new_file('hello.txt')` | `hello.txt` |
-
-### Add a URI reference
-
-Artifacts track checksums and other information for reproducibility if the URI has a scheme that W&B library knows how to handle.
-
-Add an external URI reference to an artifact with the [`add_reference`]({{< relref "/ref/python/experiments/artifact.md#add_reference" >}}) method. Replace the `'uri'` string with your own URI. Optionally pass the desired path within the artifact for the name parameter.
-
-```python
-# Add a URI reference
-artifact.add_reference(uri="uri", name="optional-name")
-```
-
-Artifacts currently support the following URI schemes:
-
-* `http(s)://`: A path to a file accessible over HTTP. The artifact will track checksums in the form of etags and size metadata if the HTTP server supports the `ETag` and `Content-Length` response headers.
-* `s3://`: A path to an object or object prefix in S3. The artifact will track checksums and versioning information (if the bucket has object versioning enabled) for the referenced objects. Object prefixes are expanded to include the objects under the prefix, up to a maximum of 10,000 objects.
-* `gs://`: A path to an object or object prefix in GCS. The artifact will track checksums and versioning information (if the bucket has object versioning enabled) for the referenced objects. Object prefixes are expanded to include the objects under the prefix, up to a maximum of 10,000 objects.
-
-The proceeding API calls will produce the proceeding artifacts:
-
-| API call | Resulting artifact contents |
-| ----------------------------------------------------------------------------- | -------------------------------------------------------------------- |
-| `artifact.add_reference('s3://my-bucket/model.h5')` | `model.h5` |
-| `artifact.add_reference('s3://my-bucket/checkpoints/model.h5')` | `model.h5` |
-| `artifact.add_reference('s3://my-bucket/model.h5', name='models/mymodel.h5')` | `models/mymodel.h5` |
-| `artifact.add_reference('s3://my-bucket/images')` | cat.png
dog.png
|
-| `artifact.add_reference('s3://my-bucket/images', name='images')` | images/cat.png
images/dog.png
|
-
-### Add files to artifacts from parallel runs
-
-For large datasets or distributed training, multiple parallel runs might need to contribute to a single artifact.
-
-```python
-import wandb
-import time
-
-# We will use ray to launch our runs in parallel
-# for demonstration purposes. You can orchestrate
-# your parallel runs however you want.
-import ray
-
-ray.init()
-
-artifact_type = "dataset"
-artifact_name = "parallel-artifact"
-table_name = "distributed_table"
-parts_path = "parts"
-num_parallel = 5
-
-# Each batch of parallel writers should have its own
-# unique group name.
-group_name = "writer-group-{}".format(round(time.time()))
-
-
-@ray.remote
-def train(i):
- """
- Our writer job. Each writer will add one image to the artifact.
- """
- with wandb.init(group=group_name) as run:
- artifact = wandb.Artifact(name=artifact_name, type=artifact_type)
-
- # Add data to a wandb table. In this case we use example data
- table = wandb.Table(columns=["a", "b", "c"], data=[[i, i * 2, 2**i]])
-
- # Add the table to folder in the artifact
- artifact.add(table, "{}/table_{}".format(parts_path, i))
-
- # Upserting the artifact creates or appends data to the artifact
- run.upsert_artifact(artifact)
-
-
-# Launch your runs in parallel
-result_ids = [train.remote(i) for i in range(num_parallel)]
-
-# Join on all the writers to make sure their files have
-# been added before finishing the artifact.
-ray.get(result_ids)
-
-# Once all the writers are finished, finish the artifact
-# to mark it ready.
-with wandb.init(group=group_name) as run:
- artifact = wandb.Artifact(artifact_name, type=artifact_type)
-
- # Create a "PartitionTable" pointing to the folder of tables
- # and add it to the artifact.
- artifact.add(wandb.data_types.PartitionedTable(parts_path), table_name)
-
- # Finish artifact finalizes the artifact, disallowing future "upserts"
- # to this version.
- run.finish_artifact(artifact)
-```
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/create-a-custom-alias.md b/content/en/guides/core/artifacts/create-a-custom-alias.md
deleted file mode 100644
index b6c0fcf20e..0000000000
--- a/content/en/guides/core/artifacts/create-a-custom-alias.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-description: Create custom aliases for W&B Artifacts.
-menu:
- default:
- identifier: create-a-custom-alias
- parent: artifacts
-title: Create an artifact alias
-weight: 5
----
-
-Use aliases as pointers to specific versions. By default, `Run.log_artifact` adds the `latest` alias to the logged version.
-
-An artifact version `v0` is created and attached to your artifact when you log an artifact for the first time. W&B checksums the contents when you log again to the same artifact. If the artifact changed, W&B saves a new version `v1`.
-
-For example, if you want your training script to pull the most recent version of a dataset, specify `latest` when you use that artifact. The proceeding code example demonstrates how to download a recent dataset artifact named `bike-dataset` that has an alias, `latest`:
-
-```python
-import wandb
-
-run = wandb.init(project="")
-
-artifact = run.use_artifact("bike-dataset:latest")
-
-artifact.download()
-```
-
-You can also apply a custom alias to an artifact version. For example, if you want to mark that model checkpoint is the best on the metric AP-50, you could add the string `'best-ap50'` as an alias when you log the model artifact.
-
-```python
-artifact = wandb.Artifact("run-3nq3ctyy-bike-model", type="model")
-artifact.add_file("model.h5")
-run.log_artifact(artifact, aliases=["latest", "best-ap50"])
-```
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/create-a-new-artifact-version.md b/content/en/guides/core/artifacts/create-a-new-artifact-version.md
deleted file mode 100644
index 07d64c2b8e..0000000000
--- a/content/en/guides/core/artifacts/create-a-new-artifact-version.md
+++ /dev/null
@@ -1,270 +0,0 @@
----
-description: Create a new artifact version from a single run or from a distributed
- process.
-menu:
- default:
- identifier: create-a-new-artifact-version
- parent: artifacts
-title: Create an artifact version
-weight: 6
----
-
-Create a new artifact version with a single [run]({{< relref "/guides/models/track/runs/" >}}) or collaboratively with distributed runs. You can optionally create a new artifact version from a previous version known as an [incremental artifact]({{< relref "#create-a-new-artifact-version-from-an-existing-version" >}}).
-
-{{% alert %}}
-We recommend that you create an incremental artifact when you need to apply changes to a subset of files in an artifact, where the size of the original artifact is significantly larger.
-{{% /alert %}}
-
-## Create new artifact versions from scratch
-There are two ways to create a new artifact version: from a single run and from distributed runs. They are defined as follows:
-
-
-* **Single run**: A single run provides all the data for a new version. This is the most common case and is best suited when the run fully recreates the needed data. For example: outputting saved models or model predictions in a table for analysis.
-* **Distributed runs**: A set of runs collectively provides all the data for a new version. This is best suited for distributed jobs which have multiple runs generating data, often in parallel. For example: evaluating a model in a distributed manner, and outputting the predictions.
-
-
-W&B will create a new artifact and assign it a `v0` alias if you pass a name to the `wandb.Artifact` API that does not exist in your project. W&B checksums the contents when you log again to the same artifact. If the artifact changed, W&B saves a new version `v1`.
-
-W&B will retrieve an existing artifact if you pass a name and artifact type to the `wandb.Artifact` API that matches an existing artifact in your project. The retrieved artifact will have a version greater than 1.
-
-{{< img src="/images/artifacts/single_distributed_artifacts.png" alt="Artifact workflow comparison" >}}
-
-### Single run
-Log a new version of an Artifact with a single run that produces all the files in the artifact. This case occurs when a single run produces all the files in the artifact.
-
-Based on your use case, select one of the tabs below to create a new artifact version inside or outside of a run:
-
-{{< tabpane text=true >}}
- {{% tab header="Inside a run" %}}
-Create an artifact version within a W&B run:
-
-1. Create a run with `wandb.init`.
-2. Create a new artifact or retrieve an existing one with `wandb.Artifact`.
-3. Add files to the artifact with `.add_file`.
-4. Log the artifact to the run with `.log_artifact`.
-
-```python
-with wandb.init() as run:
- artifact = wandb.Artifact("artifact_name", "artifact_type")
-
- # Add Files and Assets to the artifact using
- # `.add`, `.add_file`, `.add_dir`, and `.add_reference`
- artifact.add_file("image1.png")
- run.log_artifact(artifact)
-```
- {{% /tab %}}
- {{% tab header="Outside of a run" %}}
-Create an artifact version outside of a W&B run:
-
-1. Create a new artifact or retrieve an existing one with `wanb.Artifact`.
-2. Add files to the artifact with `.add_file`.
-3. Save the artifact with `.save`.
-
-```python
-artifact = wandb.Artifact("artifact_name", "artifact_type")
-# Add Files and Assets to the artifact using
-# `.add`, `.add_file`, `.add_dir`, and `.add_reference`
-artifact.add_file("image1.png")
-artifact.save()
-```
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-
-### Distributed runs
-
-Allow a collection of runs to collaborate on a version before committing it. This is in contrast to single run mode described above where one run provides all the data for a new version.
-
-
-{{% alert %}}
-1. Each run in the collection needs to be aware of the same unique ID (called `distributed_id`) in order to collaborate on the same version. By default, if present, W&B uses the run's `group` as set by `wandb.init(group=GROUP)` as the `distributed_id`.
-2. There must be a final run that "commits" the version, permanently locking its state.
-3. Use `upsert_artifact` to add to the collaborative artifact and `finish_artifact` to finalize the commit.
-{{% /alert %}}
-
-Consider the following example. Different runs (labelled below as **Run 1**, **Run 2**, and **Run 3**) add a different image file to the same artifact with `upsert_artifact`.
-
-
-#### Run 1:
-
-```python
-with wandb.init() as run:
- artifact = wandb.Artifact("artifact_name", "artifact_type")
- # Add Files and Assets to the artifact using
- # `.add`, `.add_file`, `.add_dir`, and `.add_reference`
- artifact.add_file("image1.png")
- run.upsert_artifact(artifact, distributed_id="my_dist_artifact")
-```
-
-#### Run 2:
-
-```python
-with wandb.init() as run:
- artifact = wandb.Artifact("artifact_name", "artifact_type")
- # Add Files and Assets to the artifact using
- # `.add`, `.add_file`, `.add_dir`, and `.add_reference`
- artifact.add_file("image2.png")
- run.upsert_artifact(artifact, distributed_id="my_dist_artifact")
-```
-
-#### Run 3
-
-Must run after Run 1 and Run 2 complete. The Run that calls `finish_artifact` can include files in the artifact, but does not need to.
-
-```python
-with wandb.init() as run:
- artifact = wandb.Artifact("artifact_name", "artifact_type")
- # Add Files and Assets to the artifact
- # `.add`, `.add_file`, `.add_dir`, and `.add_reference`
- artifact.add_file("image3.png")
- run.finish_artifact(artifact, distributed_id="my_dist_artifact")
-```
-
-
-
-
-## Create a new artifact version from an existing version
-
-Add, modify, or remove a subset of files from a previous artifact version without the need to re-index the files that didn't change. Adding, modifying, or removing a subset of files from a previous artifact version creates a new artifact version known as an *incremental artifact*.
-
-{{< img src="/images/artifacts/incremental_artifacts.png" alt="Incremental artifact versioning" >}}
-
-Here are some scenarios for each type of incremental change you might encounter:
-
-- add: you periodically add a new subset of files to a dataset after collecting a new batch.
-- remove: you discovered several duplicate files and want to remove them from your artifact.
-- update: you corrected annotations for a subset of files and want to replace the old files with the correct ones.
-
-You could create an artifact from scratch to perform the same function as an incremental artifact. However, when you create an artifact from scratch, you will need to have all the contents of your artifact on your local disk. When making an incremental change, you can add, remove, or modify a single file without changing the files from a previous artifact version.
-
-
-{{% alert %}}
-You can create an incremental artifact within a single run or with a set of runs (distributed mode).
-{{% /alert %}}
-
-
-Follow the procedure below to incrementally change an artifact:
-
-1. Obtain the artifact version you want to perform an incremental change on:
-
-
-{{< tabpane text=true >}}
-{{% tab header="Inside a run" %}}
-
-```python
-saved_artifact = run.use_artifact("my_artifact:latest")
-```
-
-{{% /tab %}}
-{{% tab header="Outside of a run" %}}
-
-```python
-client = wandb.Api()
-saved_artifact = client.artifact("my_artifact:latest")
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-
-2. Create a draft with:
-
-```python
-draft_artifact = saved_artifact.new_draft()
-```
-
-3. Perform any incremental changes you want to see in the next version. You can either add, remove, or modify an existing entry.
-
-Select one of the tabs for an example on how to perform each of these changes:
-
-
-{{< tabpane text=true >}}
- {{% tab header="Add" %}}
-Add a file to an existing artifact version with the `add_file` method:
-
-```python
-draft_artifact.add_file("file_to_add.txt")
-```
-
-{{% alert %}}
-You can also add multiple files by adding a directory with the `add_dir` method.
-{{% /alert %}}
- {{% /tab %}}
- {{% tab header="Remove" %}}
-Remove a file from an existing artifact version with the `remove` method:
-
-```python
-draft_artifact.remove("file_to_remove.txt")
-```
-
-{{% alert %}}
-You can also remove multiple files with the `remove` method by passing in a directory path.
-{{% /alert %}}
- {{% /tab %}}
- {{% tab header="Modify" %}}
-Modify or replace contents by removing the old contents from the draft and adding the new contents back in:
-
-```python
-draft_artifact.remove("modified_file.txt")
-draft_artifact.add_file("modified_file.txt")
-```
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-
-4. Lastly, log or save your changes. The following tabs show you how to save your changes inside and outside of a W&B run. Select the tab that is appropriate for your use case:
-
-{{< tabpane text=true >}}
- {{% tab header="Inside a run" %}}
-```python
-run.log_artifact(draft_artifact)
-```
-
- {{% /tab %}}
- {{% tab header="Outside of a run" %}}
-```python
-draft_artifact.save()
-```
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-Putting it all together, the code examples above look like:
-
-{{< tabpane text=true >}}
- {{% tab header="Inside a run" %}}
-```python
-with wandb.init(job_type="modify dataset") as run:
- saved_artifact = run.use_artifact(
- "my_artifact:latest"
- ) # fetch artifact and input it into your run
- draft_artifact = saved_artifact.new_draft() # create a draft version
-
- # modify a subset of files in the draft version
- draft_artifact.add_file("file_to_add.txt")
- draft_artifact.remove("dir_to_remove/")
- run.log_artifact(
- draft_artifact
- ) # log your changes to create a new version and mark it as output to your run
-```
- {{% /tab %}}
- {{% tab header="Outside of a run" %}}
-```python
-client = wandb.Api()
-saved_artifact = client.artifact("my_artifact:latest") # load your artifact
-draft_artifact = saved_artifact.new_draft() # create a draft version
-
-# modify a subset of files in the draft version
-draft_artifact.remove("deleted_file.txt")
-draft_artifact.add_file("modified_file.txt")
-draft_artifact.save() # commit changes to the draft
-```
- {{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/artifacts/data-privacy-and-compliance.md b/content/en/guides/core/artifacts/data-privacy-and-compliance.md
deleted file mode 100644
index f63d2ed840..0000000000
--- a/content/en/guides/core/artifacts/data-privacy-and-compliance.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-description: Learn where W&B files are stored by default. Explore how to save, store
- sensitive information.
-menu:
- default:
- identifier: data-privacy-and-compliance
- parent: artifacts
-title: Artifact data privacy and compliance
----
-
-Files are uploaded to Google Cloud bucket managed by W&B when you log artifacts. The contents of the bucket are encrypted both at rest and in transit. Artifact files are only visible to users who have access to the corresponding project.
-
-{{< img src="/images/artifacts/data_and_privacy_compliance_1.png" alt="GCS W&B Client Server diagram" >}}
-
-When you delete a version of an artifact, it is marked for soft deletion in our database and removed from your storage cost. When you delete an entire artifact, it is queued for permanently deletion and all of its contents are removed from the W&B bucket. If you have specific needs around file deletion please reach out to [Customer Support](mailto:support@wandb.com).
-
-For sensitive datasets that cannot reside in a multi-tenant environment, you can use either a private W&B server connected to your cloud bucket or _reference artifacts_. Reference artifacts track references to private buckets without sending file contents to W&B. Reference artifacts maintain links to files on your buckets or servers. In other words, W&B only keeps track of the metadata associated with the files and not the files themselves.
-
-{{< img src="/images/artifacts/data_and_privacy_compliance_2.png" alt="W&B Client Server Cloud diagram" >}}
-
-Create a reference artifact similar to how you create a non reference artifact:
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = wandb.Artifact("animals", type="dataset")
-artifact.add_reference("s3://my-bucket/animals")
-```
-
-For alternatives, contact us at [contact@wandb.com](mailto:contact@wandb.com) to talk about private cloud and on-premises installations.
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/download-and-use-an-artifact.md b/content/en/guides/core/artifacts/download-and-use-an-artifact.md
deleted file mode 100644
index aa61771a2e..0000000000
--- a/content/en/guides/core/artifacts/download-and-use-an-artifact.md
+++ /dev/null
@@ -1,133 +0,0 @@
----
-description: Download and use Artifacts from multiple projects.
-menu:
- default:
- identifier: download-and-use-an-artifact
- parent: artifacts
-title: Download and use artifacts
-weight: 3
----
-
-Download and use an artifact that is already stored on the W&B server or construct an artifact object and pass it in to for de-duplication as necessary.
-
-{{% alert %}}
-Team members with view-only seats cannot download artifacts.
-{{% /alert %}}
-
-
-### Download and use an artifact stored on W&B
-
-Download and use an artifact stored in W&B either inside or outside of a W&B Run. Use the Public API ([`wandb.Api`]({{< relref "/ref/python/public-api/api.md" >}})) to export (or update data) already saved in W&B. For more information, see the W&B [Public API Reference guide]({{< relref "/ref/python/public-api/index.md" >}}).
-
-{{< tabpane text=true >}}
- {{% tab header="During a run" %}}
-First, import the W&B Python SDK. Next, create a W&B [Run]({{< relref "/ref/python/experiments/run.md" >}}):
-
-```python
-import wandb
-
-run = wandb.init(project="", job_type="")
-```
-
-Indicate the artifact you want to use with the [`use_artifact`]({{< relref "/ref/python/experiments/run.md#use_artifact" >}}) method. This returns a run object. In the proceeding code snippet specifies an artifact called `'bike-dataset'` with the alias `'latest'`:
-
-```python
-artifact = run.use_artifact("bike-dataset:latest")
-```
-
-Use the object returned to download all the contents of the artifact:
-
-```python
-datadir = artifact.download()
-```
-
-You can optionally pass a path to the root parameter to download the contents of the artifact to a specific directory. For more information, see the [Python SDK Reference Guide]({{< relref "/ref/python/experiments/artifact.md#download" >}}).
-
-Use the [`get_path`]({{< relref "/ref/python/experiments/artifact.md#get_path" >}}) method to download only subset of files:
-
-```python
-path = artifact.get_path(name)
-```
-
-This fetches only the file at the path `name`. It returns an `Entry` object with the following methods:
-
-* `Entry.download`: Downloads file from the artifact at path `name`
-* `Entry.ref`: If `add_reference` stored the entry as a reference, returns the URI
-
-References that have schemes that W&B knows how to handle get downloaded just like artifact files. For more information, see [Track external files]({{< relref "/guides/core/artifacts/track-external-files.md" >}}).
- {{% /tab %}}
- {{% tab header="Outside of a run" %}}
-First, import the W&B SDK. Next, create an artifact from the Public API Class. Provide the entity, project, artifact, and alias associated with that artifact:
-
-```python
-import wandb
-
-api = wandb.Api()
-artifact = api.artifact("entity/project/artifact:alias")
-```
-
-Use the object returned to download the contents of the artifact:
-
-```python
-artifact.download()
-```
-
-You can optionally pass a path the `root` parameter to download the contents of the artifact to a specific directory. For more information, see the [API Reference Guide]({{< relref "/ref/python/experiments/artifact.md#download" >}}).
- {{% /tab %}}
- {{% tab header="W&B CLI" %}}
-Use the `wandb artifact get` command to download an artifact from the W&B server.
-
-```
-$ wandb artifact get project/artifact:alias --root mnist/
-```
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-### Partially download an artifact
-
-You can optionally download part of an artifact based on a prefix. Using the `path_prefix` parameter, you can download a single file or the content of a sub-folder.
-
-```python
-artifact = run.use_artifact("bike-dataset:latest")
-
-artifact.download(path_prefix="bike.png") # downloads only bike.png
-```
-
-Alternatively, you can download files from a certain directory:
-
-```python
-artifact.download(path_prefix="images/bikes/") # downloads files in the images/bikes directory
-```
-### Use an artifact from a different project
-
-Specify the name of artifact along with its project name to reference an artifact. You can also reference artifacts across entities by specifying the name of the artifact with its entity name.
-
-The following code example demonstrates how to query an artifact from another project as input to the current W&B run.
-
-```python
-import wandb
-
-run = wandb.init(project="", job_type="")
-# Query W&B for an artifact from another project and mark it
-# as an input to this run.
-artifact = run.use_artifact("my-project/artifact:alias")
-
-# Use an artifact from another entity and mark it as an input
-# to this run.
-artifact = run.use_artifact("my-entity/my-project/artifact:alias")
-```
-
-### Construct and use an artifact simultaneously
-
-Simultaneously construct and use an artifact. Create an artifact object and pass it to use_artifact. This creates an artifact in W&B if it does not exist yet. The [`use_artifact`]({{< relref "/ref/python/experiments/run.md#use_artifact" >}}) API is idempotent, so you can call it as many times as you like.
-
-```python
-import wandb
-
-artifact = wandb.Artifact("reference model")
-artifact.add_file("model.h5")
-run.use_artifact(artifact)
-```
-
-For more information about constructing an artifact, see [Construct an artifact]({{< relref "/guides/core/artifacts/construct-an-artifact.md" >}}).
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/explore-and-traverse-an-artifact-graph.md b/content/en/guides/core/artifacts/explore-and-traverse-an-artifact-graph.md
deleted file mode 100644
index 25a74a1360..0000000000
--- a/content/en/guides/core/artifacts/explore-and-traverse-an-artifact-graph.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-description: Traverse automatically created direct acyclic W&B Artifact graphs.
-menu:
- default:
- identifier: explore-and-traverse-an-artifact-graph
- parent: artifacts
-title: Explore artifact graphs
-weight: 9
----
-
-W&B automatically tracks the artifacts a given run logged as well as the artifacts a given run uses. These artifacts can include datasets, models, evaluation results, or more. You can explore an artifact's lineage to track and manage the various artifacts produced throughout the machine learning lifecycle.
-
-## Lineage
-Tracking an artifact's lineage has several key benefits:
-
-- Reproducibility: By tracking the lineage of all artifacts, teams can reproduce experiments, models, and results, which is essential for debugging, experimentation, and validating machine learning models.
-
-- Version Control: Artifact lineage involves versioning artifacts and tracking their changes over time. This allows teams to roll back to previous versions of data or models if needed.
-
-- Auditing: Having a detailed history of the artifacts and their transformations enables organizations to comply with regulatory and governance requirements.
-
-- Collaboration and Knowledge Sharing: Artifact lineage facilitates better collaboration among team members by providing a clear record of attempts as well as what worked, and what didn’t. This helps in avoiding duplication of efforts and accelerates the development process.
-
-### Finding an artifact's lineage
-When selecting an artifact in the **Artifacts** tab, you can see your artifact's lineage. This graph view shows a general overview of your pipeline.
-
-To view an artifact graph:
-
-1. Navigate to your project in the W&B App UI
-2. Choose the artifact icon on the left panel.
-3. Select **Lineage**.
-
-{{< img src="/images/artifacts/lineage1.gif" alt="Getting to the Lineage tab" >}}
-
-### Navigating the lineage graph
-
-The artifact or job type you provide appears in front of its name, with artifacts represented by blue icons and runs represented by green icons. Arrows detail the input and output of a run or artifact on the graph.
-
-{{< img src="/images/artifacts/lineage2.png" alt="Run and artifact nodes" >}}
-
-{{% alert %}}
-You can view the type and the name of artifact in both the left sidebar and in the **Lineage** tab.
-{{% /alert %}}
-
-{{< img src="/images/artifacts/lineage2a.gif" alt="Inputs and outputs" >}}
-
-For a more detailed view, click any individual artifact or run to get more information on a particular object.
-
-{{< img src="/images/artifacts/lineage3a.gif" alt="Previewing a run" >}}
-
-### Artifact clusters
-
-When a level of the graph has five or more runs or artifacts, it creates a cluster. A cluster has a search bar to find specific versions of runs or artifacts and pulls an individual node from a cluster to continue investigating the lineage of a node inside a cluster.
-
-Clicking on a node opens a preview with an overview of the node. Clicking on the arrow extracts the individual run or artifact so you can examine the lineage of the extracted node.
-
-{{< img src="/images/artifacts/lineage3b.gif" alt="Searching a run cluster" >}}
-
-## Use the API to track lineage
-You can also navigate a graph using the [W&B API]({{< relref "/ref/python/public-api/api.md" >}}).
-
-Create an artifact. First, create a run with `wandb.init`. Then,create a new artifact or retrieve an existing one with `wandb.Artifact`. Next, add files to the artifact with `.add_file`. Finally, log the artifact to the run with `.log_artifact`. The finished code looks something like this:
-
-```python
-with wandb.init() as run:
- artifact = wandb.Artifact("artifact_name", "artifact_type")
-
- # Add Files and Assets to the artifact using
- # `.add`, `.add_file`, `.add_dir`, and `.add_reference`
- artifact.add_file("image1.png")
- run.log_artifact(artifact)
-```
-
-Use the artifact object's [`logged_by`]({{< relref "/ref/python/experiments/artifact.md#logged_by" >}}) and [`used_by`]({{< relref "/ref/python/experiments/artifact.md#used_by" >}}) methods to walk the graph from the artifact:
-
-```python
-# Walk up and down the graph from an artifact:
-producer_run = artifact.logged_by()
-consumer_runs = artifact.used_by()
-```
-## Next steps
-- [Explore artifacts in more detail]({{< relref "/guides/core/artifacts/artifacts-walkthrough.md" >}})
-- [Manage artifact storage]({{< relref "/guides/core/artifacts/manage-data/delete-artifacts.md" >}})
-- [Explore an artifacts project](https://wandb.ai/wandb-smle/artifact_workflow/artifacts/raw_dataset/raw_data/v0/lineage)
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/manage-data/_index.md b/content/en/guides/core/artifacts/manage-data/_index.md
deleted file mode 100644
index e99dec6127..0000000000
--- a/content/en/guides/core/artifacts/manage-data/_index.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-menu:
- default:
- identifier: manage-data
- parent: artifacts
-title: Manage data
-weight: 8
-url: guides/artifacts/manage-data
----
-
diff --git a/content/en/guides/core/artifacts/manage-data/delete-artifacts.md b/content/en/guides/core/artifacts/manage-data/delete-artifacts.md
deleted file mode 100644
index 7b6fafac51..0000000000
--- a/content/en/guides/core/artifacts/manage-data/delete-artifacts.md
+++ /dev/null
@@ -1,194 +0,0 @@
----
-description: Delete artifacts interactively with the App UI or programmatically with
- the W&B SDK/
-menu:
- default:
- identifier: delete-artifacts
- parent: manage-data
-title: Delete an artifact
----
-
-Delete artifacts interactively with the App UI or programmatically with the W&B SDK. When you delete an artifact, W&B marks that artifact as a *soft-delete*. In other words, the artifact is marked for deletion but files are not immediately deleted from storage.
-
-The contents of the artifact remain as a soft-delete, or pending deletion state, until a regularly run garbage collection process reviews all artifacts marked for deletion. The garbage collection process deletes associated files from storage if the artifact and its associated files are not used by a previous or subsequent artifact versions.
-
-## Artifact garbage collection workflow
-
-The following diagram illustrates the complete artifact garbage collection process:
-
-```mermaid
-graph TB
- Start([Artifact Deletion Initiated]) --> DeleteMethod{Deletion Method}
-
- DeleteMethod -->|UI| UIDelete[Delete via W&B App UI]
- DeleteMethod -->|SDK| SDKDelete[Delete via W&B SDK]
- DeleteMethod -->|TTL| TTLDelete[TTL Policy Expires]
-
- UIDelete --> SoftDelete[Artifact Marked as 'Soft Delete']
- SDKDelete --> SoftDelete
- TTLDelete --> SoftDelete
-
- SoftDelete --> GCWait[(Wait for Garbage Collection Process)]
-
- GCWait --> GCRun[Garbage Collection Process Runs - Reviews all soft-deleted artifacts - Checks file dependencies]
-
- GCRun --> CheckUsage{Are files used by other artifact versions?}
-
- CheckUsage -->|Yes| KeepFiles[Files Kept in Storage - Artifact marked deleted - Files remain for other versions]
- CheckUsage -->|No| DeleteFiles[Files Deleted from Storage - Artifact fully removed - Storage space reclaimed]
-
- KeepFiles --> End([End])
- DeleteFiles --> End
-
- style Start fill:#e1f5fe,stroke:#333,stroke-width:2px,color:#000
- style SoftDelete fill:#fff3e0,stroke:#333,stroke-width:2px,color:#000
- style GCRun fill:#f3e5f5,stroke:#333,stroke-width:2px,color:#000
- style KeepFiles fill:#e8f5e9,stroke:#333,stroke-width:2px,color:#000
- style DeleteFiles fill:#ffebee,stroke:#333,stroke-width:2px,color:#000
- style End fill:#e0e0e0,stroke:#333,stroke-width:2px,color:#000
-```
-
-The sections in this page describe how to delete specific artifact versions, how to delete an artifact collection, how to delete artifacts with and without aliases, and more. You can schedule when artifacts are deleted from W&B with TTL policies. For more information, see [Manage data retention with Artifact TTL policy]({{< relref "./ttl.md" >}}).
-
-{{% alert %}}
-Artifacts that are scheduled for deletion with a TTL policy, deleted with the W&B SDK, or deleted with the W&B App UI are first soft-deleted. Artifacts that are soft deleted undergo garbage collection before they are hard-deleted.
-{{% /alert %}}
-
-{{% alert %}}
-Deleting an entity, project, or artifact collection will also trigger the artifact deletion process described on this page. When deleting a run, if you choose to delete associated artifacts, those artifacts will follow the same soft-delete and garbage collection workflow.
-{{% /alert %}}
-
-### Delete an artifact version
-
-To delete an artifact version:
-
-1. Select the name of the artifact. This will expand the artifact view and list all the artifact versions associated with that artifact.
-2. From the list of artifacts, select the artifact version you want to delete.
-3. On the right hand side of the workspace, select the kebab dropdown.
-4. Choose Delete.
-
-An artifact version can also be deleted programmatically via the [delete()]({{< relref "/ref/python/experiments/artifact.md#delete" >}}) method. See the examples below.
-
-### Delete multiple artifact versions with aliases
-
-The following code example demonstrates how to delete artifacts that have aliases associated with them. Provide the entity, project name, and run ID that created the artifacts.
-
-```python
-import wandb
-
-run = api.run("entity/project/run_id")
-
-for artifact in run.logged_artifacts():
- artifact.delete()
-```
-
-Set the `delete_aliases` parameter to the boolean value, `True` to delete aliases if the artifact has one or more aliases.
-
-```python
-import wandb
-
-run = api.run("entity/project/run_id")
-
-for artifact in run.logged_artifacts():
- # Set delete_aliases=True in order to delete
- # artifacts with one more aliases
- artifact.delete(delete_aliases=True)
-```
-
-### Delete multiple artifact versions with a specific alias
-
-The proceeding code demonstrates how to delete multiple artifact versions that have a specific alias. Provide the entity, project name, and run ID that created the artifacts. Replace the deletion logic with your own:
-
-```python
-import wandb
-
-runs = api.run("entity/project_name/run_id")
-
-# Delete artifact ith alias 'v3' and 'v4
-for artifact_version in runs.logged_artifacts():
- # Replace with your own deletion logic.
- if artifact_version.name[-2:] == "v3" or artifact_version.name[-2:] == "v4":
- artifact.delete(delete_aliases=True)
-```
-
-### Protected aliases and deletion permissions
-
-Artifacts with protected aliases have special deletion restrictions. [Protected aliases]({{< relref "/guides/core/registry/model_registry/access_controls.md" >}}) are aliases in the Model Registry that registry admins can set to prevent unauthorized deletion.
-
-{{% alert %}}
-**Important considerations for protected aliases:**
-- Artifacts with protected aliases cannot be deleted by non-registry admins
-- Within a registry, registry admins can unlink protected artifact versions and delete collections/registries that contain protected aliases
-- For source artifacts: if a source artifact is linked to a registry with a protected alias, it cannot be deleted by any user
-- Registry admins can remove the protected aliases from source artifacts and then delete them
-{{% /alert %}}
-
-### Delete all versions of an artifact that do not have an alias
-
-The following code snippet demonstrates how to delete all versions of an artifact that do not have an alias. Provide the name of the project and entity for the `project` and `entity` keys in `wandb.Api`, respectively. Replace the `<>` with the name of your artifact:
-
-```python
-import wandb
-
-# Provide your entity and a project name when you
-# use wandb.Api methods.
-api = wandb.Api(overrides={"project": "project", "entity": "entity"})
-
-artifact_type, artifact_name = "<>" # provide type and name
-for v in api.artifact_versions(artifact_type, artifact_name):
- # Clean up versions that don't have an alias such as 'latest'.
- # NOTE: You can put whatever deletion logic you want here.
- if len(v.aliases) == 0:
- v.delete()
-```
-
-### Delete an artifact collection
-
-To delete an artifact collection:
-
-1. Navigate to the artifact collection you want to delete and hover over it.
-3. Select the kebab dropdown next to the artifact collection name.
-4. Choose Delete.
-
-You can also delete artifact collection programmatically with the [delete()]({{< relref "/ref/python/experiments/artifact.md#delete" >}}) method. Provide the name of the project and entity for the `project` and `entity` keys in `wandb.Api`, respectively:
-
-```python
-import wandb
-
-# Provide your entity and a project name when you
-# use wandb.Api methods.
-api = wandb.Api(overrides={"project": "project", "entity": "entity"})
-collection = api.artifact_collection(
- "", "entity/project/artifact_collection_name"
-)
-collection.delete()
-```
-
-## How to enable garbage collection based on how W&B is hosted
-Garbage collection is enabled by default if you use W&B's shared cloud. Based on how you host W&B, you might need to take additional steps to enable garbage collection, this includes:
-
-
-* Set the `GORILLA_ARTIFACT_GC_ENABLED` environment variable to true: `GORILLA_ARTIFACT_GC_ENABLED=true`
-* Enable bucket versioning if you use [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html), [GCP](https://cloud.google.com/storage/docs/object-versioning) or any other storage provider such as [Minio](https://min.io/docs/minio/linux/administration/object-management/object-versioning.html#enable-bucket-versioning). If you use Azure, [enable soft deletion](https://learn.microsoft.com/azure/storage/blobs/soft-delete-blob-overview).
- {{% alert %}}
- Soft deletion in Azure is equivalent to bucket versioning in other storage providers.
- {{% /alert %}}
-
-The following table describes how to satisfy requirements to enable garbage collection based on your deployment type.
-
-The `X` indicates you must satisfy the requirement:
-
-| | Environment variable | Enable versioning |
-| -----------------------------------------------| ------------------------| ----------------- |
-| Shared cloud | | |
-| Shared cloud with [secure storage connector]({{< relref "/guides/hosting/data-security/secure-storage-connector.md" >}})| | X |
-| Dedicated cloud | | |
-| Dedicated cloud with [secure storage connector]({{< relref "/guides/hosting/data-security/secure-storage-connector.md" >}})| | X |
-| Customer-managed cloud | X | X |
-| Customer managed on-prem | X | X |
-
-
-
-{{% alert %}}note
-Secure storage connector is currently only available for Google Cloud Platform and Amazon Web Services.
-{{% /alert %}}
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/manage-data/storage.md b/content/en/guides/core/artifacts/manage-data/storage.md
deleted file mode 100644
index 91842e9183..0000000000
--- a/content/en/guides/core/artifacts/manage-data/storage.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-description: Manage storage, memory allocation of W&B Artifacts.
-menu:
- default:
- identifier: storage
- parent: manage-data
-title: Manage artifact storage and memory allocation
----
-
-W&B stores artifact files in a private Google Cloud Storage bucket located in the United States by default. All files are encrypted at rest and in transit.
-
-For sensitive files, we recommend you set up [Private Hosting]({{< relref "/guides/hosting/" >}}) or use [reference artifacts]({{< relref "../track-external-files.md" >}}).
-
-During training, W&B locally saves logs, artifacts, and configuration files in the following local directories:
-
-| File | Default location | To change default location set: |
-| ---- | ---------------- | ------------------------------- |
-| logs | `./wandb` | `dir` in `wandb.init` or set the `WANDB_DIR` environment variable |
-| artifacts | `~/.cache/wandb` | the `WANDB_CACHE_DIR` environment variable |
-| configs | `~/.config/wandb` | the `WANDB_CONFIG_DIR` environment variable |
-| staging artifacts for upload | `~/.cache/wandb-data/` | the `WANDB_DATA_DIR` environment variable |
-| downloaded artifacts | `./artifacts` | the `WANDB_ARTIFACT_DIR` environment variable |
-
-For a complete guide to using environment variables to configure W&B, see the [environment variables reference]({{< relref "/guides/models/track/environment-variables.md" >}}).
-
-{{% alert color="secondary" %}}
-Depending on the machine on `wandb` is initialized on, these default folders may not be located in a writeable part of the file system. This might trigger an error.
-{{% /alert %}}
-
-### Clean up local artifact cache
-
-W&B caches artifact files to speed up downloads across versions that share files in common. Over time this cache directory can become large. Run the [`wandb artifact cache cleanup`]({{< relref "/ref/cli/wandb-artifact/wandb-artifact-cache/" >}}) command to prune the cache and to remove any files that have not been used recently.
-
-The proceeding code snippet demonstrates how to limit the size of the cache to 1GB. Copy and paste the code snippet into your terminal:
-
-```bash
-$ wandb artifact cache cleanup 1GB
-```
diff --git a/content/en/guides/core/artifacts/manage-data/ttl.md b/content/en/guides/core/artifacts/manage-data/ttl.md
deleted file mode 100644
index b7751604fb..0000000000
--- a/content/en/guides/core/artifacts/manage-data/ttl.md
+++ /dev/null
@@ -1,238 +0,0 @@
----
-description: Time to live policies (TTL)
-menu:
- default:
- identifier: ttl
- parent: manage-data
-title: Manage artifact data retention
----
-
-
-{{< cta-button colabLink="https://colab.research.google.com/github/wandb/examples/blob/kas-artifacts-ttl-colab/colabs/wandb-artifacts/WandB_Artifacts_Time_to_live_TTL_Walkthrough.ipynb" >}}
-
-Schedule when artifacts are deleted from W&B with a W&B Artifact time-to-live (TTL) policy. When you delete an artifact, W&B marks that artifact as a *soft-delete*. In other words, the artifact is marked for deletion but files are not immediately deleted from storage. For more information on how W&B deletes artifacts, see the [Delete artifacts]({{< relref "./delete-artifacts.md" >}}) page.
-
-Watch a [Managing data retention with Artifacts TTL](https://www.youtube.com/watch?v=hQ9J6BoVmnc) video tutorial to learn how to manage data retention with Artifacts TTL in the W&B App.
-
-{{% alert %}}
-W&B deactivates the option to set a TTL policy for model artifacts linked to the Model Registry. This is to help ensure that linked models do not accidentally expire if used in production workflows.
-{{% /alert %}}
-{{% alert %}}
-* Only team admins can view a [team's settings]({{< relref "/guides/models/app/settings-page/teams.md" >}}) and access team level TTL settings such as (1) permitting who can set or edit a TTL policy or (2) setting a team default TTL.
-* If you do not see the option to set or edit a TTL policy in an artifact's details in the W&B App UI or if setting a TTL programmatically does not successfully change an artifact's TTL property, your team admin has not given you permissions to do so.
-{{% /alert %}}
-
-## Auto-generated Artifacts
-Only user-generated artifacts can use TTL policies. Artifacts auto-generated by W&B cannot have TTL policies set for them.
-
-The following Artifact types indicate an auto-generated Artifact:
-- `run_table`
-- `code`
-- `job`
-- Any Artifact type starting with: `wandb-*`
-
-You can check an Artifact's type on the [W&B platform]({{< relref "/guides/core/artifacts/explore-and-traverse-an-artifact-graph.md" >}}) or programmatically:
-
-```python
-import wandb
-
-run = wandb.init(project="")
-artifact = run.use_artifact(artifact_or_name="")
-print(artifact.type)
-```
-
-Replace the values enclosed with `<>` with your own.
-
-## Define who can edit and set TTL policies
-Define who can set and edit TTL policies within a team. You can either grant TTL permissions only to team admins, or you can grant both team admins and team members TTL permissions.
-
-{{% alert %}}
-Only team admins can define who can set or edit a TTL policy.
-{{% /alert %}}
-
-1. Navigate to your team’s profile page.
-2. Select the **Settings** tab.
-3. Navigate to the **Artifacts time-to-live (TTL) section**.
-4. From the **TTL permissions dropdown**, select who can set and edit TTL policies.
-5. Click on **Review and save settings**.
-6. Confirm the changes and select **Save settings**.
-
-{{< img src="/images/artifacts/define_who_sets_ttl.gif" alt="Setting TTL permissions" >}}
-
-## Create a TTL policy
-Set a TTL policy for an artifact either when you create the artifact or retroactively after the artifact is created.
-
-For all the code snippets below, replace the content wrapped in `<>` with your information to use the code snippet.
-
-### Set a TTL policy when you create an artifact
-Use the W&B Python SDK to define a TTL policy when you create an artifact. TTL policies are typically defined in days.
-
-{{% alert %}}
-Defining a TTL policy when you create an artifact is similar to how you normally [create an artifact]({{< relref "../construct-an-artifact.md" >}}). With the exception that you pass in a time delta to the artifact's `ttl` attribute.
-{{% /alert %}}
-
-The steps are as follows:
-
-1. [Create an artifact]({{< relref "../construct-an-artifact.md" >}}).
-2. [Add content to the artifact]({{< relref "../construct-an-artifact.md#add-files-to-an-artifact" >}}) such as files, a directory, or a reference.
-3. Define a TTL time limit with the [`datetime.timedelta`](https://docs.python.org/3/library/datetime.html) data type that is part of Python's standard library.
-4. [Log the artifact]({{< relref "../construct-an-artifact.md#3-save-your-artifact-to-the-wb-server" >}}).
-
-The following code snippet demonstrates how to create an artifact and set a TTL policy.
-
-```python
-import wandb
-from datetime import timedelta
-
-run = wandb.init(project="", entity="")
-artifact = wandb.Artifact(name="", type="")
-artifact.add_file("")
-
-artifact.ttl = timedelta(days=30) # Set TTL policy
-run.log_artifact(artifact)
-```
-
-The preceding code snippet sets the TTL policy for the artifact to 30 days. In other words, W&B deletes the artifact after 30 days.
-
-### Set or edit a TTL policy after you create an artifact
-Use the W&B App UI or the W&B Python SDK to define a TTL policy for an artifact that already exists.
-
-{{% alert %}}
-When you modify an artifact's TTL, the time the artifact takes to expire is still calculated using the artifact's `createdAt` timestamp.
-{{% /alert %}}
-
-{{< tabpane text=true >}}
- {{% tab header="Python SDK" %}}
-1. [Fetch your artifact]({{< relref "../download-and-use-an-artifact.md" >}}).
-2. Pass in a time delta to the artifact's `ttl` attribute.
-3. Update the artifact with the [`save`]({{< relref "/ref/python/experiments/run.md#save" >}}) method.
-
-
-The following code snippet shows how to set a TTL policy for an artifact:
-```python
-import wandb
-from datetime import timedelta
-
-artifact = run.use_artifact("")
-artifact.ttl = timedelta(days=365 * 2) # Delete in two years
-artifact.save()
-```
-
-The preceding code example sets the TTL policy to two years.
- {{% /tab %}}
- {{% tab header="W&B App" %}}
-1. Navigate to your W&B project in the W&B App UI.
-2. Select the artifact icon on the left panel.
-3. From the list of artifacts, expand the artifact type you
-4. Select on the artifact version you want to edit the TTL policy for.
-5. Click on the **Version** tab.
-6. From the dropdown, select **Edit TTL policy**.
-7. Within the modal that appears, select **Custom** from the TTL policy dropdown.
-8. Within the **TTL duration** field, set the TTL policy in units of days.
-9. Select the **Update TTL** button to save your changes.
-
-{{< img src="/images/artifacts/edit_ttl_ui.gif" alt="Editing TTL policy" >}}
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-### Set default TTL policies for a team
-
-{{% alert %}}
-Only team admins can set a default TTL policy for a team.
-{{% /alert %}}
-
-Set a default TTL policy for your team. Default TTL policies apply to all existing and future artifacts based on their respective creation dates. Artifacts with existing version-level TTL policies are not affected by the team's default TTL.
-
-1. Navigate to your team’s profile page.
-2. Select the **Settings** tab.
-3. Navigate to the **Artifacts time-to-live (TTL) section**.
-4. Click on the **Set team's default TTL policy**.
-5. Within the **Duration** field, set the TTL policy in units of days.
-6. Click on **Review and save settings**.
-7/ Confirm the changes and then select **Save settings**.
-
-{{< img src="/images/artifacts/set_default_ttl.gif" alt="Setting default TTL policy" >}}
-
-### Set a TTL policy outside of a run
-
-Use the public API to retrieve an artifact without fetching a run, and set the TTL policy. TTL policies are typically defined in days.
-
-The following code sample shows how to fetch an artifact using the public API and set the TTL policy.
-
-```python
-api = wandb.Api()
-
-artifact = api.artifact("entity/project/artifact:alias")
-
-artifact.ttl = timedelta(days=365) # Delete in one year
-
-artifact.save()
-```
-
-## Deactivate a TTL policy
-Use the W&B Python SDK or W&B App UI to deactivate a TTL policy for a specific artifact version.
-
-
-{{< tabpane text=true >}}
- {{% tab header="Python SDK" %}}
-1. [Fetch your artifact]({{< relref "../download-and-use-an-artifact.md" >}}).
-2. Set the artifact's `ttl` attribute to `None`.
-3. Update the artifact with the [`save`]({{< relref "/ref/python/experiments/run.md#save" >}}) method.
-
-
-The following code snippet shows how to turn off a TTL policy for an artifact:
-```python
-artifact = run.use_artifact("")
-artifact.ttl = None
-artifact.save()
-```
- {{% /tab %}}
- {{% tab header="W&B App" %}}
-1. Navigate to your W&B project in the W&B App UI.
-2. Select the artifact icon on the left panel.
-3. From the list of artifacts, expand the artifact type you
-4. Select on the artifact version you want to edit the TTL policy for.
-5. Click on the Version tab.
-6. Click on the meatball UI icon next to the **Link to registry** button.
-7. From the dropdown, select **Edit TTL policy**.
-8. Within the modal that appears, select **Deactivate** from the TTL policy dropdown.
-9. Select the **Update TTL** button to save your changes.
-
-{{< img src="/images/artifacts/remove_ttl_polilcy.gif" alt="Removing TTL policy" >}}
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-
-## View TTL policies
-View TTL policies for artifacts with the Python SDK or with the W&B App UI.
-
-{{< tabpane text=true >}}
- {{% tab header="Python SDK" %}}
-Use a print statement to view an artifact's TTL policy. The following example shows how to retrieve an artifact and view its TTL policy:
-
-```python
-artifact = run.use_artifact("")
-print(artifact.ttl)
-```
- {{% /tab %}}
- {{% tab header="W&B App" %}}
-View a TTL policy for an artifact with the W&B App UI.
-
-1. Navigate to the [W&B App](https://wandb.ai).
-2. Go to your W&B Project.
-3. Within your project, select the Artifacts tab in the left sidebar.
-4. Click on a collection.
-
-Within the collection view you can see all of the artifacts in the selected collection. Within the `Time to Live` column you will see the TTL policy assigned to that artifact.
-
-{{< img src="/images/artifacts/ttl_collection_panel_ui.png" alt="TTL collection view" >}}
- {{% /tab %}}
-{{< /tabpane >}}
-
diff --git a/content/en/guides/core/artifacts/track-external-files.md b/content/en/guides/core/artifacts/track-external-files.md
deleted file mode 100644
index aea0f08afa..0000000000
--- a/content/en/guides/core/artifacts/track-external-files.md
+++ /dev/null
@@ -1,253 +0,0 @@
----
-description: Track files saved in an external bucket, HTTP file server, or an NFS share.
-menu:
- default:
- identifier: track-external-files
- parent: artifacts
-title: Track external files
-weight: 7
----
-
-Use **reference artifacts** to track and use files saved outside of W&B servers, for example in CoreWeave AI Object Storage, an Amazon Simple Storage Service (Amazon S3) bucket, GCS bucket, Azure blob, HTTP file server, or NFS share.
-
-W&B logs metadata about the the object, such as the object's ETag and size. If object versioning is enabled on the bucket, the version ID is also logged.
-
-{{% alert %}}
-If you log an artifact that does not track external files, W&B saves the artifact's files to W&B servers. This is the default behavior when you log artifacts with the W&B Python SDK.
-
-See the [Artifacts quickstart]({{< relref "/guides/core/artifacts/artifacts-walkthrough" >}}) for information on how to save files and directories to W&B servers instead.
-{{% /alert %}}
-
-The following describes how to construct reference artifacts.
-
-## Track an artifact in an external bucket
-
-Use the W&B Python SDK to track references to files stored outside of W&B.
-
-1. Initialize a run with `wandb.init()`.
-2. Create an artifact object with `wandb.Artifact()`.
-3. Specify the reference to the bucket path with the artifact object's `add_reference()` method.
-4. Log the artifact's metadata with `run.log_artifact()`.
-
-```python
-import wandb
-
-# Initialize a W&B run
-run = wandb.init()
-
-# Create an artifact object
-artifact = wandb.Artifact(name="name", type="type")
-
-# Add a reference to the bucket path
-artifact.add_reference(uri = "uri/to/your/bucket/path")
-
-# Log the artifact's metadata
-run.log_artifact(artifact)
-run.finish()
-```
-
-Suppose your bucket has the following directory structure:
-
-```text
-s3://my-bucket
-
-|datasets/
- |---- mnist/
-|models/
- |---- cnn/
-```
-
-The `datasets/mnist/` directory contains a collection of images. Track the directory as a dataset with `wandb.Artifact.add_reference()`. The following code sample creates a reference artifact `mnist:latest` using the artifact object's `add_reference()` method.
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = wandb.Artifact(name="mnist", type="dataset")
-artifact.add_reference(uri="s3://my-bucket/datasets/mnist")
-run.log_artifact(artifact)
-run.finish()
-```
-
-Within the W&B App, you can look through the contents of the reference artifact using the file browser, [explore the full dependency graph]({{< relref "/guides/core/artifacts/explore-and-traverse-an-artifact-graph" >}}), and scan through the versioned history of your artifact. The W&B App does not render rich media such as images, audio, and so forth because the data itself is not contained within the artifact.
-
-{{% alert %}}
-W&B Artifacts support any Amazon S3 compatible interface, including CoreWeave Storage and MinIO. The scripts described below work as-is with both providers, when you set the `AWS_S3_ENDPOINT_URL` environment variable to point at your CoreWeave Storage or MinIO server.
-{{% /alert %}}
-
-{{% alert color="secondary" %}}
-By default, W&B imposes a 10,000 object limit when adding an object prefix. You can adjust this limit by specifying `max_objects=` when you call `add_reference()`.
-{{% /alert %}}
-
-## Download an artifact from an external bucket
-
-W&B retrieves the files from the underlying bucket when it downloads a reference artifact using the metadata recorded when the artifact is logged. If your bucket has object versioning enabled, W&B retrieves the object version that corresponds to the state of the file at the time an artifact was logged. As you evolve the contents of your bucket, you can always point to the exact version of your data a given model was trained on, because the artifact serves as a snapshot of your bucket during the training run.
-
-The following code sample shows how to download a reference artifact. The the APIs for downloading artifacts are the same for both reference and non-reference artifacts:
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = run.use_artifact("mnist:latest", type="dataset")
-artifact_dir = artifact.download()
-```
-
-{{% alert %}}
-W&B recommends that you enable 'Object Versioning' on your storage buckets if you overwrite files as part of your workflow. With versioning enabled on your buckets, artifacts with references to files that have been overwritten will still be intact because the older object versions are retained.
-
-Based on your use case, read the instructions to enable object versioning: [AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html), [GCP](https://cloud.google.com/storage/docs/using-object-versioning#set), [Azure](https://learn.microsoft.com/azure/storage/blobs/versioning-enable).
-{{% /alert %}}
-
-### Add and download an external reference example
-
-The following code sample uploads a dataset to an Amazon S3 bucket, tracks it with a reference artifact, then downloads it:
-
-```python
-import boto3
-import wandb
-
-run = wandb.init()
-
-# Training here...
-
-s3_client = boto3.client("s3")
-s3_client.upload_file(file_name="my_model.h5", bucket="my-bucket", object_name="models/cnn/my_model.h5")
-
-# Log the model artifact
-model_artifact = wandb.Artifact("cnn", type="model")
-model_artifact.add_reference("s3://my-bucket/models/cnn/")
-run.log_artifact(model_artifact)
-```
-
-At a later point, you can download the model artifact. Specify the name of the artifact and its type:
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = run.use_artifact(artifact_or_name = "cnn", type="model")
-datadir = artifact.download()
-```
-
-{{% alert %}}
-See the following reports for an end-to-end walkthrough on how to track artifacts by reference for GCP or Azure:
-
-* [Guide to Tracking Artifacts by Reference with GCP](https://wandb.ai/stacey/artifacts/reports/Tracking-Artifacts-by-Reference--Vmlldzo1NDMwOTE)
-* [Working with Reference Artifacts in Microsoft Azure](https://wandb.ai/andrea0/azure-2023/reports/Efficiently-Harnessing-Microsoft-Azure-Blob-Storage-with-Weights-Biases--Vmlldzo0NDA2NDgw)
-{{% /alert %}}
-
-## Cloud storage credentials
-
-W&B uses the default mechanism to look for credentials based on the cloud provider you use. Read the documentation from your cloud provider to learn more about the credentials used:
-
-| Cloud provider | Credentials Documentation |
-| -------------- | ------------------------- |
-| CoreWeave AI Object Storage | [CoreWeave AI Object Storage documentation](https://docs.coreweave.com/docs/products/storage/object-storage/how-to/manage-access-keys/cloud-console-tokens) |
-| AWS | [Boto3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials) |
-| GCP | [Google Cloud documentation](https://cloud.google.com/docs/authentication/provide-credentials-adc) |
-| Azure | [Azure documentation](https://learn.microsoft.com/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python) |
-
-For AWS, if the bucket is not located in the configured user's default region, you must set the `AWS_REGION` environment variable to match the bucket region.
-
-{{% alert color="secondary" %}}
-Rich media such as images, audio, video, and point clouds may fail to render in the App UI depending on the CORS configuration of your bucket. Allow listing **app.wandb.ai** in your bucket's CORS settings will allow the App UI to properly render such rich media.
-
-If rich media such as images, audio, video, and point clouds does not render in the App UI, ensure that `app.wandb.ai` is allowlisted in your bucket's CORS policy.
-{{% /alert %}}
-
-## Track an artifact in a filesystem
-
-Another common pattern for fast access to datasets is to expose an NFS mount point to a remote filesystem on all machines running training jobs. This can be an even simpler solution than a cloud storage bucket because from the perspective of the training script, the files look just like they are sitting on your local filesystem. Luckily, that ease of use extends into using Artifacts to track references to file systems, whether they are mounted or not.
-
-Suppose you have a filesystem mounted at `/mount` with the following structure:
-
-```bash
-mount
-|datasets/
- |-- mnist/
-|models/
- |-- cnn/
-```
-
-Within `mnist/` is a dataset, a collection of images. You can track it with an artifact:
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = wandb.Artifact("mnist", type="dataset")
-artifact.add_reference("file:///mount/datasets/mnist/")
-run.log_artifact(artifact)
-```
-{{% alert color="secondary" %}}
-By default, W&B imposes a 10,000 file limit when adding a reference to a directory. You can adjust this limit by specifying `max_objects=` when you call `add_reference()`.
-{{% /alert %}}
-
-Note the triple slash in the URL. The first component is the `file://` prefix that denotes the use of filesystem references. The second component begins the path to the dataset, `/mount/datasets/mnist/`.
-
-The resulting artifact `mnist:latest` looks and acts like a regular artifact. The only difference is that the artifact only consists of metadata about the files, such as their sizes and MD5 checksums. The files themselves never leave your system.
-
-You can interact with this artifact just as you would a normal artifact. In the UI, you can browse the contents of the reference artifact using the file browser, explore the full dependency graph, and scan through the versioned history of your artifact. However, the UI cannot render rich media such as images, audio, because the data itself is not contained within the artifact.
-
-Downloading a reference artifact:
-
-```python
-import wandb
-
-run = wandb.init()
-artifact = run.use_artifact("entity/project/mnist:latest", type="dataset")
-artifact_dir = artifact.download()
-```
-
-For a filesystem reference, a `download()` operation copies the files from the referenced paths to construct the artifact directory. In the above example, the contents of `/mount/datasets/mnist` are copied into the directory `artifacts/mnist:v0/`. If an artifact contains a reference to a file that was overwritten, then `download()` will throw an error because the artifact can no longer be reconstructed.
-
-Putting it all together, you can use the following code to track a dataset under a mounted filesystem that feeds into a training job:
-
-```python
-import wandb
-
-run = wandb.init()
-
-artifact = wandb.Artifact("mnist", type="dataset")
-artifact.add_reference("file:///mount/datasets/mnist/")
-
-# Track the artifact and mark it as an input to
-# this run in one swoop. A new artifact version
-# is only logged if the files under the directory
-# changed.
-run.use_artifact(artifact)
-
-artifact_dir = artifact.download()
-
-# Perform training here...
-```
-
-To track a model, log the model artifact after the training script writes the model files to the mount point:
-
-```python
-import wandb
-
-run = wandb.init()
-
-# Training here...
-
-# Write model to disk
-
-model_artifact = wandb.Artifact("cnn", type="model")
-model_artifact.add_reference("file:///mount/cnn/my_model.h5")
-run.log_artifact(model_artifact)
-```
-
-
-
\ No newline at end of file
diff --git a/content/en/guides/core/artifacts/update-an-artifact.md b/content/en/guides/core/artifacts/update-an-artifact.md
deleted file mode 100644
index 5930171342..0000000000
--- a/content/en/guides/core/artifacts/update-an-artifact.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-description: Update an existing Artifact inside and outside of a W&B Run.
-menu:
- default:
- identifier: update-an-artifact
- parent: artifacts
-title: Update an artifact
-weight: 4
----
-
-Pass desired values to update the `description`, `metadata`, and `alias` of an artifact. Call the `save()` method to update the artifact on the W&B servers. You can update an artifact during a W&B Run or outside of a Run.
-
-{{% alert title="When to use Artifact.save() or wandb.Run.log_artifact()" %}}
-- Use `Artifact.save()` to update an existing artifact without creating a new run.
-- Use `wandb.Run.log_artifact()` to create a new artifact and associate it with a specific run.
-{{% /alert %}}
-
-Use the W&B Public API ([`wandb.Api`]({{< relref "/ref/python/public-api/api.md" >}})) to update an artifact outside of a run. Use the Artifact API ([`wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md" >}})) to update an artifact during a run.
-
-{{% alert color="secondary" %}}
-You can not update the alias of artifact linked to a model in Model Registry.
-{{% /alert %}}
-
-{{< tabpane text=true >}}
- {{% tab header="During a run" %}}
-
-The proceeding code example demonstrates how to update the description of an artifact using the [`wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md" >}}) API:
-
-```python
-import wandb
-
-run = wandb.init(project="")
-artifact = run.use_artifact(":")
-artifact.description = ""
-artifact.save()
-```
- {{% /tab %}}
- {{% tab header="Outside of a run" %}}
-The proceeding code example demonstrates how to update the description of an artifact using the `wandb.Api` API:
-
-```python
-import wandb
-
-api = wandb.Api()
-
-artifact = api.artifact("entity/project/artifact:alias")
-
-# Update the description
-artifact.description = "My new description"
-
-# Selectively update metadata keys
-artifact.metadata["oldKey"] = "new value"
-
-# Replace the metadata entirely
-artifact.metadata = {"newKey": "new value"}
-
-# Add an alias
-artifact.aliases.append("best")
-
-# Remove an alias
-artifact.aliases.remove("latest")
-
-# Completely replace the aliases
-artifact.aliases = ["replaced"]
-
-# Persist all artifact modifications
-artifact.save()
-```
-
-For more information, see the Weights and Biases [Artifact API]({{< relref "/ref/python/experiments/artifact.md" >}}).
- {{% /tab %}}
- {{% tab header="With collections" %}}
-You can also update an Artifact collection in the same way as a singular artifact:
-
-```python
-import wandb
-run = wandb.init(project="")
-api = wandb.Api()
-artifact = api.artifact_collection(type="", collection="")
-artifact.name = ""
-artifact.description = ""
-artifact.save()
-```
-For more information, see the [Artifacts Collection]({{< relref "/ref/python/public-api/api.md" >}}) reference.
- {{% /tab %}}
-{{% /tabpane %}}
-
diff --git a/content/en/guides/core/automations/_index.md b/content/en/guides/core/automations/_index.md
deleted file mode 100644
index ebc72b6259..0000000000
--- a/content/en/guides/core/automations/_index.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-menu:
- default:
- identifier: automations
- parent: core
-title: Automations
-weight: 4
-url: guides/automations
-cascade:
-- url: guides/automations/:filename
----
-{{% pageinfo color="info" %}}
-{{< readfile file="/_includes/enterprise-cloud-only.md" >}}
-{{% /pageinfo %}}
-
-This page describes _automations_ in W&B. [Create an automation]({{< relref "create-automations/" >}}) to trigger workflow steps, such as automated model testing and deployment, based on an event in W&B, such as when an [artifact]({{< relref "/guides/core/artifacts" >}}) artifact version is created or when a [run metric]({{< relref "/guides/models/track/runs.md" >}}) meets or changes by a threshold.
-
-For example, an automation can notify a Slack channel when a new version is created, trigger an automated testing webhook when the `production` alias is added to an artifact, or start a validation job only when a run's `loss` is within acceptable bounds.
-
-## Overview
-An automation can start when a specific [event]({{< relref "automation-events.md" >}}) occurs in a registry or project.
-
-In a [Registry]({{< relref "/guides/core/registry/">}}), an automation can start:
-- When a new artifact version is linked to a collection. For example, trigger testing and validation workflows for new candidate models.
-- When an alias is added to an artifact version. For example, trigger a deployment workflow when an alias is added to a model version.
-
-In a [project]({{< relref "/guides/models/track/project-page.md" >}}), an automation can start:
-- When a new version is added to an artifact. For example, start a training job when a new version of a dataset artifact is added to a given collection.
-- When an alias is added to an artifact version. For example, trigger a PII redaction workflow when the alias "redaction" is added to a dataset artifact.
-- When a tag is added to an artifact version. For example, trigger a geo-specific workflow when the tag "europe" is added to an artifact version.
-- When a metric for a run meets or exceeds a configured threshold.
-- When a metric for a run changes by a configured threshold.
-- When a run's status changes to **Running**, **Failed**, or **Finished**.
-
-Optionally, you can:
-- Filter artifacts, aliases, or tags by name
-- Filter runs by user or run name.
-
-For more details, see [Automation events and scopes]({{< relref "automation-events.md" >}}).
-
-To [create an automation]({{< relref "create-automations/" >}}), you:
-
-1. If required, configure [secrets]({{< relref "/guides/core/secrets.md" >}}) for sensitive strings the automation requires, such as access tokens, passwords, or sensitive configuration details. Secrets are defined in your **Team Settings**. Secrets are most commonly used in webhook automations to securely pass credentials or tokens to the webhook's external service without exposing it in plain text or hard-coding it in the webhook's payload.
-1. Configure team-level webhook or Slack integrations to authorize W&B to post to Slack or run the webhook on your behalf. A single automation action (webhook or Slack notification) can be used by multiple automations. These actions are defined in your **Team Settings**.
-1. In the project or registry, create the automation:
- 1. Define the [event]({{< relref "#automation-events" >}}) to watch for, such as when a new artifact version is added.
- 1. Define the action to take when the event occurs (posting to a Slack channel or running a webhook). For a webhook, specify a secret to use for the access token and/or a secret to send with the payload, if required.
-
-## Limitations
-[Run metric automations]({{< relref "automation-events.md#run-metrics-events">}}) are currently supported only in [W&B Multi-tenant Cloud]({{< relref "/guides/hosting/#wb-multi-tenant-cloud" >}}).
-
-## Next steps
-- [Create an automation]({{< relref "create-automations/" >}}).
-- Learn about [Automation events and scopes]({{< relref "automation-events.md" >}}).
-- [Create a secret]({{< relref "/guides/core/secrets.md" >}}).
diff --git a/content/en/guides/core/automations/automation-events.md b/content/en/guides/core/automations/automation-events.md
deleted file mode 100644
index bb781baeb1..0000000000
--- a/content/en/guides/core/automations/automation-events.md
+++ /dev/null
@@ -1,132 +0,0 @@
----
-menu:
- default:
- identifier: automation-scopes
- parent: automations
-title: Automation events and scopes
-weight: 2
----
-{{% pageinfo color="info" %}}
-{{< readfile file="/_includes/enterprise-cloud-only.md" >}}
-{{% /pageinfo %}}
-
-An automation can start when a specific event occurs within a project or registry. This page describes the events that can trigger an automation within each scope. Learn more about automations in the [Automations overview]({{< relref "/guides/core/automations/" >}}) or [Create an automation]({{< relref "create-automations/" >}}).
-
-## Registry
-This section describes the scopes and events for an automation in a [Registry]({{< relref "/guides/core/registry/">}}).
-
-1. Navigate to the **Registry** App at https://wandb.ai/registry/.
-1. Click the name of a registry, then view and create automations in the **Automations** tab.
-
-
-
-Learn more about [creating automations]({{< relref "create-automations/" >}}).
-
-### Scopes
-A [Registry]({{< relref "/guides/core/registry/">}}) automation watches for the event taking place on any collection within a specific registry, including collections added in the future.
-
-### Events {#registry-events}
-A Registry automation can watch for these events:
-- **A new version is linked to a collection**: Test and validate new models or datasets when they are added to a registry.
-- **An artifact alias is added**: Trigger a specific step of your workflow when a new artifact version has a specific alias applied. For example, deploy a model when it has the `production` alias applied.
-
-## Project
-This section describes the scopes and events for an automation in a [project]({{< relref "/guides/models/track/project-page.md" >}}).
-
-1. Navigate to your W&B project on the W&B App at `https://wandb.ai//`.
-1. View and create automations in the **Automations** tab.
-
-
-
-Learn more about [creating automations]({{< relref "create-automations/" >}}).
-
-### Scopes
-A project-level automation watches for the event taking place on any collection in the project. Depending on the event you specify, you can further limit the scope of the automation.
-
-### Artifact events
-This section describes the events related to an artifact that can trigger an automation.
-
-- **A new version is added to an artifact**: Apply recurring actions to each version of an artifact. For example, start a training job when a new dataset artifact version is created. To limit the automation's scope, select a specific artifact in the **Artifact filter** field.
-- **An artifact alias is added**: Trigger a specific step of your workflow when a new artifact version in a project has an alias applied that matches the **Alias regex** you specify. For example, run a series of downstream processing steps when an artifact has the `test-set-quality-check` alias applied, or run a workflow each time a new artifact version has the `latest` alias. Only one artifact version can have a given alias at a point in time.
-- **An artifact tag is added**: Trigger a specific step of your workflow when an artifact version in a project has a tag applied that matches the **Tag regex** you specify. For example, specify `^europe.*` to trigger a geo-specific workflow when a tag beginning with the string `europe` is added to an artifact version. Artifact tags are used for grouping and filtering, and a given tag can be assigned to multiple artifact versions simultaneously.
-
-### Run events
-An automation can be triggered by a change in a [run's status]({{< relref "/guides/models/track/runs/#run-states" >}}) or a change in a [metric value]({{< relref "/guides/models/track/log/#what-data-is-logged-with-specific-wb-api-calls" >}}).
-
-#### Run status change
-{{% alert %}}
-- Currently available only in [W&B Multi-tenant Cloud]({{< relref "/guides/hosting/#wb-multi-tenant-cloud" >}}).
-- A run with **Killed** status cannot trigger an automation. This status indicates that the run was stopped forcibly by an admin user.
-{{% /alert %}}
-
-Trigger a workflow when a run changes its [status]({{< relref "/guides/models/track/runs/_index.md#run-states" >}}) to **Running**, **Finished**, or **Failed**. Optionally, you can further limit the runs that can trigger an automation by specifying a user or run name filter.
-
-
-
-Because run status is a property of the entire run, you can create a run status automation only from the the **Automations** page, not from a workspace.
-
-#### Run metrics change
-{{% alert %}}
-Currently available only in [W&B Multi-tenant Cloud]({{< relref "/guides/hosting/#wb-multi-tenant-cloud" >}}).
-{{% /alert %}}
-
-Trigger a workflow based on a logged value for a metric, either a metric in a run's history or a [system metric]({{< relref "/ref/python/experiments/system-metrics.md" >}}) such as `cpu`, which tracks the percentage of CPU utilization. W&B logs system metrics automatically every 15 seconds.
-
-You can create a run metrics automation from the project's **Automations** tab or directly from a line plot panel in a workspace.
-
-To set up a run metric automation, you configure how to compare the metric's value with the threshold you specify. Your choices depend on the event type and on any filters you specify.
-
-Optionally, you can further limit the runs that can trigger an automation by specifying a user or run name filter.
-
-##### Threshold
-For **Run metrics threshold met** events, you configure:
-1. The window of most recently logged values to consider (defaults to 5).
-1. Whether to evaluate the **Average**, **Min**, or **Max** value within the window.
-1. The comparison to make:
- - Above
- - Above or equal to
- - Below
- - Below or equal to
- - Not equal to
- - Equal to
-
-For example, trigger an automation when average `accuracy` is above `.6`.
-
-
-
-##### Change threshold
-For **Run metrics change threshold met** events, the automation uses two "windows" of values to check whether to start:
-
-- The _current window_ of recently logged values to consider (defaults to 10).
-- The _prior window_ of recently logged values to consider (defaults to 50).
-
-The current and prior windows are consecutive and do not overlap.
-
-To create the automation, you configure:
-1. The current window of logged values (defaults to 10).
-1. The prior window of logged values (defaults to 50).
-1. Whether to evaluate the values as relative or absolute (defaults to **Relative**).
-1. The comparison to make:
- - Increases by at least
- - Decreases by at least
- - Increases or decreases by at least
-
-For example, trigger an automation when average `loss` decreases by at least `.25`.
-
-
-
-#### Run filters
-This section describes how the automation selects runs to evaluate.
-
-- By default, any run in the project triggers the automation when the event occurs. You can limit which runs trigger an automation by configuring one of the following filters:
- - **Filter to one user's runs**: Include only runs created by the specified user.
- - **Filter on run name**: Include only runs whose names match the given regular expression.
-
- For details, see [Create automations]({{< relref "/guides/core/automations/create-automations/" >}}).
-- Each run is considered individually and can potentially trigger the automation.
-- Each run's values are put into a separate window and compared to the threshold separately.
-- In a 24 hour period, a particular automation can fire at most once per run.
-
-## Next steps
-- [Create a Slack automation]({{< relref "create-automations/slack.md" >}})
-- [Create a webhook automation]({{< relref "create-automations/webhook.md" >}})
diff --git a/content/en/guides/core/automations/create-automations/_index.md b/content/en/guides/core/automations/create-automations/_index.md
deleted file mode 100644
index fdca881772..0000000000
--- a/content/en/guides/core/automations/create-automations/_index.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-menu:
- default:
- identifier: create-automations
- parent: automations
-title: Create an automation
-weight: 1
-url: guides/automations/create-automations
-cascade:
-- url: guides/automations/create-automations/:filename
----
-{{% pageinfo color="info" %}}
-{{< readfile file="/_includes/enterprise-cloud-only.md" >}}
-{{% /pageinfo %}}
-
-This page gives an overview of creating and managing W&B [automations]({{< relref "/guides/core/automations/">}}). For more detailed instructions, refer to [Create a Slack automation]({{< relref "/guides/core/automations/create-automations/slack.md" >}}) or [Create a webhook automation]({{< relref "/guides/core/automations/create-automations/webhook.md" >}}).
-
-{{% alert %}}
-Looking for companion tutorials for automations?
-- [Learn to automatically triggers a Github Action for model evaluation and deployment](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw).
-- [Watch a video demonstrating automatically deploying a model to a Sagemaker endpoint](https://www.youtube.com/watch?v=s5CMj_w3DaQ).
-- [Watch a video series introducing automations](https://youtube.com/playlist?list=PLD80i8An1OEGECFPgY-HPCNjXgGu-qGO6&feature=shared).
-{{% /alert %}}
-
-## Requirements
-- A team admin can create and manage automations for the team's projects, as well as components of their automations, such as webhooks, secrets, and Slack integrations. Refer to [Team settings]({{< relref "/guides/models/app/settings-page/teams/" >}}).
-- To create a registry automation, you must have access to the registry. Refer to [Configure Registry access]({{< relref "/guides/core/registry/configure_registry.md#registry-roles" >}}).
-- To create a Slack automation, you must have permission to post to the Slack instance and channel you select.
-
-## Create an automation
-Create an automation from the project or registry's **Automations** tab. At a high level, to create an automation, follow these steps:
-
-1. If necessary, [create a W&B secret]({{< relref "/guides/core/secrets.md" >}}) for each sensitive string required by the automation, such as an access token, password, or SSH key. Secrets are defined in your **Team Settings**. Secrets are most commonly used in webhook automations.
-1. Configure the webhook or Slack integration to authorize W&B to post to Slack or run the webhook on your behalf. A single webhook or Slack integration can be used by multiple automations. These actions are defined in your **Team Settings**.
-1. In the project or registry, create the automation, which specifies the event to watch for and the action to take (such as posting to Slack or running a webhook). When you create a webhook automation, you configure the payload it sends.
-
-Or, from a line plot in the workspace, you can quickly create a [run metric automation]({{< relref "/guides/core/automations/automation-events.md#run-events" >}}) for the metric it shows:
-
-1. Hover over the panel, then click the bell icon at the top of the panel.
-
- {{< img src="/images/automations/run_metric_automation_from_panel.png" alt="Automation bell icon location" >}}
-1. Configure the automation using the basic or advanced configuration controls. For example, apply a run filter to limit the scope of the automation, or configure an absolute threshold.
-
-For details, refer to:
-
-- [Create a Slack automation]({{< relref "slack.md" >}})
-- [Create a webhook automation]({{< relref "webhook.md" >}})
-
-## View and manage automations
-View and manage automations from a project or registry's **Automations** tab.
-
-- To view an automation's details, click its name.
-- To edit an automation, click its action `...` menu, then click **Edit automation**.
-- To delete an automation, click its action `...` menu, then click **Delete automation**.
-
-## Next steps
-- Learn more about [automation events and scopes]({{< relref "/guides/core/automations/automation-events.md" >}})
-- [Create a Slack automation]({{< relref "slack.md" >}}).
-- [Create a webhook automation]({{< relref "webhook.md" >}}).
-- [Create a secret]({{< relref "/guides/core/secrets.md" >}}).
diff --git a/content/en/guides/core/automations/create-automations/slack.md b/content/en/guides/core/automations/create-automations/slack.md
deleted file mode 100644
index 40e05c108f..0000000000
--- a/content/en/guides/core/automations/create-automations/slack.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-menu:
- default:
- identifier: create-slack-automations
- parent: create-automations
-title: Create a Slack automation
-weight: 1
----
-{{% pageinfo color="info" %}}
-{{< readfile file="/_includes/enterprise-cloud-only.md" >}}
-{{% /pageinfo %}}
-
-This page shows how to create a Slack [automation]({{< relref "/guides/core/automations/" >}}> ). To create a webhook automation, refer to [Create a webhook automation]({{< relref "/guides/core/automations/create-automations/webhook.md" >}}) instead.
-
-At a high level, to create a Slack automation, you take these steps:
-1. [Add a Slack integration]({{< relref "#add-a-slack-integration" >}}), which authorizes W&B to post to the Slack instance and channel.
-1. [Create the automation]({{< relref "#create-an-automation" >}}), which defines the [event]({{< relref "/guides/core/automations/automation-events.md" >}}) to watch for and the channel to notify.
-
-## Add a Slack integration
-A team admin can add a Slack integration to the team.
-
-1. Log in to W&B and go to **Team Settings**.
-1. In the **Slack channel integrations** section, click **Connect Slack** to add a new Slack instance. To add a channel for an existing Slack instance, click **New integration**.
-
- 
-1. If necessary, sign in to Slack in your browser. When prompted, grant W&B permission to post to the Slack channel you select. Read the page, then click **Search for a channel** and begin typing the channel name. Select the channel from the list, then click **Allow**.
-1. In Slack, go to the channel you selected. If you see a post like `[Your Slack handle] added an integration to this channel: Weights & Biases`, the integration is configured correctly.
-
-Now you can [create an automation]({{< relref "#create-an-automation" >}}) that notifies the Slack channel you configured.
-
-## View and manage Slack integrations
-A team admin can view and manage the team's Slack instances and channels.
-
-1. Log in to W&B and go to **Team Settings**.
-1. View each Slack destination in the **Slack channel integrations** section.
-1. Delete a destination by clicking its trash icon.
-
-## Create an automation
-After you [add a Slack integration]({{< relref "#add-a-slack-integreation" >}}), select **Registry** or **Project**, then follow these steps to create an automation that notifies the Slack channel.
-
-{{< tabpane text=true >}}
-{{% tab "Registry" %}}
-A Registry admin can create automations in that registry.
-
-1. Log in to W&B.
-1. Click the name of a registry to view its details,
-1. To create an automation scoped to the registry, click the **Automations** tab, then click **Create automation**. An automation that is scoped to a registry is automatically applied to all of its collections (including those created in the future).
-1. Choose the [event]({{< relref "/guides/core/automations/automation-events.md#registry-events" >}}) to watch for.
-
- Fill in any additional fields that appear, which depend upon the event. For example, if you select **An artifact alias is added**, you must specify the **Alias regex**.
-
- Click **Next step**.
-
-1. Select the team that owns the [Slack integration]({{< relref "#add-a-slack-integration" >}}).
-1. Set **Action type** to **Slack notification**. Select the Slack channel, then click **Next step**.
-1. Provide a name for the automation. Optionally, provide a description.
-1. Click **Create automation**.
-
-{{% /tab %}}
-{{% tab "Project" %}}
-A W&B admin can create automations in a project.
-
-1. Log in to W&B.
-1. Go the project page and click the **Automations** tab, then click **Create automation**.
-
- Or, from a line plot in the workspace, you can quickly create a [run metric automation]({{< relref "/guides/core/automations/automation-events.md#run-events" >}}) for the metric it shows. Hover over the panel, then click the bell icon at the top of the panel.
- {{< img src="/images/automations/run_metric_automation_from_panel.png" alt="Automation bell icon location" >}}
-1. Choose the [event]({{< relref "/guides/core/automations/automation-events.md#project" >}}) to watch for.
-
- 1. Fill in any additional fields that appear. For example, if you select **An artifact alias is added**, you must specify the **Alias regex**.
-
- 1. For automations triggered by a run, optionally specify one or more run filters.
-
- - **Filter to one user's runs**: Include only runs created by the specified user. Click the toggle to turn on the filter, then specify a username.
- - **Filter on run name**: Include only runs whose names match the given regular expression. Click the toggle to turn on the filter, then specify a regular expression.
- 1. Click **Next step**.
-
-1. Select the team that owns the [Slack integration]({{< relref "#add-a-slack-integration" >}}).
-1. Set **Action type** to **Slack notification**. Select the Slack channel, then click **Next step**.
-1. Provide a name for the automation. Optionally, provide a description.
-1. Click **Create automation**.
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-## View and manage automations
-
-{{< tabpane text=true >}}
-{{% tab "Registry" %}}
-
-Manage the registry's automations from the registry's **Automations** tab.
-- To view an automation's details, click its name.
-- To edit an automation, click its action `...` menu, then click **Edit automation**.
-- To delete an automation, click its action `...` menu, then click **Delete automation**. Confirmation is required.
-{{% /tab %}}
-{{% tab "Project" %}}
-A W&B admin can view and manage a project's automations from the project's **Automations** tab.
-
-- To view an automation's details, click its name.
-- To edit an automation, click its action `...` menu, then click **Edit automation**.
-- To delete an automation, click its action `...` menu, then click **Delete automation**. Confirmation is required.
-{{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/automations/create-automations/webhook.md b/content/en/guides/core/automations/create-automations/webhook.md
deleted file mode 100644
index 833cc531a5..0000000000
--- a/content/en/guides/core/automations/create-automations/webhook.md
+++ /dev/null
@@ -1,313 +0,0 @@
----
-menu:
- default:
- identifier: create-webhook-automations
- parent: automations
-title: Create a webhook automation
-weight: 3
----
-{{% pageinfo color="info" %}}
-{{< readfile file="/_includes/enterprise-cloud-only.md" >}}
-{{% /pageinfo %}}
-
-This page shows how to create a webhook [automation]({{< relref "/guides/core/automations/" >}}> ). To create a Slack automation, refer to [Create a Slack automation]({{< relref "/guides/core/automations/create-automations/slack.md" >}}) instead.
-
-At a high level, to create a webhook automation, you take these steps:
-1. If necessary, [create a W&B secret]({{< relref "/guides/core/secrets.md" >}}) for each sensitive string required by the automation, such as an access token, password, or SSH key. Secrets are defined in your **Team Settings**.
-1. [Create a webhook]({{< relref "#create-a-webhook" >}}) to define the endpoint and authorization details and grant the integration access to any secrets it needs.
-1. [Create the automation]({{< relref "#create-an-automation" >}}) to define the [event]({{< relref "/guides/core/automations/automation-events.md" >}}) to watch for and the payload W&B will send. Grant the automation access to any secrets it needs for the payload.
-
-## Create a webhook
-A team admin can add a webhook for the team.
-
-{{% alert %}}
-If the webhook requires a Bearer token or its payload requires a sensitive string, [create a secret that contains it]({{< relref "/guides/core/secrets.md#add-a-secret" >}}) before creating the webhook. You can configure at most one access token and one other secret for a webhook. Your webhook's authentication and authorization requirements are determined by the webhook's service.
-{{% /alert %}}
-
-1. Log in to W&B and go to **Team Settings** page.
-1. In the **Webhooks** section, click **New webhook**.
-1. Provide a name for the webhook.
-1. Provide the endpoint URL for the webhook.
-1. If the webhook requires a Bearer token, set **Access token** to the [secret]({{< relref "/guides/core/secrets.md" >}}) that contains it. When using the webhook automation, W&B sets the `Authorization: Bearer` HTTP header to the access token, and you can access the token in the `${ACCESS_TOKEN}` [payload variable]({{< relref "#payload-variables" >}}). Learn more about the structure of the `POST` request W&B sends to the webhook service in [Troubleshoot your webhook]({{< relref "#troubleshoot-your-webhook" >}}).
-1. If the webhook requires a password or other sensitive string in its payload, set **Secret** to the secret that contains it. When you configure the automation that uses the webhook, you can access the secret as a [payload variable]({{< relref "#payload-variables" >}}) by prefixing its name with `$`.
-
- If the webhook's access token is stored in a secret, you must _also_ complete the next step to specify the secret as the access token.
-1. To verify that the W&B can connect and authenticate to the endpoint:
- 1. Optionally, provide a payload to test. To refer to a secret the webhook has access to in the payload, prefix its name with `$`. This payload is only used for testing and is not saved. You configure an automation's payload when you [create the automation]({{< relref "#create-a-webhook-automation" >}}). See [Troubleshoot your webhook]({{< relref "#troubleshoot-your-webhook" >}}) to view where the secret and access token are specified in the `POST` request.
- 1. Click **Test**. W&B attempts to connect to the webhook's endpoint using the credentials you configured. If you provided a payload, W&B sends it.
-
- If the test does not succeed, verify the webhook's configuration and try again. If necessary, refer to [Troubleshoot your webhook]({{< relref "#troubleshoot-your-webhook" >}}).
-
-
-
-Now you can [create an automation]({{< relref "#create-a-webhook-automation" >}}) that uses the webhook.
-
-## Create an automation
-After you [configure a webhook]({{< relref "#create-a-webhook" >}}), select **Registry** or **Project**, then follow these steps to create an automation that triggers the webhook.
-
-{{< tabpane text=true >}}
-{{% tab "Registry" %}}
-A Registry admin can create automations in that registry. Registry automations are applied to all collections in the registry, including those added in the future.
-
-1. Log in to W&B.
-1. Click the name of a registry to view its details,
-1. To create an automation scoped to the registry, click the **Automations** tab, then click **Create automation**.
-
-1. Choose the [event]({{< relref "/guides/core/automations/automation-events.md#registry-events" >}}) to watch for.
-
- Fill in any additional fields that appear. For example, if you select **An artifact alias is added**, you must specify the **Alias regex**.
-
- Click **Next step**.
-
-1. Select the team that owns the [webhook]({{< relref "#create-a-webhook" >}}).
-1. Set **Action type** to **Webhooks**. then select the [webhook]({{< relref "#create-a-webhook" >}}) to use.
-1. If you configured an access token for the webhook, you can access the token in the `${ACCESS_TOKEN}` [payload variable]({{< relref "#payload-variables" >}}). If you configured a secret for the webhook, you can access it in the payload by prefixing its name with `$`. Your webhook's requirements are determined by the webhook's service.
-1. Click **Next step**.
-1. Provide a name for the automation. Optionally, provide a description. Click **Create automation**.
-
-{{% /tab %}}
-{{% tab "Project" %}}
-A W&B admin can create automations in a project.
-
-1. Log in to W&B and go to the project page.
-1. In the sidebar, click **Automations**, then click **Create automation**.
-
- Or, from a line plot in the workspace, you can quickly create a [run metric automation]({{< relref "/guides/core/automations/automation-events.md#run-events" >}}) for the metric it shows. Hover over the panel, then click the bell icon at the top of the panel.
- {{< img src="/images/automations/run_metric_automation_from_panel.png" alt="Automation bell icon location" >}}
-1. Choose the [event]({{< relref "/guides/core/automations/automation-events.md#project" >}}) to watch for, such as when an artifact alias is added or when a run metric meets a given threshold.
-
- 1. Fill in any additional fields that appear, which depend upon the event. For example, if you select **An artifact alias is added**, you must specify the **Alias regex**.
-
- 1. For automations triggered by a run, optionally specify one or more run filters.
-
- - **Filter to one user's runs**: Include only runs created by the specified user. Click the toggle to turn on the filter, then specify a username.
- - **Filter on run name**: Include only runs whose names match the given regular expression. Click the toggle to turn on the filter, then specify a regular expression.
-
- The automation is applied to all collections in the project, including those added in the future.
- 1. Click **Next step**.
-1. Select the team that owns the [webhook]({{< relref "#create-a-webhook" >}}).
-1. Set **Action type** to **Webhooks**. then select the [webhook]({{< relref "#create-a-webhook" >}}) to use.
-1. If your webhook requires a payload, construct it and paste it into the **Payload** field. If you configured an access token for the webhook, you can access the token in the `${ACCESS_TOKEN}` [payload variable]({{< relref "#payload-variables" >}}). If you configured a secret for the webhook, you can access it in the payload by prefixing its name with `$`. Your webhook's requirements are determined by the webhook's service.
-1. Click **Next step**.
-1. Provide a name for the automation. Optionally, provide a description. Click **Create automation**.
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-## View and manage automations
-{{< tabpane text=true >}}
-{{% tab "Registry" %}}
-
-Manage a registry's automations from the registry's **Automations** tab.
-
-- To view an automation's details, click its name.
-- To edit an automation, click its action `...` menu, then click **Edit automation**.
-- To delete an automation, click its action `...` menu, then click **Delete automation**. Confirmation is required.
-
-{{% /tab %}}
-{{% tab "Project" %}}
-A W&B admin can view and manage a project's automations from the project's **Automations** tab.
-
-- To view an automation's details, click its name.
-- To edit an automation, click its action `...` menu, then click **Edit automation**.
-- To delete an automation, click its action `...` menu, then click **Delete automation**. Confirmation is required.
-{{% /tab %}}
-{{< /tabpane >}}
-
-## Payload reference
-Use these sections to construct your webhoook's payload. For details about testing your webhook and its payload, refer to [Troubleshoot your webhook]({{< relref "#troubleshoot-your-webhook" >}}).
-
-### Payload variables
-This section describes the variables you can use to construct your webhook's payload.
-
-| Variable | Details |
-|----------|---------|
-| `${project_name}` | The name of the project that owns the mutation that triggered the action. |
-| `${entity_name}` | The name of the entity or team that owns the mutation that triggered the action.
-| `${event_type}` | The type of event that triggered the action. |
-| `${event_author}` | The user that triggered the action. |
-| `${alias}` | Contains an artifact's alias if the automation is triggered by the **An artifact alias is added** event. For other automations, this variable is blank. |
-| `${tag}` | Contains an artifact's tags if the automation is triggered by the **An artifact tag is added** event. For other automations, this variable is blank. |
-| `${artifact_collection_name}` | The name of the artifact collection that the artifact version is linked to. |
-| `${artifact_metadata.}` | The value of an arbitrary top-level metadata key from the artifact version that triggered the action. Replace `` with the name of a top-level metadata key. Only top-level metadata keys are available in the webhook's payload. |
-| `${artifact_version}` | The [`Wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md/" >}}) representation of the artifact version that triggered the action. |
-| `${artifact_version_string}` | The `string` representation of the artifact version that triggered the action. |
-| `${ACCESS_TOKEN}` | The value of the access token configured in the [webhook]({{< relref "#create-a-webhook" >}}), if an access token is configured. The access token is automatically passed in the `Authorization: Bearer` HTTP header. |
-| `${SECRET_NAME}` | If configured, the value of a secret configured in the [webhook]({{< relref "#create-a-webhook" >}}). Replace `SECRET_NAME` with the name of the secret. |
-
-### Payload examples
-This section includes examples of webhook payloads for some common use cases. The examples demonstrate how to use [payload variables]({{< relref "#payload-variables" >}}).
-
-{{< tabpane text=true >}}
-{{% tab header="GitHub repository dispatch" value="github" %}}
-
-{{% alert %}}
-Verify that your access tokens have required set of permissions to trigger your GHA workflow. For more information, [see these GitHub Docs](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event).
-{{% /alert %}}
-
-Send a repository dispatch from W&B to trigger a GitHub action. For example, suppose you have a GitHub workflow file that accepts a repository dispatch as a trigger for the `on` key:
-
-```yaml
-on:
-repository_dispatch:
- types: BUILD_AND_DEPLOY
-```
-
-The payload for the repository might look something like:
-
-```json
-{
- "event_type": "BUILD_AND_DEPLOY",
- "client_payload":
- {
- "event_author": "${event_author}",
- "artifact_version": "${artifact_version}",
- "artifact_version_string": "${artifact_version_string}",
- "artifact_collection_name": "${artifact_collection_name}",
- "project_name": "${project_name}",
- "entity_name": "${entity_name}"
- }
-}
-```
-
-{{% alert %}}
-The `event_type` key in the webhook payload must match the `types` field in the GitHub workflow YAML file.
-{{% /alert %}}
-
-The contents and positioning of rendered template strings depends on the event or model version the automation is configured for. `${event_type}` will render as either `LINK_ARTIFACT` or `ADD_ARTIFACT_ALIAS`. See below for an example mapping:
-
-```text
-${event_type} --> "LINK_ARTIFACT" or "ADD_ARTIFACT_ALIAS"
-${event_author} --> ""
-${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3""
-${artifact_version_string} --> "/model-registry/:"
-${artifact_collection_name} --> ""
-${project_name} --> "model-registry"
-${entity_name} --> ""
-```
-
-Use template strings to dynamically pass context from W&B to GitHub Actions and other tools. If those tools can call Python scripts, they can consume the registered model artifacts through the [W&B API]({{< relref "/guides/core/artifacts/download-and-use-an-artifact.md" >}}).
-
-- For more information about repository dispatch, see the [official documentation on the GitHub Marketplace](https://github.com/marketplace/actions/repository-dispatch).
-
-- Watch the videos [Webhook Automations for Model Evaluation](https://www.youtube.com/watch?v=7j-Mtbo-E74&ab_channel=Weights%26Biases) and [Webhook Automations for Model Deployment](https://www.youtube.com/watch?v=g5UiAFjM2nA&ab_channel=Weights%26Biases), which guide you to create automations for model evaluation and deployment.
-
-- Review a W&B [report](https://wandb.ai/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw), which illustrates how to use a Github Actions webhook automation for Model CI. Check out this [GitHub repository](https://github.com/hamelsmu/wandb-modal-webhook) to learn how to create model CI with a Modal Labs webhook.
-
-{{% /tab %}}
-
-{{% tab header="Microsoft Teams notification" value="microsoft"%}}
-
-This example payload shows how to notify your Teams channel using a webhook:
-
-```json
-{
-"@type": "MessageCard",
-"@context": "http://schema.org/extensions",
-"summary": "New Notification",
-"sections": [
- {
- "activityTitle": "Notification from WANDB",
- "text": "This is an example message sent via Teams webhook.",
- "facts": [
- {
- "name": "Author",
- "value": "${event_author}"
- },
- {
- "name": "Event Type",
- "value": "${event_type}"
- }
- ],
- "markdown": true
- }
-]
-}
-```
-
-You can use template strings to inject W&B data into your payload at the time of execution (as shown in the Teams example above).
-
-{{% /tab %}}
-
-{{% tab header="Slack notifications" value="slack"%}}
-
-{{% alert %}}
-This section is provided for historical purposes. If you currently use a webhook to integrate with Slack, W&B recommends that you update your configuration to use the [new Slack integration]({{ relref "#create-a-slack-automation"}}) instead.
-{{% /alert %}}
-
-Set up your Slack app and add an incoming webhook integration with the instructions highlighted in the [Slack API documentation](https://api.slack.com/messaging/webhooks). Ensure that you have the secret specified under `Bot User OAuth Token` as your W&B webhook’s access token.
-
-The following is an example payload:
-
-```json
-{
- "text": "New alert from WANDB!",
-"blocks": [
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "Registry event: ${event_type}"
- }
- },
- {
- "type":"section",
- "text": {
- "type": "mrkdwn",
- "text": "New version: ${artifact_version_string}"
- }
- },
- {
- "type": "divider"
- },
- {
- "type": "section",
- "text": {
- "type": "mrkdwn",
- "text": "Author: ${event_author}"
- }
- }
- ]
-}
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-## Troubleshoot your webhook
-Interactively troubleshoot your webhook with the W&B App UI or programmatically with a Bash script. You can troubleshoot a webhook when you create a new webhook or edit an existing webhook.
-
-For details about the format W&B uses for the `POST` request, refer to the **Bash script** tab.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App UI" value="app" %}}
-
-A team admin can test a webhook interactively with the W&B App UI.
-
-1. Navigate to your W&B Team Settings page.
-2. Scroll to the **Webhooks** section.
-3. Click on the horizontal three docs (meatball icon) next to the name of your webhook.
-4. Select **Test**.
-5. From the UI panel that appears, paste your POST request to the field that appears.
- {{< img src="/images/models/webhook_ui.png" alt="Demo of testing a webhook payload" >}}
-6. Click on **Test webhook**. Within the W&B App UI, W&B posts the response from your endpoint.
- {{< img src="/images/models/webhook_ui_testing.gif" alt="Demo of testing a webhook" >}}
-
-Watch the video [Testing Webhooks in W&B](https://www.youtube.com/watch?v=bl44fDpMGJw&ab_channel=Weights%26Biases) for a demonstration.
-{{% /tab %}}
-
-{{% tab header="Bash script" value="bash"%}}
-
-This shell script shows one method to generate a `POST` request similar to the request W&B sends to your webhook automation when it is triggered.
-
-Copy and paste the code below into a shell script to troubleshoot your webhook. Specify your own values for:
-
-* `ACCESS_TOKEN`
-* `SECRET`
-* `PAYLOAD`
-* `API_ENDPOINT`
-
-{{< prism file="/webhook_test.sh" title="webhook_test.sh">}}{{< /prism >}}
-
-{{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/registry/_index.md b/content/en/guides/core/registry/_index.md
deleted file mode 100644
index 33392f337f..0000000000
--- a/content/en/guides/core/registry/_index.md
+++ /dev/null
@@ -1,141 +0,0 @@
----
-menu:
- default:
- identifier: registry
- parent: core
-title: Registry
-weight: 3
-url: guides/registry
-cascade:
-- url: guides/registry/:filename
----
-{{< cta-button colabLink="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb_registry/zoo_wandb.ipynb" >}}
-
-W&B Registry is a curated central repository of [W&B Artifact]({{< relref "/guides/core/artifacts/" >}}) versions within your organization. Users who [have permission]({{< relref "./configure_registry.md" >}}) within your organization can [download and use artifacts]({{< relref "./download_use_artifact.md" >}}), share, and collaboratively manage the lifecycle of all artifacts, regardless of the team that user belongs to.
-
-You can use the Registry to [track artifact versions]({{< relref "./link_version.md" >}}), audit the history of an artifact's usage and changes, ensure governance and compliance of your artifacts, and [automate downstream processes such as model CI/CD]({{< relref "/guides/core/automations/" >}}).
-
-In summary, use W&B Registry to:
-
-- [Promote]({{< relref "./link_version.md" >}}) artifact versions that satisfy a machine learning task to other users in your organization.
-- Organize [artifacts with tags]({{< relref "./organize-with-tags.md" >}}) so that you can find or reference specific artifacts.
-- Track an [artifact’s lineage]({{< relref "/guides/core/registry/lineage.md" >}}) and audit the history of changes.
-- [Automate]({{< relref "/guides/core/automations/" >}}) downstream processes such as model CI/CD.
-- [Limit who in your organization]({{< relref "./configure_registry.md" >}}) can access artifacts in each registry.
-
-
-
-{{< img src="/images/registry/registry_landing_page.png" alt="W&B Registry" >}}
-
-The preceding image shows the Registry App with "Model" and "Dataset" core registries along with custom registries.
-
-
-## Learn the basics
-Each organization initially contains two registries that you can use to organize your model and dataset artifacts called **Models** and **Datasets**, respectively. You can create [additional registries to organize other artifact types based on your organization's needs]({{< relref "./registry_types.md" >}}).
-
-Each [registry]({{< relref "./configure_registry.md" >}}) consists of one or more [collections]({{< relref "./create_collection.md" >}}). Each collection represents a distinct task or use case.
-
-{{< img src="/images/registry/homepage_registry.png" alt="W&B Registry" >}}
-
-To add an artifact to a registry, you first log a [specific artifact version to W&B]({{< relref "/guides/core/artifacts/create-a-new-artifact-version.md" >}}). Each time you log an artifact, W&B automatically assigns a version to that artifact. Artifact versions use 0 indexing, so the first version is `v0`, the second version is `v1`, and so on.
-
-Once you log an artifact to W&B, you can then link that specific artifact version to a collection in the registry.
-
-{{% alert %}}
-The term "link" refers to pointers that connect where W&B stores the artifact and where the artifact is accessible in the registry. W&B does not duplicate artifacts when you link an artifact to a collection.
-{{% /alert %}}
-
-As an example, the proceeding code example shows how to log and link a model artifact called "my_model.txt" to a collection named "first-collection" in the [core registry]({{< relref "./registry_types.md" >}}):
-
-1. Initialize a W&B Run.
-2. Log the artifact to W&B.
-3. Specify the name of the collection and registry to link your artifact version to.
-4. Link the artifact to the collection.
-
-Save this Python code to a script and run it. W&B Python SDK version 0.18.6 or newer is required.
-
-```python title="hello_collection.py"
-import wandb
-import random
-
-# Initialize a W&B Run to track the artifact
-run = wandb.init(project="registry_quickstart")
-
-# Create a simulated model file so that you can log it
-with open("my_model.txt", "w") as f:
- f.write("Model: " + str(random.random()))
-
-# Log the artifact to W&B
-logged_artifact = run.log_artifact(
- artifact_or_path="./my_model.txt",
- name="gemma-finetuned",
- type="model" # Specifies artifact type
-)
-
-# Specify the name of the collection and registry
-# you want to publish the artifact to
-COLLECTION_NAME = "first-collection"
-REGISTRY_NAME = "model"
-
-# Link the artifact to the registry
-run.link_artifact(
- artifact=logged_artifact,
- target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"
-)
-```
-
-W&B automatically creates a collection for you if the collection you specify in the returned run object's `link_artifact(target_path = "")` method does not exist within the registry you specify.
-
-{{% alert %}}
-The URL that your terminal prints directs you to the project where W&B stores your artifact.
-{{% /alert %}}
-
-Navigate to the Registry App to view artifact versions that you and other members of your organization publish. To do so, first navigate to W&B. Select **Registry** in the left sidebar below **Applications**. Select the "Model" registry. Within the registry, you should see the "first-collection" collection with your linked artifact version.
-
-Once you link an artifact version to a collection within a registry, members of your organization can view, download, and manage your artifact versions, create downstream automations, and more if they have the proper permissions.
-
-{{% alert %}}
-If an artifact version logs metrics (such as by using `run.log_artifact()`), you can view metrics for that version from its details page, and you can compare metrics across artifact versions from the collection's page. Refer to [View linked artifacts in a registry]({{< relref "link_version.md#view-linked-artifacts-in-a-registry" >}}).
-{{% /alert %}}
-
-## Enable W&B Registry
-
-Based on your deployment type, satisfy the following conditions to enable W&B Registry:
-
-| Deployment type | How to enable |
-| ----- | ----- |
-| Multi-tenant Cloud | No action required. W&B Registry is available on the W&B App. |
-| Dedicated Cloud | Contact your account team to enable W&B Registry for your deployment. |
-| Self-Managed | For Server v0.70.0 or newer, no action required. For older supported Server versions, set the environment variable `ENABLE_REGISTRY_UI` to `true`. Refer to [Configure environment variables]({{< relref "/guides/hosting/env-vars.md" >}}). |
-
-
-## Resources to get started
-
-Depending on your use case, explore the following resources to get started with the W&B Registry:
-
-* Check out the tutorial video:
- * [Getting started with Registry from W&B](https://www.youtube.com/watch?v=p4XkVOsjIeM)
-* Take the W&B [Model CI/CD](https://www.wandb.courses/courses/enterprise-model-management) course and learn how to:
- * Use W&B Registry to manage and version your artifacts, track lineage, and promote models through different lifecycle stages.
- * Automate your model management workflows using webhooks.
- * Integrate the registry with external ML systems and tools for model evaluation, monitoring, and deployment.
-
-
-
-## Migrate from the legacy Model Registry to W&B Registry
-
-The legacy Model Registry is scheduled for deprecation with the exact date not yet decided. Before deprecating the legacy Model Registry, W&B will migrate the contents of the legacy Model Registry to the W&B Registry.
-
-
-See [Migrating from legacy Model Registry]({{< relref "./model_registry_eol.md" >}}) for more information about the migration process from the legacy Model Registry to W&B Registry.
-
-Until the migration occurs, W&B supports both the legacy Model Registry and the new Registry.
-
-{{% alert %}}
-To view the legacy Model Registry, navigate to the Model Registry in the W&B App. A banner appears at the top of the page that enables you to use the legacy Model Registry App UI.
-
-{{< img src="/images/registry/nav_to_old_model_reg.gif" alt="Legacy Model Registry UI" >}}
-{{% /alert %}}
-
-
-Reach out to support@wandb.com with any questions or to speak to the W&B Product Team about any concerns about the migration.
\ No newline at end of file
diff --git a/content/en/guides/core/registry/aliases.md b/content/en/guides/core/registry/aliases.md
deleted file mode 100644
index daf2103e1a..0000000000
--- a/content/en/guides/core/registry/aliases.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-title: Reference an artifact version with aliases
-weight: 5
----
-
-Reference a specific [artifact version]({{< relref "guides/core/artifacts/create-a-new-artifact-version" >}}) with one or more aliases. [W&B automatically assigns aliases]({{< relref "aliases#default-aliases" >}}) to each artifact you link with the same name. You can also [create one or more custom aliases]({{< relref "aliases#custom-aliases" >}}) to reference a specific artifact version.
-
-Aliases appear as rectangles with the name of that alias in the rectangle in the Registry UI. If an [alias is protected]({{< relref "aliases#protected-aliases" >}}), it appears as a gray rectangle with a lock icon. Otherwise, the alias appears as an orange rectangle. Aliases are not shared across registries.
-
-{{% alert title="When to use an alias versus using a tag" %}}
-Use an alias to reference a specific artifact version. Each alias within a collection is unique. Only one artifact version can have a specific alias at a time.
-
-Use tags to organize and group artifact versions or collections based on a common theme. Multiple artifact versions and collections can share the same tag.
-{{% /alert %}}
-
-When you add an alias to an artifact version, you can optionally start a [Registry automation]({{< relref "/guides/core/automations/automation-events/#registry" >}}) to notify a Slack channel or trigger a webhook.
-
-## Default aliases
-
-W&B automatically assigns the following aliases to each artifact version you link with the same name:
-
-* The `latest` alias to the most recent artifact version you link to a collection.
-* A unique version number. W&B counts each artifact version (zero indexing) you link. W&B uses the count number to assign a unique version number to that artifact.
-
-For example, if you link an artifact named `zoo_model` three times, W&B creates three aliases `v0`, `v1`, and `v2` respectively. `v2` also has the `latest` alias.
-
-## Custom aliases
-
-Create one or more custom aliases for a specific artifact versions based on your unique use case. For example:
-
-- You might use aliases such as `dataset_version_v0`, `dataset_version_v1`, and `dataset_version_v2` to identify which dataset a model was trained on.
-- You might use a `best_model` alias to keep track of the best performing artifact model version.
-
-Any user with a [**Member** or **Admin** registry role]({{< relref "guides/core/registry/configure_registry/#registry-roles" >}}) on a registry can add or remove a custom alias from a linked artifact in that registry. Users with the [**Restricted Viewer** or **Viewer** roles]({{< relref "guides/core/registry/configure_registry/#registry-roles" >}}) cannot add or remove aliases.
-
-{{% alert %}}
-[Protected aliases]({{< relref "aliases/#protected-aliases" >}}) provide a way to label and identify which artifact versions to protect from modification or deletion.
-{{% /alert %}}
-
-
-You can create a custom alias with the W&B Registry or the Python SDK. Based on your use case, click on a tab below that best fits your needs.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B Registry" value="app" %}}
-
-1. Navigate to the W&B Registry.
-2. Click the **View details** button in a collection.
-3. Within the **Versions** section, click the **View** button for a specific artifact version.
-4. Click the **+** button to add one or more aliases next to the **Aliases** field.
-
-{{% /tab %}}
-
-{{% tab header="Python SDK" value="python" %}}
-When you link an artifact version to a collection with the Python SDK you can optionally provide a list of one or more aliases as an argument to the `alias` parameter in [`link_artifact()`]({{< relref "/ref/python/experiments/run.md/#link_artifact" >}}). W&B creates an alias ([non protected alias]({{< relref "#custom-aliases" >}})) for you if the alias you provide does not already exist.
-
-The following code snippet demonstrates how to link an artifact version to a collection and add aliases to that artifact version with the Python SDK. Replace values within `<>` with your own:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(entity = "", project = "")
-
-# Create an artifact object
-# The type parameter specifies both the type of the
-# artifact object and the collection type
-artifact = wandb.Artifact(name = "", type = "")
-
-# Add the file to the artifact object.
-# Specify the path to the file on your local machine.
-artifact.add_file(local_path = "")
-
-# Specify the collection and registry to link the artifact to
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"
-
-# Link the artifact version to the collection
-# Add one or more aliases to this artifact version
-run.link_artifact(
- artifact = artifact,
- target_path = target_path,
- aliases = ["", ""]
- )
-```
-{{% /tab %}}
-{{< /tabpane >}}
-
-### Protected aliases
-Use a [protected alias]({{< relref "aliases/#protected-aliases" >}}) to both label and identify artifact versions that should not be modified or deleted. For example, consider using a `production` protected alias to label and identify artifact versions that are in used in your organization's machine learning production pipeline.
-
-[Registry admin]({{< relref "/guides/core/registry/configure_registry/#registry-roles" >}}) users and [service accounts]({{< relref "/support/kb-articles/service_account_useful" >}}) with the **Admin** role can create protected aliases and add or remove protected aliases from an artifact version. Users and service accounts with **Member**, **Viewer**, and **Restricted Viewer** roles cannot unlink a protected version or delete a collection that contains a protected alias. See [Configure registry access]({{< relref "/guides/core/registry/configure_registry.md" >}}) for details.
-
-Common protected aliases include:
-
-- **Production**: The artifact version is ready for production use.
-- **Staging**: The artifact version is ready for testing.
-
-#### Create a protected alias
-
-The following steps describe how to create a protected alias in the W&B Registry UI:
-
-1. Navigate to the Registry App.
-2. Select a registry.
-3. Click the gear button on the top right of the page to view the registry's settings.
-4. Within the **Protected Aliases** section, click the **+** button to add one or more protected aliases.
-
-After creation, each protected alias appears as a gray rectangle with a lock icon in the **Protected Aliases** section.
-
-{{% alert %}}
-Unlike custom aliases that are not protected, creating protected aliases is available exclusively in the W&B Registry UI and not programmatically with the Python SDK. To add a protected alias to an artifact version, you can use the W&B Registry UI or the Python SDK.
-{{% /alert %}}
-
-The following steps describe how to add a protected alias to an artifact version with the W&B Registry UI:
-
-1. Navigate to the W&B Registry.
-2. Click the **View details** button in a collection.
-3. Within the **Versions** section, select the **View** button for a specific artifact version.
-4. Click the **+** button to add one or more protected aliases next to the **Aliases** field.
-
-After a protected alias is created, an admin can add it to an artifact version programmatically with the Python SDK. See the W&B Registry and Python SDK tabs in [Create a custom alias](#custom-aliases) section above for an example on how to add a protected alias to an artifact version.
-
-## Find existing aliases
-You can find existing aliases with the [global search bar in the W&B Registry]({{< relref "/guides/core/registry/search_registry/#search-for-registry-items" >}}). To find a protected alias:
-
-1. Navigate to the W&B Registry App.
-2. Specify the search term in the search bar at the top of the page. Press Enter to search.
-
-Search results appear below the search bar if the term you specify matches an existing registry, collection name, artifact version tag, collection tag, or alias.
-
-## Example
-
-{{% alert %}}
-The following code example is a continuation of [the W&B Registry Tutorial](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb_registry/zoo_wandb.ipynb). To use the following code, you must first [retrieve and process the Zoo dataset as described in the notebook](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/wandb_registry/zoo_wandb.ipynb#scrollTo=87fecd29-8146-41e2-86fb-0bb4e3e3350a). Once you have the Zoo dataset, you can create an artifact version and add custom aliases to it.
-{{% /alert %}}
-
-The following code snippet shows how to create an artifact version and add custom aliases to it. The example uses the Zoo dataset from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/dataset/111/zoo) and the `Model` collection in the `Zoo_Classifier_Models` registry.
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(entity = "smle-reg-team-2", project = "zoo_experiment")
-
-# Create an artifact object
-# The type parameter specifies both the type of the
-# artifact object and the collection type
-artifact = wandb.Artifact(name = "zoo_dataset", type = "dataset")
-
-# Add the file to the artifact object.
-# Specify the path to the file on your local machine.
-artifact.add_file(local_path="zoo_dataset.pt", name="zoo_dataset")
-artifact.add_file(local_path="zoo_labels.pt", name="zoo_labels")
-
-# Specify the collection and registry to link the artifact to
-REGISTRY_NAME = "Model"
-COLLECTION_NAME = "Zoo_Classifier_Models"
-target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"
-
-# Link the artifact version to the collection
-# Add one or more aliases to this artifact version
-run.link_artifact(
- artifact = artifact,
- target_path = target_path,
- aliases = ["production-us", "production-eu"]
- )
-```
-
-1. First, you create an artifact object (`wandb.Artifact()`).
-2. Next, you add two dataset PyTorch tensors to the artifact object with `wandb.Artifact.add_file()`.
-3. Lastly, you link the artifact version to the `Model` collection in the `Zoo_Classifier_Models` registry with `link_artifact()`. You also add two custom aliases to the artifact version by passing `production-us` and `production-eu` as arguments to the `aliases` parameter.
diff --git a/content/en/guides/core/registry/configure_registry.md b/content/en/guides/core/registry/configure_registry.md
deleted file mode 100644
index 1f551bae5a..0000000000
--- a/content/en/guides/core/registry/configure_registry.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-menu:
- default:
- identifier: configure_registry
- parent: registry
-title: Configure registry access
-weight: 3
----
-
-A registry admin can [configure registry roles]({{< relref "configure_registry.md#configure-registry-roles" >}}), [add users]({{< relref "configure_registry.md#add-a-user-or-a-team-to-a-registry" >}}), or [remove users]({{< relref "configure_registry.md#remove-a-user-or-team-from-a-registry" >}}) from a registry by configuring the registry's settings.
-
-## Manage users
-
-### Add a user or a team
-
-Registry admins can add individual users or entire teams to a registry. To add a user or team to a registry:
-
-1. Navigate to the **Registry** App in the W&B App UI.
-2. Select the registry you want to add a user or team to.
-3. Click on the gear icon on the upper right hand corner to access the registry settings.
-4. In the **Registry access** section, click **Add access**.
-5. Specify one or more user names, emails, or the team names to the **Include users and teams** field.
-6. Click **Add access**.
-
-{{< img src="/images/registry/add_team_registry.gif" alt="Adding teams to registry" >}}
-
-Learn more about [configuring user roles in a registry]({{< relref "configure_registry.md#configure-registry-roles" >}}), or [Registry role permissions]({{< relref "configure_registry.md#registry-role-permissions" >}}) .
-
-### Remove a user or team
-A registry admin can remove individual users or entire teams from a registry. To remove a user or team from a registry:
-
-1. Navigate to the **Registry** App in the W&B App UI.
-2. Select the registry you want to remove a user from.
-3. Click on the gear icon on the upper right hand corner to access the registry settings.
-4. Navigate to the **Registry access** section and type in the username, email, or team you want to remove.
-5. Click the **Delete** button.
-
-{{% alert %}}
-Removing a user from a team also removes that user's access to the registry.
-{{% /alert %}}
-
-### Change the owner of a registry
-
-A registry admin can designate any member as a registry's owner, including a **Restricted Viewer** or a **Viewer**. Registry ownership is primarily for accountability purposes and does not confer any additional permissions beyond those granted by the user's assigned role.
-
-To change the owner:
-1. Navigate to the **Registry** App in the W&B App UI.
-2. Select the registry you want to configure.
-3. Click the gear icon on the upper right hand corner.
-4. Scroll to the **Registry members and roles** section.
-5. Hover over the row for a member.
-6. Click the **...** action menu at the end of the row, then click **Make owner**.
-
-
-## Configure Registry roles
-
-This section shows how to configure roles for Registry members. For more information about Registry roles, including the cabilities of each role, order of precedence, defaults, and more, see [Details about Registry roles](#details-about-registry-roles).
-
-1. Navigate to the **Registry** App in the W&B App UI.
-2. Select the registry you want to configure.
-3. Click the gear icon on the upper right hand corner.
-4. Scroll to the **Registry members and roles** section.
-5. Within the **Member** field, search for the user or team you want to edit permissions for.
-6. In the **Registry role** column, click the user's role.
-7. From the dropdown, select the role you want to assign to the user.
-
-## Details about Registry roles
-
-The following sections give more information about Registry roles.
-
-{{% alert %}}
-Your [role in a team]({{< ref "/guides/models/app/settings-page/teams.md#team-roles-and-permissions" >}}) has no impact or relationship to your role in any registry.
-{{% /alert %}}
-
-### Default roles
-W&B automatically assigns a default **registry role** to a user or team when they are added to a registry. This role determines what they can do in that registry.
-
-| Entity | Default registry role (Dedicated Cloud / Self-Managed) | Default registry role (Multi-tenant Cloud) |
-|----------------------------------------|-------------------------------------------------------------|-------------------------------------------------|
-| Team | Viewer | Restricted Viewer |
-| User or service account (non admin) | Viewer | Restricted Viewer |
-| Service account (non admin) | Member1 | Member1 |
-| Org admin | Admin | Admin |
-
-: Service accounts cannot have **Viewer** or **Restricted Viewer** roles.
-
-A registry admin can assign or modify roles for users and teams in the registry.
-See [Configure user roles in a registry]({{< relref "configure_registry.md#configure-registry-roles" >}}) for more information.
-
-{{% alert title="Restricted Viewer role availability" %}}
-The **Restricted Viewer** role is currently available only in Multi-Tenant Cloud organizations by invitation only. To request access, or to express interest in the feature on Dedicated Cloud or Self-Managed, [contact support](mailto:support@wandb.ai).
-
-This role provides read-only access to registry artifacts without the ability to create, update, or delete collections, automations, or other registry resources.
-
-Unlike a **Viewer**, a **Restricted Viewer**:
-- Cannot download artifact files or access file contents.
-- Cannot use artifacts with use_artifact() in the W&B SDK.
-{{% /alert %}}
-
-### Role permissions
-The following table lists each Registry role, along with the permissions provided by each role:
-
-| Permission | Permission Group | Restricted Viewer (Multi-tenant Cloud, by invitation) | Viewer | Member | Admin |
-|--------------------------------------------------------------- |------------------|-------------------|--------|--------|-------|
-| View a collection's details | Read | ✓ | ✓ | ✓ | ✓ |
-| View a linked artifact's details | Read | ✓ | ✓ | ✓ | ✓ |
-| Usage: Consume an artifact in a registry with use_artifact | Read | | ✓ | ✓ | ✓ |
-| Download a linked artifact | Read | | ✓ | ✓ | ✓ |
-| Download files from an artifact's file viewer | Read | | ✓ | ✓ | ✓ |
-| Search a registry | Read | ✓ | ✓ | ✓ | ✓ |
-| View a registry's settings and user list | Read | ✓ | ✓ | ✓ | ✓ |
-| Create a new automation for a collection | Create | | | ✓ | ✓ |
-| Turn on Slack notifications for new version being added | Create | | | ✓ | ✓ |
-| Create a new collection | Create | | | ✓ | ✓ |
-| Create a new custom registry | Create | | | ✓ | ✓ |
-| Edit collection card (description) | Update | | | ✓ | ✓ |
-| Edit linked artifact description | Update | | | ✓ | ✓ |
-| Add or delete a collection's tag | Update | | | ✓ | ✓ |
-| Add or delete an alias from a linked artifact | Update | | | ✓ | ✓ |
-| Link a new artifact | Update | | | ✓ | ✓ |
-| Edit allowed types list for a registry | Update | | | ✓ | ✓ |
-| Edit custom registry name | Update | | | ✓ | ✓ |
-| Delete a collection | Delete | | | ✓ | ✓ |
-| Delete an automation | Delete | | | ✓ | ✓ |
-| Unlink an artifact from a registry | Delete | | | ✓ | ✓ |
-| Edit accepted artifact types for a registry | Admin | | | | ✓ |
-| Change registry visibility (Organization or Restricted) | Admin | | | | ✓ |
-| Add users to a registry | Admin | | | | ✓ |
-| Assign or change a user's role in a registry | Admin | | | | ✓ |
-
-
-### Inherited Registry role
-The registry's membership list shows each user's inherited (effective) registry role (in light gray) next to the role dropdown in their row.
-
-{{< img src="/images/registry/role_conflict.png" alt="Registry membership list showing the user's effective registry role" >}}
-
-A user's effective role in a particular registry matches their _highest_ role among their role in the organization, the registry, and the team that owns the registry, whether inherited or explicitly assigned. For example:
-
-- A team **Admin** or organization **Admin** with the **Viewer** role in a particular registry owned by the team is effectively an **Admin** of the registry.
-- A registry **Viewer** with the **Member** role in the team is effectively a **Member** of the registry.
-- A team **Viewer** with the **Member** role in a particular registry is effectively a **Member** of the registry.
-
-### SDK compatibility
-
-{{% alert title="SDK version requirement" %}}
-To use the W&B SDK to access artifacts as a **Restricted Viewer**, you must use W&B SDK version 0.19.9 or higher. Otherwise, some SDK commands will result in permission errors.
-{{% /alert %}}
-
-When a **Restricted Viewer** uses the SDK, certain functions are not available or work differently.
-
-The following methods are not available and result in permission errors:
-- [`Run.use_artifact()`]({{< relref "/ref/python/experiments/run/#method-runuse_artifact" >}})
-- [`Artifact.download()`]({{< relref "/ref/python/experiments/artifact/#method-artifactdownload" >}})
-- [`Artifact.file()`]({{< relref "/ref/python/experiments/artifact/#method-artifactfile" >}})
-- [`Artifact.files()`]({{< relref "/ref/python/experiments/artifact/#method-artifactfiles" >}})
-
-The following methods are limited to artifact metadata:
-- [`Artifact.get_entry()`]({{< relref "/ref/python/experiments/artifact/#method-artifactget_entry" >}})
-- [`Artifact.get_path()`]({{< relref "/ref/python/experiments/artifact/#method-artifactget_path" >}})
-- [`Artifact.get()`]({{< relref "/ref/python/experiments/artifact/#method-artifactget" >}})
-- [`Artifact.verify()`]({{< relref "/ref/python/experiments/artifact/#method-artifactverify" >}})
-
-### Cross-registry permissions
-
-A user can have different roles in different registries. For example, a user can be a **Restricted Viewer** in Registry A but a **Viewer** in Registry B. In this case:
-
-- The same artifact linked to both registries will have different access levels
-- In Registry A, the user is a **Restricted Viewer** and cannot download files or use the artifact
-- In Registry B, the user is a **Viewer** and can download files and use the artifact
-- In other words, access is determined by the registry in which the artifact is accessed
diff --git a/content/en/guides/core/registry/create_collection.md b/content/en/guides/core/registry/create_collection.md
deleted file mode 100644
index 304265437b..0000000000
--- a/content/en/guides/core/registry/create_collection.md
+++ /dev/null
@@ -1,166 +0,0 @@
----
-menu:
- default:
- identifier: create_collection
- parent: registry
-title: Create a collection
-weight: 4
----
-
-
-A *collection* is a set of linked artifact versions within a registry. Each collection represents a distinct task or use case.
-
-For example, within the core Dataset registry you might have multiple collections. Each collection contains a different dataset such as MNIST, CIFAR-10, or ImageNet.
-
-As another example, you might have a registry called "chatbot" that contains a collection for model artifacts, another collection for dataset artifacts, and another collection for fine-tuned model artifacts.
-
-How you organize a registry and their collections is up to you.
-
-{{% alert %}}
-If you are familiar with W&B Model Registry, you might aware of registered models. Registered models in the Model Registry are now referred to as collections in the W&B Registry.
-{{% /alert %}}
-
-## Collection types
-
-Each collection accepts one, and only one, *type* of artifact. The type you specify restricts what sort of artifacts you, and other members of your organization, can link to that collection.
-
-{{% alert %}}
-You can think of artifact types similar to data types in programming languages such as Python. In this analogy, a collection can store strings, integers, or floats but not a mix of these data types.
-{{% /alert %}}
-
-For example, suppose you create a collection that accepts "dataset" artifact types. This means that you can only link future artifact versions that have the type "dataset" to this collection. Similarly, you can only link artifacts of type "model" to a collection that accepts only model artifact types.
-
-{{% alert %}}
-You specify an artifact's type when you create that artifact object. Note the `type` field in `wandb.Artifact()`:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(
- entity = "",
- project = ""
- )
-
-# Create an artifact object
-artifact = wandb.Artifact(
- name="",
- type=""
- )
-```
-{{% /alert %}}
-
-
-When you create a collection, you can select from a list of predefined artifact types. The artifact types available to you depend on the registry that the collection belongs to. .
-
-Before you link an artifact to a collection or create a new collection, [investigate the types of artifacts that collection accepts]({{< relref "#check-the-types-of-artifact-that-a-collection-accepts" >}}).
-
-### Check the types of artifact that a collection accepts
-
-Before you link to a collection, inspect the artifact type that the collection accepts. You can inspect the artifact types that collection accepts programmatically with the W&B Python SDK or interactively with the W&B App
-
-{{% alert %}}
-An error message appears if you try to create link an artifact to a collection that does not accept that artifact type.
-{{% /alert %}}
-
-{{< tabpane text=true >}}
- {{% tab header="W&B App" %}}
-You can find the accepted artifact types on the registry card on the homepage or within a registry's settings page.
-
-For both methods, first navigate to your W&B Registry App.
-
-Within the homepage of the Registry App, you can view the accepted artifact types by scrolling to the registry card of that registry. The gray horizontal ovals within the registry card lists the artifact types that registry accepts.
-
-{{< img src="/images/registry/artifact_types_model_card.png" alt="Artifact types selection" >}}
-
-For example, the preceding image shows multiple registry cards on the Registry App homepage. Within the **Model** registry card, you can see two artifact types: **model** and **model-new**.
-
-
-To view accepted artifact types within a registry's settings page:
-
-1. Click on the registry card you want to view the settings for.
-2. Click on the gear icon in the upper right corner.
-3. Scroll to the **Accepted artifact types** field.
- {{% /tab %}}
- {{% tab header="Python SDK (Beta)" %}}
-Programmatically view the artifact types that a registry accepts with the W&B Python SDK:
-
-```python
-import wandb
-
-registry_name = ""
-artifact_types = wandb.Api().project(name=f"wandb-registry-{registry_name}").artifact_types()
-print(artifact_type.name for artifact_type in artifact_types)
-```
-
-{{% alert %}}
-Note that you do not initialize a run with the proceeding code snippet. This is because it is unnecessary to create a run if you are only querying the W&B API and not tracking an experiment, artifact and so on.
-{{% /alert %}}
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-Once you know what type of artifact a collection accepts, you can [create a collection]({{< relref "#create-a-collection" >}}).
-
-
-## Create a collection
-
-Interactively or programmatically create a collection within a registry. You can not change the type of artifact that a collection accepts after you create it.
-
-### Programmatically create a collection
-
-Use the `wandb.init.link_artifact()` method to link an artifact to a collection. Specify both the collection and the registry to the `target_path` field as a path that takes the form of:
-
-```python
-f"wandb-registry-{registry_name}/{collection_name}"
-```
-
-Where `registry_name` is the name of the registry and `collection_name` is the name of the collection. Ensure to append the prefix `wandb-registry-` to the registry name.
-
-{{% alert %}}
-W&B automatically creates a collection for you if you try to link an artifact to a collection that does not exist. If you specify a collection that does exists, W&B links the artifact to the existing collection.
-{{% /alert %}}
-
-The proceeding code snippet shows how to programmatically create a collection. Ensure to replace other the values enclosed in `<>` with your own:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(entity = "", project = "")
-
-# Create an artifact object
-artifact = wandb.Artifact(
- name = "",
- type = ""
- )
-
-registry_name = ""
-collection_name = ""
-target_path = f"wandb-registry-{registry_name}/{collection_name}"
-
-# Link the artifact to a collection
-run.link_artifact(artifact = artifact, target_path = target_path)
-
-run.finish()
-```
-
-### Interactively create a collection
-
-The following steps describe how to create a collection within a registry using the W&B Registry App UI:
-
-1. Navigate to the **Registry** App in the W&B App UI.
-2. Select a registry.
-3. Click on the **Create collection** button in the upper right hand corner.
-4. Provide a name for your collection in the **Name** field.
-5. Select a type from the **Type** dropdown. Or, if the registry enables custom artifact types, provide one or more artifact types that this collection accepts.
-6. Optionally provide a description of your collection in the **Description** field.
-7. Optionally add one or more tags in the **Tags** field.
-8. Click **Link version**.
-9. From the **Project** dropdown, select the project where your artifact is stored.
-10. From the **Artifact** collection dropdown, select your artifact.
-11. From the **Version** dropdown, select the artifact version you want to link to your collection.
-12. Click on the **Create collection** button.
-
-{{< img src="/images/registry/create_collection.gif" alt="Create a new collection" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/create_registry.md b/content/en/guides/core/registry/create_registry.md
deleted file mode 100644
index 981c1ea089..0000000000
--- a/content/en/guides/core/registry/create_registry.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-menu:
- default:
- identifier: create_registry
- parent: registry
-title: Create a custom registry
-weight: 2
----
-
-A custom registry offers flexibility and control over the artifact types that you can use, allows you to restrict the registry's visibility, and more.
-
-{{% pageinfo color="info" %}}
-See the summary table in [Registry types]({{< relref "registry_types.md#summary" >}}) for a complete comparison of core and custom registries.
-{{% /pageinfo %}}
-
-
-## Create a custom registry
-
-Create a custom registry either programmatically using the Registry App or the W&B Python SDK.
-
-{{< tabpane text=true >}}
- {{% tab header="Registry App" %}}
-
-1. Navigate to the **Registry** App at https://wandb.ai/registry/.
-2. Within **Custom registry**, click on the **Create registry** button.
-3. Provide a name for your registry in the **Name** field.
-4. Optionally provide a description about the registry.
-5. Select who can view the registry from the **Registry visibility** dropdown. See [Registry visibility types]({{< relref "./configure_registry.md#registry-visibility-types" >}}) for more information on registry visibility options.
-6. Select either **All types** or **Specify types** from the **Accepted artifacts type** dropdown.
-7. (If you select **Specify types**) Add one or more artifact types that your registry accepts.
-8. Click on the **Create registry** button.
-
- {{% /tab %}}
- {{% tab header="Python SDK" %}}
-
-Use the [`wandb.Api().create_registry()`]({{< relref "/ref/python/public-api/Api/#method-apicreate_registry" >}}) method to create a custom registry programmatically. Provide a name and [visibility](#visibility-types) for the registry for the `name` and `visibility` parameters, respectively.
-
-Copy and paste the code block below. Replace the values enclosed in `<>` with your own:
-
-```python
-import wandb
-
-registry = wandb.Api().create_registry(
- name="",
- visibility="< 'restricted' | 'organization' >",
-)
-```
-
-See the [`wandb.Api().create_registry()`]({{< relref "/ref/python/public-api/Api/#method-apicreate_registry" >}}) method reference for a full list of parameters that you can provide when you create a custom registry.
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-{{% alert %}}
-An artifact type cannot be removed from a registry once it is saved in the registry's settings.
-{{% /alert %}}
-
-For example, the proceeding image shows a custom registry called `Fine_Tuned_Models` that a user is about to create. The registry is **Restricted** to only members that are manually added to the registry.
-
-{{< img src="/images/registry/create_registry.gif" alt="Creating a new registry" >}}
-
-## Visibility types
-
-The *visibility* of a registry determines who can access that registry. Restricting the visibility of a custom registry helps ensure that only specified members can access that registry.
-
-There are two type registry visibility options for a custom registry:
-
-| Visibility | Description |
-| --- | --- |
-| Restricted | Only invited organization members can access the registry.|
-| Organization | Everyone in the org can access the registry. |
-
-A team administrator or registry administrator can set the visibility of a custom registry.
-
-The user who creates a custom registry with Restricted visibility is added to the registry automatically as its registry admin.
-
-
-## Configure the visibility of a custom registry
-
-A team administrator or registry administrator can assign the visibility of a custom registry during or after the creation of a custom registry.
-
-To restrict the visibility of an existing custom registry:
-
-1. Navigate to the **Registry** App at https://wandb.ai/registry/.
-2. Select a registry.
-3. Click on the gear icon on the upper right hand corner.
-4. From the **Registry visibility** dropdown, select the desired registry visibility.
-5. if you select **Restricted visibility**:
- 1. Add members of your organization that you want to have access to this registry. Scroll to the **Registry members and roles** section and click on the **Add member** button.
- 2. Within the **Member** field, add the email or username of the member you want to add.
- 3. Click **Add new member**.
-
-{{< img src="/images/registry/change_registry_visibility.gif" alt="Changing registry visibility settings from private to public or team-restricted access" >}}
-
-See [Create a custom registry]({{< relref "./create_registry.md#create-a-custom-registry" >}}) for more information on how assign the visibility of a custom registry when a team administrator creates it.
-
diff --git a/content/en/guides/core/registry/delete_registry.md b/content/en/guides/core/registry/delete_registry.md
deleted file mode 100644
index 2b69b45b1d..0000000000
--- a/content/en/guides/core/registry/delete_registry.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-menu:
- default:
- identifier: delete_registry
- parent: registry
-title: Delete registry
-weight: 8
----
-
-This page shows how a Team admin or Registry admin can delete a custom registry. A [core registry]({{< relref "/guides/core/registry/registry_types#core-registry" >}}) cannot be deleted.
-
-- A Team admin can delete any custom registry in the organization.
-- A Registry admin can delete a custom registry that they created.
-
-Deleting a registry also deletes collections that belong to that registry, but does not delete artifacts linked to the registry. Such an artifact remains in the original project that the artifact was logged to.
-
-
-{{< tabpane text=true >}}
-{{% tab header="Python SDK" value="python" %}}
-
-Use the `wandb` API's `delete()` method to delete a registry programmatically. The following example illustrates how to:
-
-1. Fetch the registry you want to delete with `api.registry()`.
-1. Call the `delete()` method on the returned registry object to delete the registry.
-
-```python
-import wandb
-
-# Initialize the W&B API
-api = wandb.Api()
-
-# Fetch the registry you want to delete
-fetched_registry = api.registry("")
-
-# Deleting a registry
-fetched_registry.delete()
-```
-
-{{% /tab %}}
-
-{{% tab header="W&B App" value="app" %}}
-
-1. Navigate to the **Registry** App at https://wandb.ai/registry/.
-2. Select the custom registry you want to delete.
-3. Click the gear icon in the upper right corner to view the registry's settings.
-4. To delete the registry, click the trash can icon in the upper right corner of the settings page.
-5. Confirm the registry to delete by entering its name in the modal that appears, then click **Delete**.
-
-{{% /tab %}}
-{{< /tabpane >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/download_use_artifact.md b/content/en/guides/core/registry/download_use_artifact.md
deleted file mode 100644
index c3b7688550..0000000000
--- a/content/en/guides/core/registry/download_use_artifact.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-menu:
- default:
- identifier: download_use_artifact
- parent: registry
-title: Download an artifact from a registry
-weight: 6
----
-
-Use the W&B Python SDK to download an artifact linked to a registry. To download and use an artifact, you need to know the name of the registry, the name of the collection, and the alias or index of the artifact version you want to download.
-
-Once you know the properties of the artifact, you can [construct the path to the linked artifact]({{< relref "#construct-path-to-linked-artifact" >}}) and download the artifact. Alternatively, you can [copy and paste a pre-generated code snippet]({{< relref "#copy-and-paste-pre-generated-code-snippet" >}}) from the W&B App UI to download an artifact linked to a registry.
-
-
-## Construct path to linked artifact
-
-To download an artifact linked to a registry, you must know the path of that linked artifact. The path consists of the registry name, collection name, and the alias or index of the artifact version you want to access.
-
-Once you have the registry, collection, and alias or index of the artifact version, you can construct the path to the linked artifact using the proceeding string template:
-
-```python
-# Artifact name with version index specified
-f"wandb-registry-{REGISTRY}/{COLLECTION}:v{INDEX}"
-
-# Artifact name with alias specified
-f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"
-```
-
-Replace the values within the curly braces `{}` with the name of the registry, collection, and the alias or index of the artifact version you want to access.
-
-{{% alert %}}
-Specify `model` or `dataset` to link an artifact version to the core Model registry or the core Dataset registry, respectively.
-{{% /alert %}}
-
-Use the `wandb.init.use_artifact` method to access the artifact and download its contents once you have the path of the linked artifact. The proceeding code snippet shows how to use and download an artifact linked to the W&B Registry. Ensure to replace values within `<>` with your own:
-
-```python
-import wandb
-
-REGISTRY = ''
-COLLECTION = ''
-ALIAS = ''
-
-run = wandb.init(
- entity = '',
- project = ''
- )
-
-artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"
-# artifact_name = '' # Copy and paste Full name specified on the Registry App
-fetched_artifact = run.use_artifact(artifact_or_name = artifact_name)
-download_path = fetched_artifact.download()
-```
-
-The `.use_artifact()` method both creates a [run]({{< relref "/guides/models/track/runs/" >}}) and marks the artifact you download as the input to that run.
-Marking an artifact as the input to a run enables W&B to track the lineage of that artifact.
-
-If you do not want to create a run, you can use the `wandb.Api()` object to access the artifact:
-
-```python
-import wandb
-
-REGISTRY = ""
-COLLECTION = ""
-VERSION = ""
-
-api = wandb.Api()
-artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}"
-artifact = api.artifact(name = artifact_name)
-```
-
-
-Example: Use and download an artifact linked to the W&B Registry
-
-The proceeding code example shows how a user can download an artifact linked to a collection called `phi3-finetuned` in the **Fine-tuned Models** registry. The alias of the artifact version is set to `production`.
-
-```python
-import wandb
-
-TEAM_ENTITY = "product-team-applications"
-PROJECT_NAME = "user-stories"
-
-REGISTRY = "Fine-tuned Models"
-COLLECTION = "phi3-finetuned"
-ALIAS = 'production'
-
-# Initialize a run inside the specified team and project
-run = wandb.init(entity=TEAM_ENTITY, project = PROJECT_NAME)
-
-artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"
-
-# Access an artifact and mark it as input to your run for lineage tracking
-fetched_artifact = run.use_artifact(artifact_or_name = name)
-
-# Download artifact. Returns path to downloaded contents
-downloaded_path = fetched_artifact.download()
-```
-
-
-
-
-See [`use_artifact`]({{< relref "/ref/python/experiments/run.md#use_artifact" >}}) and [`Artifact.download()`]({{< relref "/ref/python/experiments/artifact.md#download" >}}) in the API Reference for parameters and return type.
-
-{{% alert title="Users with a personal entity that belong to multiple organizations" %}}
-Users with a personal entity that belong to multiple organizations must also specify either the name of their organization or use a team entity when accessing artifacts linked to a registry.
-
-```python
-import wandb
-
-REGISTRY = ""
-COLLECTION = ""
-VERSION = ""
-
-# Ensure you are using your team entity to instantiate the API
-api = wandb.Api(overrides={"entity": ""})
-artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}"
-artifact = api.artifact(name = artifact_name)
-
-# Use org display name or org entity in the path
-api = wandb.Api()
-artifact_name = f"{ORG_NAME}/wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}"
-artifact = api.artifact(name = artifact_name)
-```
-
-Where the `ORG_NAME` is the display name of your organization. Multi-tenant SaaS users can find the name of their organization in the organization's settings page at `https://wandb.ai/account-settings/`. Dedicated Cloud and Self-Managed users, contact your account administrator to confirm your organization's display name.
-{{% /alert %}}
-
-## Copy and paste pre-generated code snippet
-
-W&B creates a code snippet that you can copy and paste into your Python script, notebook, or terminal to download an artifact linked to a registry.
-
-1. Navigate to the Registry App.
-2. Select the name of the registry that contains your artifact.
-3. Select the name of the collection.
-4. From the list of artifact versions, select the version you want to access.
-5. Select the **Usage** tab.
-6. Copy the code snippet shown in the **Usage API** section.
-7. Paste the code snippet into your Python script, notebook, or terminal.
-
-{{< img src="/images/registry/find_usage_in_registry_ui.gif" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/lineage.md b/content/en/guides/core/registry/lineage.md
deleted file mode 100644
index 202d7f3dd2..0000000000
--- a/content/en/guides/core/registry/lineage.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-description: Create a lineage map in the W&B Registry.
-menu:
- default:
- parent: registry
- identifier: lineage
-title: Create and view lineage maps
-weight: 8
----
-
-Within a collection in the W&B Registry, you can view a history of the artifacts that an ML experiment uses. This history is called a _lineage graph_.
-
-{{% pageinfo color="info" %}}
-You can also view lineage graphs for artifacts you log to W&B that are not part of a collection.
-{{% /pageinfo %}}
-
-Lineage graphs can show the specific run that logs an artifact. In addition, lineage graphs can also show which run used an artifact as an input. In other words, lineage graphs can show the input and output of a run.
-
-
-For example, the proceeding image shows artifacts created and used throughout an ML experiment:
-
-{{< img src="/images/registry/registry_lineage.png" alt="Registry lineage" >}}
-
-From left to right, the image shows:
-1. Multiple runs log the `split_zoo_dataset:v4` artifact.
-2. The "rural-feather-20" run uses the `split_zoo_dataset:v4` artifact for training.
-3. The output of the "rural-feather-20" run is a model artifact called `zoo-ylbchv20:v0`.
-4. A run called "northern-lake-21" uses the model artifact `zoo-ylbchv20:v0` to evaluate the model.
-
-
-## Track the input of a run
-
-Mark an artifact as an input or dependency of a run with the `wandb.init.use_artifact` API.
-
-The proceeding code snippet shows how to use the `use_artifact`. Replace values enclosed in angle brackets (`< >`) with your values:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(project="", entity="")
-
-# Get artifact, mark it as a dependency
-artifact = run.use_artifact(artifact_or_name="", aliases="")
-```
-
-
-## Track the output of a run
-
-Use ([`wandb.init.log_artifact`]({{< relref "/ref/python/experiments/run.md#log_artifact" >}})) to declare an artifact as an output of a run.
-
-The proceeding code snippet shows how to use the `wandb.init.log_artifact` API. Ensure to replace values enclosed in angle brackets (`< >`) with your values:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(entity "", project = "",)
-artifact = wandb.Artifact(name = "", type = "")
-artifact.add_file(local_path = "", name="")
-
-# Log the artifact as an output of the run
-run.log_artifact(artifact_or_path = artifact)
-```
-
-For more information on about creating artifacts, see [Create an artifact]({{< relref "guides/core/artifacts/construct-an-artifact.md" >}}).
-
-
-## View lineage graphs in a collection
-
-View the lineage of an artifact linked to a collection in the W&B Registry.
-
-1. Navigate to the W&B Registry.
-2. Select the collection that contains the artifact.
-3. From the dropdown, click the artifact version you want to view its lineage graph.
-4. Select the "Lineage" tab.
-
-
-Once you are in an artifact's lineage graph page, you can view additional information about any node in that lineage graph.
-
-Select a run node to view that run's details, such as the run's ID, the run's name, the run's state, and more. As an example, the proceeding image shows information about the `rural-feather-20` run:
-
-{{< img src="/images/registry/lineage_expanded_node.png" alt="Expanded lineage node" >}}
-
-Select an artifact node to view that artifact's details, such as its full name, type, creation time, and associated aliases.
-
-{{< img src="/images/registry/lineage_expanded_artifact_node.png" alt="Expanded artifact node details" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/link_version.md b/content/en/guides/core/registry/link_version.md
deleted file mode 100644
index 33c7c409db..0000000000
--- a/content/en/guides/core/registry/link_version.md
+++ /dev/null
@@ -1,226 +0,0 @@
----
-menu:
- default:
- identifier: link_version
- parent: registry
-title: Link an artifact version to a registry
-weight: 5
----
-
-Link artifact versions to a collection to make them available to other members in your organization.
-
-When you link an artifact to a registry, this "publishes" that artifact to that registry. Any user that has access to that registry can access the linked artifact versions in the collection.
-
-In other words, linking an artifact to a registry collection brings that artifact version from a private, project-level scope, to a shared organization level scope.
-
-{{% alert %}}
-The term "type" refers to the artifact object's type. When you create an artifact object ([`wandb.Artifact`]({{< relref "/ref/python/experiments/artifact.md" >}})), or log an artifact ([`wandb.init.log_artifact`]({{< relref "/ref/python/experiments/run.md#log_artifact" >}})), you specify a type for the `type` parameter.
-
-{{% /alert %}}
-
-## Link an artifact to a collection
-
-Link an artifact version to a collection interactively or programmatically.
-
-{{% alert %}}
-Before you link an artifact to a registry, check the types of artifacts that collection permits. For more information about collection types, see "Collection types" within [Create a collection]({{< relref "./create_collection.md" >}}).
-{{% /alert %}}
-
-Based on your use case, follow the instructions described in the tabs below to link an artifact version.
-
-{{% alert %}}
-If an artifact version logs metrics (such as by using `run.log_artifact()`), you can view metrics for that version from its details page, and you can compare metrics across artifact versions from the artifact's page. Refer to [View linked artifacts in a registry]({{< relref "#view-linked-artifacts-in-a-registry" >}}).
-{{% /alert %}}
-
-{{< tabpane text=true >}}
- {{% tab header="Python SDK" %}}
-{{% alert %}}
-Watch a [video demonstrating linking a version](https://www.youtube.com/watch?v=2i_n1ExgO0A) (8 min).
-{{% /alert %}}
-
-Programmatically link an artifact version to a collection with [`wandb.init.Run.link_artifact()`]({{< relref "/ref/python/experiments/run.md#link_artifact" >}}).
-
-{{% alert %}}
-Before you link an artifact to a collection, ensure that the registry that the collection belongs to already exists. To check that the registry exists, navigate to the Registry app on the W&B App UI and search for the name of the registry.
-{{% /alert %}}
-
-Use the `target_path` parameter to specify the collection and registry you want to link the artifact version to. The target path consists of the prefix "wandb-registry", the name of the registry, and the name of the collection separated by a forward slashes:
-
-```text
-wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}
-```
-
-Copy and paste the code snippet below to link an artifact version to a collection within an existing registry. Replace values enclosed in `<>` with your own:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(
- entity = "",
- project = ""
-)
-
-# Create an artifact object
-# The type parameter specifies both the type of the
-# artifact object and the collection type
-artifact = wandb.Artifact(name = "", type = "")
-
-# Add the file to the artifact object.
-# Specify the path to the file on your local machine.
-artifact.add_file(local_path = "")
-
-# Specify the collection and registry to link the artifact to
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-target_path=f"wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"
-
-# Link the artifact to the collection
-run.link_artifact(artifact = artifact, target_path = target_path)
-```
-{{% alert %}}
-If you want to link an artifact version to the Model registry or the Dataset registry, set the artifact type to `"model"` or `"dataset"`, respectively.
-{{% /alert %}}
-
- {{% /tab %}}
- {{% tab header="Registry App" %}}
-1. Navigate to the Registry App.
- {{< img src="/images/registry/navigate_to_registry_app.png" alt="Registry App navigation" >}}
-2. Hover your mouse next to the name of the collection you want to link an artifact version to.
-3. Select the meatball menu icon (three horizontal dots) next to **View details**.
-4. From the dropdown, select **Link new version**.
-5. From the sidebar that appears, select the name of a team from the **Team** dropdown.
-5. From the **Project** dropdown, select the name of the project that contains your artifact.
-6. From the **Artifact** dropdown, select the name of the artifact.
-7. From the **Version** dropdown, select the artifact version you want to link to the collection.
-
-
- {{% /tab %}}
- {{% tab header="Artifact browser" %}}
-1. Navigate to your project's artifact browser on the W&B App at: `https://wandb.ai///artifacts`
-2. Select the Artifacts icon on the left sidebar.
-3. Click on the artifact version you want to link to your registry.
-4. Within the **Version overview** section, click the **Link to registry** button.
-5. From the modal that appears on the right of the screen, select an artifact from the **Select a register model** menu dropdown.
-6. Click **Next step**.
-7. (Optional) Select an alias from the **Aliases** dropdown.
-8. Click **Link to registry**.
-
-
-
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-
-
-View a linked artifact's metadata, version data, usage, lineage information and more in the Registry App.
-
-## View linked artifacts in a registry
-
-View information about linked artifacts such as metadata, lineage, and usage information in the Registry App.
-
-1. Navigate to the Registry App.
-2. Select the name of the registry that you linked the artifact to.
-3. Select the name of the collection.
-4. If the collection's artifacts log metrics, compare metrics across versions by clicking **Show metrics**.
-4. From the list of artifact versions, select the version you want to access. Version numbers are incrementally assigned to each linked artifact version starting with `v0`.
-5. To view details about an artifact version, click the version. From the tabs in this page, you can view that version's metadata (including logged metrics), lineage, and usage information.
-
-Make note of the **Full Name** field within the **Version** tab. The full name of a linked artifact consists of the registry, collection name, and the alias or index of the artifact version.
-
-```text title="Full name of a linked artifact"
-wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER}
-```
-
-You need the full name of a linked artifact to access the artifact version programmatically.
-
-## Troubleshooting
-
-Below are some common things to double check if you are not able to link an artifact.
-
-### Logging artifacts from a personal account
-
-Artifacts logged to W&B with a personal entity can not be linked to the registry. Make sure that you log artifacts using a team entity within your organization. Only artifacts logged within an organization's team can be linked to the organization's registry.
-
-
-{{% alert title="" %}}
-Ensure that you log an artifact with a team entity if you want to link that artifact to a registry.
-{{% /alert %}}
-
-
-#### Find your team entity
-
-W&B uses the name of your team as the team's entity. For example, if your team is called **team-awesome**, your team entity is `team-awesome`.
-
-You can confirm the name of your team by:
-
-1. Navigate to your team's W&B profile page.
-2. Copy the site's URL. It has the form of `https://wandb.ai/`. Where `` is the both the name of your team and the team's entity.
-
-#### Log from a team entity
-1. Specify the team as the entity when you initialize a run with [`wandb.init()`]({{< relref "/ref/python/functions/init.md" >}}). If you do not specify the `entity` when you initialize a run, the run uses your default entity which may or may not be your team entity.
-
- ```python
- import wandb
-
- run = wandb.init(
- entity='',
- project=''
- )
- ```
-
-2. Log the artifact to the run either with run.log_artifact or by creating an Artifact object and then adding files to it with:
-
- ```python
- artifact = wandb.Artifact(name="", type="")
- ```
- To log artifacts, see [Construct artifacts]({{< relref "/guides/core/artifacts/construct-an-artifact.md" >}}).
-3. If an artifact is logged to your personal entity, you will need to re-log it to an entity within your organization.
-
-### Confirm the path of a registry in the W&B App UI
-
-There are two ways to confirm the path of a registry with the UI: create an empty collection and view the collection details or copy and paste the autogenerated code on the collection's homepage.
-
-#### Copy and paste autogenerated code
-
-1. Navigate to the Registry app at https://wandb.ai/registry/.
-2. Click the registry you want to link an artifact to.
-3. At the top of the page, you will see an autogenerated code block.
-4. Copy and paste this into your code, ensure to replace the last part of the path with the name of your collection.
-
-{{< img src="/images/registry/get_autogenerated_code.gif" alt="Auto-generated code snippet" >}}
-
-#### Create an empty collection
-
-1. Navigate to the Registry app at https://wandb.ai/registry/.
-2. Click the registry you want to link an artifact to.
-4. Click on the empty collection. If an empty collection does not exist, create a new collection.
-5. Within the code snippet that appears, identify the `target_path` field within `.link_artifact()`.
-6. (Optional) Delete the collection.
-
-{{< img src="/images/registry/check_empty_collection.gif" alt="Create an empty collection" >}}
-
-For example, after completing the steps outlined, you find the code block with the `target_path` parameter:
-
-```python
-target_path =
- "smle-registries-bug-bash/wandb-registry-Golden Datasets/raw_images"
-```
-
-Breaking this down into its components, you can see what you will need to use to create the path to link your artifact programmatically:
-
-```python
-ORG_ENTITY_NAME = "smle-registries-bug-bash"
-REGISTRY_NAME = "Golden Datasets"
-COLLECTION_NAME = "raw_images"
-```
-
-{{% alert %}}
-Ensure that you replace the name of the collection from the temporary collection with the name of the collection that you want to link your artifact to.
-{{% /alert %}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/_index.md b/content/en/guides/core/registry/model_registry/_index.md
deleted file mode 100644
index f6811d0154..0000000000
--- a/content/en/guides/core/registry/model_registry/_index.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-description: Model registry to manage the model lifecycle from training to production
-menu:
- default:
- identifier: model-registry
- parent: registry
-title: Model registry
-weight: 9
-url: guides/registry/model_registry
-cascade:
-- url: guides/registry/model_registry/:filename
----
-
-{{% alert %}}
-W&B will eventually stop supporting W&B Model Registry. Users are encouraged to instead use [W&B Registry]({{< relref "/guides/core/registry/" >}}) for linking and sharing their model artifacts versions. W&B Registry broadens the capabilities of the legacy W&B Model Registry. For more information about W&B Registry, see the [Registry docs]({{< relref "/guides/core/registry/" >}}).
-
-
-W&B will migrate existing model artifacts linked to the legacy Model Registry to the new W&B Registry in the near future. See [Migrating from legacy Model Registry]({{< relref "/guides/core/registry/model_registry_eol.md" >}}) for information about the migration process.
-{{% /alert %}}
-
-The W&B Model Registry houses a team's trained models where ML Practitioners can publish candidates for production to be consumed by downstream teams and stakeholders. It is used to house staged/candidate models and manage workflows associated with staging.
-
-{{< img src="/images/models/model_reg_landing_page.png" alt="Model Registry" >}}
-
-With W&B Model Registry, you can:
-
-* [Bookmark your best model versions for each machine learning task.]({{< relref "./link-model-version.md" >}})
-* [Automate]({{< relref "/guides/core/automations/" >}}) downstream processes and model CI/CD.
-* Move model versions through its ML lifecycle; from staging to production.
-* Track a model's lineage and audit the history of changes to production models.
-
-{{< img src="/images/models/models_landing_page.png" alt="Models overview" >}}
-
-## How it works
-Track and manage your staged models with a few simple steps.
-
-1. **Log a model version**: In your training script, add a few lines of code to save the model files as an artifact to W&B.
-2. **Compare performance**: Check live charts to compare the metrics and sample predictions from model training and validation. Identify which model version performed the best.
-3. **Link to registry**: Bookmark the best model version by linking it to a registered model, either programmatically in Python or interactively in the W&B UI.
-
-The following code snippet demonstrates how to log and link a model to the Model Registry:
-
-```python
-import wandb
-import random
-
-# Start a new W&B run
-run = wandb.init(project="models_quickstart")
-
-# Simulate logging model metrics
-run.log({"acc": random.random()})
-
-# Create a simulated model file
-with open("my_model.h5", "w") as f:
- f.write("Model: " + str(random.random()))
-
-# Log and link the model to the Model Registry
-run.link_model(path="./my_model.h5", registered_model_name="MNIST")
-
-run.finish()
-```
-
-4. **Connect model transitions to CI/CD workflows**: transition candidate models through workflow stages and [automate downstream actions]({{< relref "/guides/core/automations/" >}}) with webhooks.
-
-
-## How to get started
-Depending on your use case, explore the following resources to get started with W&B Models:
-
-* Check out the two-part video series:
- 1. [Logging and registering models](https://www.youtube.com/watch?si=MV7nc6v-pYwDyS-3&v=ZYipBwBeSKE&feature=youtu.be)
- 2. [Consuming models and automating downstream processes](https://www.youtube.com/watch?v=8PFCrDSeHzw) in the Model Registry.
-* Read the [models walkthrough]({{< relref "./walkthrough.md" >}}) for a step-by-step outline of the W&B Python SDK commands you could use to create, track, and use a dataset artifact.
-* Learn about:
- * [Protected models and access control]({{< relref "./access_controls.md" >}}).
- * [How to connect Registry to CI/CD processes]({{< relref "/guides/core/automations/" >}}).
- * Set up [Slack notifications]({{< relref "./notifications.md" >}}) when a new model version is linked to a registered model.
-* Review [What is an ML Model Registry?](https://wandb.ai/wandb_fc/model-registry-reports/reports/What-is-an-ML-Model-Registry---Vmlldzo1MTE5MjYx) to learn how to integrate Model Registry into your ML workflow.
-* Take the W&B [Enterprise Model Management](https://www.wandb.courses/courses/enterprise-model-management) course and learn how to:
- * Use the W&B Model Registry to manage and version your models, track lineage, and promote models through different lifecycle stages
- * Automate your model management workflows using webhooks.
- * See how the Model Registry integrates with external ML systems and tools in your model development lifecycle for model evaluation, monitoring, and deployment.
diff --git a/content/en/guides/core/registry/model_registry/access_controls.md b/content/en/guides/core/registry/model_registry/access_controls.md
deleted file mode 100644
index 2542702c60..0000000000
--- a/content/en/guides/core/registry/model_registry/access_controls.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-description: Use model registry role based access controls (RBAC) to control who can
- update protected aliases.
-menu:
- default:
- identifier: access_controls
- parent: model-registry
-title: Manage data governance and access control
-weight: 10
----
-
-Use *protected aliases* to represent key stages of your model development pipeline. Only *Model Registry Administrators* can add, modify, or remove protected aliases. Model registry admins can define and use protected aliases. W&B blocks non admin users from adding or removing protected aliases from model versions.
-
-{{% alert %}}
-Only Team admins or current registry admins can manage the list of registry admins.
-{{% /alert %}}
-
-For example, suppose you set `staging` and `production` as protected aliases. Any member of your team can add new model versions. However, only admins can add a `staging` or `production` alias.
-
-
-## Set up access control
-The following steps describe how to set up access controls for your team’s model registry.
-
-1. Navigate to the [W&B Model Registry app](https://wandb.ai/registry/model).
-2. Select the gear button on the top right of the page.
-{{< img src="/images/models/rbac_gear_button.png" alt="Registry settings gear" >}}
-3. Select the **Manage registry admins** button.
-4. Within the **Members** tab, select the users you want to grant access to add and remove protected aliases from model versions.
-{{< img src="/images/models/access_controls_admins.gif" alt="Managing registry admins" >}}
-
-
-## Add protected aliases
-1. Navigate to the [W&B Model Registry app](https://wandb.ai/registry/model).
-2. Select the gear button on the top right of the page.
-{{< img src="/images/models/rbac_gear_button.png" alt="Registry settings gear button" >}}
-3. Scroll down to the **Protected Aliases** section.
-4. Click on the plus icon (**+**) icon to add new a new alias.
-{{< img src="/images/models/access_controls_add_protected_aliases.gif" alt="Adding protected aliases" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/consume-models.md b/content/en/guides/core/registry/model_registry/consume-models.md
deleted file mode 100644
index 6ab2be8953..0000000000
--- a/content/en/guides/core/registry/model_registry/consume-models.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-description: How to download a model with W&B Python SDK
-menu:
- default:
- identifier: consume-models
- parent: model-registry
-title: Download a model version
-weight: 8
----
-
-Use the W&B Python SDK to download a model artifact that you linked to the Model Registry.
-
-{{% alert %}}
-You are responsible for providing additional Python functions, API calls to reconstruct, deserialize your model into a form that you can work with.
-
-W&B suggests that you document information on how to load models into memory with model cards. For more information, see the [Document machine learning models]({{< relref "./create-model-cards.md" >}}) page.
-{{% /alert %}}
-
-
-Replace values within `<>` with your own:
-
-```python
-import wandb
-
-# Initialize a run
-run = wandb.init(project="", entity="")
-
-# Access and download model. Returns path to downloaded artifact
-downloaded_model_path = run.use_model(name="")
-```
-
-Reference a model version with one of following formats listed:
-
-* `latest` - Use `latest` alias to specify the model version that is most recently linked.
-* `v#` - Use `v0`, `v1`, `v2`, and so on to fetch a specific version in the Registered Model
-* `alias` - Specify the custom alias that you and your team assigned to your model version
-
-See [`use_model`]({{< relref "/ref/python/experiments/run.md#use_model" >}}) in the API Reference guide for more information on possible parameters and return type.
-
-
-Example: Download and use a logged model
-
-For example, in the proceeding code snippet a user called the `use_model` API. They specified the name of the model artifact they want to fetch and they also provided a version/alias. They then stored the path that returned from the API to the `downloaded_model_path` variable.
-
-```python
-import wandb
-
-entity = "luka"
-project = "NLP_Experiments"
-alias = "latest" # semantic nickname or identifier for the model version
-model_artifact_name = "fine-tuned-model"
-
-# Initialize a run
-run = wandb.init()
-# Access and download model. Returns path to downloaded artifact
-
-downloaded_model_path = run.use_model(name=f"{entity/project/model_artifact_name}:{alias}")
-```
-
-
-
-{{% alert title="Planned deprecation for W&B Model Registry in 2024" %}}
-The proceeding tabs demonstrate how to consume model artifacts using the soon to be deprecated Model Registry.
-
-Use the W&B Registry to track, organize and consume model artifacts. For more information see the [Registry docs]({{< relref "/guides/core/registry/" >}}).
-{{% /alert %}}
-
-{{< tabpane text=true >}}
- {{% tab header="CLI" %}}
-Replace values within `<>` with your own:
-```python
-import wandb
-# Initialize a run
-run = wandb.init(project="", entity="")
-# Access and download model. Returns path to downloaded artifact
-downloaded_model_path = run.use_model(name="")
-```
-Reference a model version with one of following formats listed:
-
-* `latest` - Use `latest` alias to specify the model version that is most recently linked.
-* `v#` - Use `v0`, `v1`, `v2`, and so on to fetch a specific version in the Registered Model
-* `alias` - Specify the custom alias that you and your team assigned to your model version
-
-See [`use_model`]({{< relref "/ref/python/experiments/run.md#use_model" >}}) in the API Reference guide for parameters and return type.
- {{% /tab %}}
- {{% tab header="W&B App" %}}
-1. Navigate to the [Model Registry App](https://wandb.ai/registry/model).
-2. Select **View details** next to the name of the registered model that contains the model you want to download.
-3. Within the Versions section, select the View button next to the model version you want to download.
-4. Select the **Files** tab.
-5. Click on the download button next to the model file you want to download.
-{{< img src="/images/models/download_model_ui.gif" alt="Download model from UI" >}}
- {{% /tab %}}
-{{< /tabpane >}}
-
diff --git a/content/en/guides/core/registry/model_registry/create-model-cards.md b/content/en/guides/core/registry/model_registry/create-model-cards.md
deleted file mode 100644
index 0de8d46b60..0000000000
--- a/content/en/guides/core/registry/model_registry/create-model-cards.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-description: Add descriptions to model card to document your model
-menu:
- default:
- identifier: create-model-cards
- parent: model-registry
-title: Document machine learning model
-weight: 8
----
-
-Add a description to the model card of your registered model to document aspects of your machine learning model. Some topics worth documenting include:
-
-* **Summary**: A summary of what the model is. The purpose of the model. The machine learning framework the model uses, and so forth.
-* **Training data**: Describe the training data used, processing done on the training data set, where is that data stored and so forth.
-* **Architecture**: Information about the model architecture, layers, and any specific design choices.
-* **Deserialize the model**: Provide information on how someone on your team can load the model into memory.
-* **Task**: The specific type of task or problem that the machine learning model is designed to perform. It's a categorization of the model's intended capability.
-* **License**: The legal terms and permissions associated with the use of the machine learning model. It helps model users understand the legal framework under which they can utilize the model.
-* **References**: Citations or references to relevant research papers, datasets, or external resources.
-* **Deployment**: Details on how and where the model is deployed and guidance on how the model is integrated into other enterprise systems, such as a workflow orchestration platforms.
-
-## Add a description to the model card
-
-1. Navigate to the [W&B Model Registry app](https://wandb.ai/registry/model).
-2. Select **View details** next to the name of the registered model you want to create a model card for.
-2. Go to the **Model card** section.
-{{< img src="/images/models/model_card_example.png" alt="Model card example" >}}
-3. Within the **Description** field, provide information about your machine learning model. Format text within a model card with [Markdown markup language](https://www.markdownguide.org/).
-
-For example, the following images shows the model card of a **Credit-card Default Prediction** registered model.
-{{< img src="/images/models/model_card_credit_example.png" alt="Model card credit scoring" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/create-registered-model.md b/content/en/guides/core/registry/model_registry/create-registered-model.md
deleted file mode 100644
index c063151824..0000000000
--- a/content/en/guides/core/registry/model_registry/create-registered-model.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-description: Create a registered model to hold all the candidate models for your modeling
- tasks.
-menu:
- default:
- identifier: create-registered-model
- parent: model-registry
-title: Create a registered model
-weight: 4
----
-
-
-Create a [registered model]({{< relref "./model-management-concepts.md#registered-model" >}}) to hold all the candidate models for your modeling tasks. You can create a registered model interactively within the Model Registry or programmatically with the Python SDK.
-
-## Programmatically create registered a model
-Programmatically register a model with the W&B Python SDK. W&B automatically creates a registered model for you if the registered model doesn't exist.
-
-Ensure to replace other the values enclosed in `<>` with your own:
-
-```python
-import wandb
-
-run = wandb.init(entity="", project="")
-run.link_model(path="", registered_model_name="")
-run.finish()
-```
-
-The name you provide for `registered_model_name` is the name that appears in the [Model Registry App](https://wandb.ai/registry/model).
-
-## Interactively create a registered model
-Interactively create a registered model within the [Model Registry App](https://wandb.ai/registry/model).
-
-1. Navigate to the [Model Registry App](https://wandb.ai/registry/model).
-{{< img src="/images/models/create_registered_model_1.png" alt="Model Registry landing page" >}}
-2. Click the **New registered model** button located in the top right of the Model Registry page.
-{{< img src="/images/models/create_registered_model_model_reg_app.png" alt="New registered model button" >}}
-3. From the panel that appears, select the entity you want the registered model to belong to from the **Owning Entity** dropdown.
-{{< img src="/images/models/create_registered_model_3.png" alt="Model creation form" >}}
-4. Provide a name for your model in the **Name** field.
-5. From the **Type** dropdown, select the type of artifacts to link to the registered model.
-6. (Optional) Add a description about your model in the **Description** field.
-7. (Optional) Within the **Tags** field, add one or more tags.
-8. Click **Register model**.
-
-
-{{% alert %}}
-Manual linking a model to the model registry is useful for one-off models. However, it is often useful to [programmatically link model versions to the model registry]({{< relref "link-model-version#programmatically-link-a-model" >}}).
-
-For example, suppose you have a nightly job. It is tedious to manually link a model created each night. Instead, you could create a script that evaluates the model, and if the model improves in performance, link that model to the model registry with the W&B Python SDK.
-{{% /alert %}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/link-model-version.md b/content/en/guides/core/registry/model_registry/link-model-version.md
deleted file mode 100644
index ed6aadf7be..0000000000
--- a/content/en/guides/core/registry/model_registry/link-model-version.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-description: Link a model version to a registered model with the W&B App or programmatically
- with the Python SDK.
-menu:
- default:
- identifier: link-model-version
- parent: model-registry
-title: Link a model version
-weight: 5
----
-
-
-Link a model version to a registered model with the W&B App or programmatically with the Python SDK.
-
-## Programmatically link a model
-
-Use the [`link_model`]({{< relref "/ref/python/experiments/run.md#link_model" >}}) method to programmatically log model files to a W&B run and link it to the [W&B Model Registry]({{< relref "./" >}}).
-
-Ensure to replace other the values enclosed in `<>` with your own:
-
-```python
-import wandb
-
-run = wandb.init(entity="", project="")
-run.link_model(path="", registered_model_name="")
-run.finish()
-```
-
-W&B creates a registered model for you if the name you specify for the `registered-model-name` parameter does not already exist.
-
-For example, suppose you have an existing registered model named "Fine-Tuned-Review-Autocompletion"(`registered-model-name="Fine-Tuned-Review-Autocompletion"`) in your Model Registry. And suppose that a few model versions are linked to it: `v0`, `v1`, `v2`. If you programmatically link a new model and use the same registered model name (`registered-model-name="Fine-Tuned-Review-Autocompletion"`), W&B links this model to the existing registered model and assigns it a model version `v3`. If no registered model with this name exists, a new one registered model is created and it will have a model version `v0`.
-
-See an example ["Fine-Tuned-Review-Autocompletion" registered model here](https://wandb.ai/reviewco/registry/model?selectionPath=reviewco%2Fmodel-registry%2FFinetuned-Review-Autocompletion&view=all-models).
-
-## Interactively link a model
-Interactively link a model with the Model Registry or with the Artifact browser.
-
-{{< tabpane text=true >}}
- {{% tab header="Model Registry" %}}
-1. Navigate to the [Model Registry App](https://wandb.ai/registry/model).
-2. Hover your mouse next to the name of the registered model you want to link a new model to.
-3. Select the meatball menu icon (three horizontal dots) next to **View details**.
-4. From the dropdown, select **Link new version**.
-5. From the **Project** dropdown, select the name of the project that contains your model.
-6. From the **Model Artifact** dropdown, select the name of the model artifact.
-7. From the **Version** dropdown, select the model version you want to link to the registered model.
-
-{{< img src="/images/models/link_model_wmodel_reg.gif" alt="Linking model version to registry" >}}
- {{% /tab %}}
- {{% tab header="Artifact browser" %}}
-1. Navigate to your project's artifact browser on the W&B App at: `https://wandb.ai///artifacts`
-2. Select the Artifacts icon on the left sidebar.
-3. Click on the model version you want to link to your registry.
-4. Within the **Version overview** section, click the **Link to registry** button.
-5. From the modal that appears on the right of the screen, select a registered model from the **Select a register model** menu dropdown.
-6. Click **Next step**.
-7. (Optional) Select an alias from the **Aliases** dropdown.
-8. Click **Link to registry**.
-
-{{< img src="/images/models/manual_linking.gif" alt="Manual model linking" >}}
- {{% /tab %}}
-{{< /tabpane >}}
-
-
-
-## View the source of linked models
-
-There are two ways to view the source of linked models: The artifact browser within the project that the model is logged to and the W&B Model Registry.
-
-A pointer connects a specific model version in the model registry to the source model artifact (located within the project the model is logged to). The source model artifact also has a pointer to the model registry.
-
-{{< tabpane text=true >}}
- {{% tab header="Model Registry" %}}
-1. Navigate to your [Model Registry App](https://wandb.ai/registry/model).
-{{< img src="/images/models/create_registered_model_1.png" alt="Create registered model" >}}
-2. Select **View details** next the name of your registered model.
-3. Within the **Versions** section, select **View** next to the model version you want to investigate.
-4. Click on the **Version** tab within the right panel.
-5. Within the **Version overview** section there is a row that contains a **Source Version** field. The **Source Version** field shows both the name of the model and the model's version.
-
-For example, the following image shows a `v0` model version called `mnist_model` (see **Source version** field `mnist_model:v0`), linked to a registered model called `MNIST-dev`.
-
-{{< img src="/images/models/view_linked_model_registry.png" alt="Linked model in registry" >}}
- {{% /tab %}}
- {{% tab header="Artifact browser" %}}
-1. Navigate to your project's artifact browser on the W&B App at: `https://wandb.ai///artifacts`
-2. Select the Artifacts icon on the left sidebar.
-3. Expand the **model** dropdown menu from the Artifacts panel.
-4. Select the name and version of the model linked to the model registry.
-5. Click on the **Version** tab within the right panel.
-6. Within the **Version overview** section there is a row that contains a **Linked To** field. The **Linked To** field shows both the name of the registered model and the version it possesses(`registered-model-name:version`).
-
-For example, in the following image, there is a registered model called `MNIST-dev` (see the **Linked To** field). A model version called `mnist_model` with a version `v0`(`mnist_model:v0`) points to the `MNIST-dev` registered model.
-
-
-{{< img src="/images/models/view_linked_model_artifacts_browser.png" alt="Model artifacts browser" >}}
- {{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/registry/model_registry/log-model-to-experiment.md b/content/en/guides/core/registry/model_registry/log-model-to-experiment.md
deleted file mode 100644
index 401019408e..0000000000
--- a/content/en/guides/core/registry/model_registry/log-model-to-experiment.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-description: Track a model, the model's dependencies, and other information relevant
- to that model with the W&B Python SDK.
-menu:
- default:
- identifier: log-model-to-experiment
- parent: model-registry
-title: Track a model
-weight: 3
----
-
-
-Track a model, the model's dependencies, and other information relevant to that model with the W&B Python SDK.
-
-Under the hood, W&B creates a lineage of [model artifact]({{< relref "./model-management-concepts.md#model-artifact" >}}) that you can view with the W&B App or programmatically with the W&B Python SDK. See the [Create model lineage map]({{< relref "./model-lineage.md" >}}) for more information.
-
-## How to log a model
-
-Use the `run.log_model` API to log a model. Provide the path where your model files are saved to the `path` parameter. The path can be a local file, directory, or [reference URI]({{< relref "/guides/core/artifacts/track-external-files.md#amazon-s3--gcs--azure-blob-storage-references" >}}) to an external bucket such as `s3://bucket/path`.
-
-Optionally provide a name for the model artifact for the `name` parameter. If `name` is not specified, W&B uses the basename of the input path prepended with the run ID.
-
-Copy and paste the proceeding code snippet. Ensure to replace values enclosed in `<>` with your own.
-
-```python
-import wandb
-
-# Initialize a W&B run
-run = wandb.init(project="", entity="")
-
-# Log the model
-run.log_model(path="", name="")
-```
-
-
-
-Example: Log a Keras model to W&B
-
-The proceeding code example shows how to log a convolutional neural network (CNN) model to W&B.
-
-```python
-import os
-import wandb
-from tensorflow import keras
-from tensorflow.keras import layers
-
-config = {"optimizer": "adam", "loss": "categorical_crossentropy"}
-
-# Initialize a W&B run
-run = wandb.init(entity="charlie", project="mnist-project", config=config)
-
-# Training algorithm
-loss = run.config["loss"]
-optimizer = run.config["optimizer"]
-metrics = ["accuracy"]
-num_classes = 10
-input_shape = (28, 28, 1)
-
-model = keras.Sequential(
- [
- layers.Input(shape=input_shape),
- layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Flatten(),
- layers.Dropout(0.5),
- layers.Dense(num_classes, activation="softmax"),
- ]
-)
-
-model.compile(loss=loss, optimizer=optimizer, metrics=metrics)
-
-# Save model
-model_filename = "model.h5"
-local_filepath = "./"
-full_path = os.path.join(local_filepath, model_filename)
-model.save(filepath=full_path)
-
-# Log the model
-run.log_model(path=full_path, name="MNIST")
-
-# Explicitly tell W&B to end the run.
-run.finish()
-```
-
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/model-lineage.md b/content/en/guides/core/registry/model_registry/model-lineage.md
deleted file mode 100644
index 693d7f3fde..0000000000
--- a/content/en/guides/core/registry/model_registry/model-lineage.md
+++ /dev/null
@@ -1,126 +0,0 @@
----
-description: ''
-menu:
- default:
- identifier: model-lineage
- parent: model-registry
-title: Create model lineage map
-weight: 7
----
-
-This page describes creating lineage graphs in the legacy W&B Model Registry. To learn about lineage graphs in W&B Registry, refer to [Create and view lineage maps]({{< relref "../lineage.md" >}}).
-
-{{% alert %}}
-W&B will transition assets from the legacy [W&B Model Registry]({{< relref "/guides/core/registry/model_registry/" >}}) to the new [W&B Registry]({{< relref "./" >}}). This migration will be fully managed and triggered by W&B, requiring no intervention from users. The process is designed to be as seamless as possible, with minimal disruption to existing workflows. Refer to [Migrate from legacy Model Registry]({{< relref "../model_registry_eol.md" >}}).
-{{% /alert %}}
-
-
-A useful feature of logging model artifacts to W&B are lineage graphs. Lineage graphs show artifacts logged by a run as well as artifacts used by specific run.
-
-This means that, when you log a model artifact, you at a minimum have access to view the W&B run that used or produced the model artifact. If you [track a dependency]({{< relref "#track-an-artifact-dependency" >}}), you also see the inputs used by the model artifact.
-
-For example, the proceeding image shows artifacts created and used throughout an ML experiment:
-
-{{< img src="/images/models/model_lineage_example.png" alt="Model lineage graph" >}}
-
-From left to right, the image shows:
-1. The `jumping-monkey-1` W&B run created the `mnist_dataset:v0` dataset artifact.
-2. The `vague-morning-5` W&B run trained a model using the `mnist_dataset:v0` dataset artifact. The output of this W&B run was a model artifact called `mnist_model:v0`.
-3. A run called `serene-haze-6` used the model artifact (`mnist_model:v0`) to evaluate the model.
-
-
-## Track an artifact dependency
-
-Declare an dataset artifact as an input to a W&B run with the `use_artifact` API to track a dependency.
-
-The proceeding code snippet shows how to use the `use_artifact` API:
-
-```python
-# Initialize a run
-run = wandb.init(project=project, entity=entity)
-
-# Get artifact, mark it as a dependency
-artifact = run.use_artifact(artifact_or_name="name", aliases="")
-```
-
-Once you have retrieved your artifact, you can use that artifact to (for example), evaluate the performance of a model.
-
-
-
-Example: Train a model and track a dataset as the input of a model
-
-```python
-job_type = "train_model"
-
-config = {
- "optimizer": "adam",
- "batch_size": 128,
- "epochs": 5,
- "validation_split": 0.1,
-}
-
-run = wandb.init(project=project, job_type=job_type, config=config)
-
-version = "latest"
-name = "{}:{}".format("{}_dataset".format(model_use_case_id), version)
-
-artifact = run.use_artifact(name)
-
-train_table = artifact.get("train_table")
-x_train = train_table.get_column("x_train", convert_to="numpy")
-y_train = train_table.get_column("y_train", convert_to="numpy")
-
-# Store values from our config dictionary into variables for easy accessing
-num_classes = 10
-input_shape = (28, 28, 1)
-loss = "categorical_crossentropy"
-optimizer = run.config["optimizer"]
-metrics = ["accuracy"]
-batch_size = run.config["batch_size"]
-epochs = run.config["epochs"]
-validation_split = run.config["validation_split"]
-
-# Create model architecture
-model = keras.Sequential(
- [
- layers.Input(shape=input_shape),
- layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Flatten(),
- layers.Dropout(0.5),
- layers.Dense(num_classes, activation="softmax"),
- ]
-)
-model.compile(loss=loss, optimizer=optimizer, metrics=metrics)
-
-# Generate labels for training data
-y_train = keras.utils.to_categorical(y_train, num_classes)
-
-# Create training and test set
-x_t, x_v, y_t, y_v = train_test_split(x_train, y_train, test_size=0.33)
-
-# Train the model
-model.fit(
- x=x_t,
- y=y_t,
- batch_size=batch_size,
- epochs=epochs,
- validation_data=(x_v, y_v),
- callbacks=[WandbCallback(log_weights=True, log_evaluation=True)],
-)
-
-# Save model locally
-path = "model.h5"
-model.save(path)
-
-path = "./model.h5"
-registered_model_name = "MNIST-dev"
-name = "mnist_model"
-
-run.link_model(path=path, registered_model_name=registered_model_name, name=name)
-run.finish()
-```
-
-
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/model-management-concepts.md b/content/en/guides/core/registry/model_registry/model-management-concepts.md
deleted file mode 100644
index 49b174a0b5..0000000000
--- a/content/en/guides/core/registry/model_registry/model-management-concepts.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-description: Model Registry terms and concepts
-menu:
- default:
- identifier: model-management-concepts
- parent: model-registry
-title: Model Registry Terms and Concepts
-weight: 2
----
-
-The following terms describe key components of the W&B Model Registry: [*model version*]({{< relref "#model-version" >}}), [*model artifact*]({{< relref "#model-artifact" >}}), and [*registered model*]({{< relref "#registered-model" >}}).
-
-## Model version
-A model version represents a single model checkpoint. Model versions are a snapshot at a point in time of a model and its files within an experiment.
-
-A model version is an immutable directory of data and metadata that describes a trained model. W&B suggests that you add files to your model version that let you store (and restore) your model architecture and learned parameters at a later date.
-
-A model version belongs to one, and only one, [model artifact]({{< relref "#model-artifact" >}}). A model version can belong to zero or more, [registered models]({{< relref "#registered-model" >}}). Model versions are stored in a model artifact in the order they are logged to the model artifact. W&B automatically creates a new model version if it detects that a model you log (to the same model artifact) has different contents than a previous model version.
-
-Store files within model versions that are produced from the serialization process provided by your modeling library (for example, [PyTorch](https://pytorch.org/tutorials/beginner/saving_loading_models.html) and [Keras](https://www.tensorflow.org/guide/keras/save_and_serialize)).
-
-
-
-## Model alias
-
-Model aliases are mutable strings that allow you to uniquely identify or reference a model version in your registered model with a semantically related identifier. You can only assign an alias to one version of a registered model. This is because an alias should refer to a unique version when used programmatically. It also allows aliases to be used to capture a model's state (champion, candidate, production).
-
-It is common practice to use aliases such as `"best"`, `"latest"`, `"production"`, or `"staging"` to mark model versions with special purposes.
-
-For example, suppose you create a model and assign it a `"best"` alias. You can refer to that specific model with `run.use_model`
-
-```python
-import wandb
-run = wandb.init()
-name = f"{entity/project/model_artifact_name}:{alias}"
-run.use_model(name=name)
-```
-
-## Model tags
-Model tags are keywords or labels that belong to one or more registered models.
-
-Use model tags to organize registered models into categories and to search over those categories in the Model Registry's search bar. Model tags appear at the top of the Registered Model Card. You might choose to use them to group your registered models by ML task, owning team, or priority. The same model tag can be added to multiple registered models to allow for grouping.
-
-{{% alert %}}
-Model tags, which are labels applied to registered models for grouping and discoverability, are different from [model aliases]({{< relref "#model-alias" >}}). Model aliases are unique identifiers or nicknames that you use to fetch a model version programatically. To learn more about using tags to organize the tasks in your Model Registry, see [Organize models]({{< relref "./organize-models.md" >}}).
-{{% /alert %}}
-
-
-## Model artifact
-A model artifact is a collection of logged [model versions]({{< relref "#model-version" >}}). Model versions are stored in a model artifact in the order they are logged to the model artifact.
-
-A model artifact can contain one or more model versions. A model artifact can be empty if no model versions are logged to it.
-
-For example, suppose you create a model artifact. During model training, you periodically save your model during checkpoints. Each checkpoint corresponds to its own [model version]({{< relref "#model-version" >}}). All of the model versions created during your model training and checkpoint saving are stored in the same model artifact you created at the beginning of your training script.
-
-
-
-
-The proceeding image shows a model artifact that contains three model versions: v0, v1, and v2.
-
-{{< img src="/images/models/mr1c.png" alt="Model registry concepts" >}}
-
-View an [example model artifact here](https://wandb.ai/timssweeney/model_management_docs_official_v0/artifacts/model/mnist-zws7gt0n).
-
-## Registered model
-A registered model is a collection of pointers (links) to model versions. You can think of a registered model as a folder of "bookmarks" of candidate models for the same ML task. Each "bookmark" of a registered model is a pointer to a [model version]({{< relref "#model-version" >}}) that belongs to a [model artifact]({{< relref "#model-artifact" >}}). You can use [model tags]({{< relref "#model-tags" >}}) to group your registered models.
-
-Registered models often represent candidate models for a single modeling use case or task. For example, you might create registered model for different image classification task based on the model you use: `ImageClassifier-ResNet50`, `ImageClassifier-VGG16`, `DogBreedClassifier-MobileNetV2` and so on. Model versions are assigned version numbers in the order in which they were linked to the registered model.
-
-
-View an [example Registered Model here](https://wandb.ai/reviewco/registry/model?selectionPath=reviewco%2Fmodel-registry%2FFinetuned-Review-Autocompletion&view=versions).
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/notifications.md b/content/en/guides/core/registry/model_registry/notifications.md
deleted file mode 100644
index bdfb8855b4..0000000000
--- a/content/en/guides/core/registry/model_registry/notifications.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-description: Get Slack notifications when a new model version is linked to the model
- registry.
-menu:
- default:
- identifier: notifications
- parent: model-registry
-title: Create alerts and notifications
-weight: 9
----
-
-
-Receive Slack notifications when a new model version is linked to the model registry.
-
-
-1. Navigate to the [W&B Model Registry app](https://wandb.ai/registry/model).
-2. Select the registered model you want to receive notifications from.
-3. Click on the **Connect Slack** button.
- {{< img src="/images/models/connect_to_slack.png" alt="Connect to Slack" >}}
-4. Follow the instructions to enable W&B in your Slack workspace that appear on the OAuth page.
-
-
-Once you have configured Slack notifications for your team, you can pick and choose registered models to get notifications from.
-
-{{% alert %}}
-A toggle that reads **New model version linked to...** appears instead of a **Connect Slack** button if you have Slack notifications configured for your team.
-{{% /alert %}}
-
-The screenshot below shows a FMNIST classifier registered model that has Slack notifications.
-
-{{< img src="/images/models/conect_to_slack_fmnist.png" alt="Slack notification example" >}}
-
-A message is automatically posted to the connected Slack channel each time a new model version is linked to the FMNIST classifier registered model.
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/organize-models.md b/content/en/guides/core/registry/model_registry/organize-models.md
deleted file mode 100644
index c33cb0fb49..0000000000
--- a/content/en/guides/core/registry/model_registry/organize-models.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-menu:
- default:
- identifier: organize-models
- parent: model-registry
-title: Organize models
-weight: 6
----
-
-Use model tags to organize registered models into categories and to search over those categories.
-
-1. Navigate to the [W&B Model Registry app](https://wandb.ai/registry/model).
-2. Select **View details** next to the name of the registered model you want to add a model tag to.
- {{< img src="/images/models/organize-models-model-reg-landing.png" alt="Model Registry view details" >}}
-2. Scroll to the **Model card** section.
-3. Click the plus button (**+**) next to the **Tags** field.
-{{< img src="/images/models/organize-models-seleticon.png" alt="Model tags section" >}}
-4. Type in the name for your tag or search for a pre-existing model tag.
- For example. the following image shows multiple model tags added to a registered model called **FineTuned-Review-Autocompletion**:
-
- {{< img src="/images/models/model-tags-modelregview.png" alt="Model with multiple tags" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry/walkthrough.md b/content/en/guides/core/registry/model_registry/walkthrough.md
deleted file mode 100644
index 8e726c387f..0000000000
--- a/content/en/guides/core/registry/model_registry/walkthrough.md
+++ /dev/null
@@ -1,300 +0,0 @@
----
-description: Learn how to use W&B for Model Management
-menu:
- default:
- identifier: walkthrough_model_registry
- parent: model-registry
-title: 'Tutorial: Use W&B for model management'
-weight: 1
----
-
-
-The following walkthrough shows you how to log a model to W&B. By the end of the walkthrough you will:
-
-* Create and train a model with the MNIST dataset and the Keras framework.
-* Log the model that you trained to a W&B project
-* Mark the dataset used as a dependency to the model you created
-* Link the model to the W&B Registry.
-* Evaluate the performance of the model you link to the registry
-* Mark a model version ready for production.
-
-{{% alert %}}
-* Copy the code snippets in the order presented in this guide.
-* Code not unique to the Model Registry are hidden in collapsible cells.
-{{% /alert %}}
-
-## Setting up
-
-Before you get started, import the Python dependencies required for this walkthrough:
-
-```python
-import wandb
-import numpy as np
-from tensorflow import keras
-from tensorflow.keras import layers
-from wandb.integration.keras import WandbMetricsLogger
-from sklearn.model_selection import train_test_split
-```
-
-Provide your W&B entity to the `entity` variable:
-
-```python
-entity = ""
-```
-
-
-### Create a dataset artifact
-
-First, create a dataset. The proceeding code snippet creates a function that downloads the MNIST dataset:
-```python
-def generate_raw_data(train_size=6000):
- eval_size = int(train_size / 6)
- (x_train, y_train), (x_eval, y_eval) = keras.datasets.mnist.load_data()
-
- x_train = x_train.astype("float32") / 255
- x_eval = x_eval.astype("float32") / 255
- x_train = np.expand_dims(x_train, -1)
- x_eval = np.expand_dims(x_eval, -1)
-
- print("Generated {} rows of training data.".format(train_size))
- print("Generated {} rows of eval data.".format(eval_size))
-
- return (x_train[:train_size], y_train[:train_size]), (
- x_eval[:eval_size],
- y_eval[:eval_size],
- )
-
-# Create dataset
-(x_train, y_train), (x_eval, y_eval) = generate_raw_data()
-```
-
-Next, upload the dataset to W&B. To do this, create an [artifact]({{< relref "/guides/core/artifacts/" >}}) object and add the dataset to that artifact.
-
-```python
-project = "model-registry-dev"
-
-model_use_case_id = "mnist"
-job_type = "build_dataset"
-
-# Initialize a W&B run
-run = wandb.init(entity=entity, project=project, job_type=job_type)
-
-# Create W&B Table for training data
-train_table = wandb.Table(data=[], columns=[])
-train_table.add_column("x_train", x_train)
-train_table.add_column("y_train", y_train)
-train_table.add_computed_columns(lambda ndx, row: {"img": wandb.Image(row["x_train"])})
-
-# Create W&B Table for eval data
-eval_table = wandb.Table(data=[], columns=[])
-eval_table.add_column("x_eval", x_eval)
-eval_table.add_column("y_eval", y_eval)
-eval_table.add_computed_columns(lambda ndx, row: {"img": wandb.Image(row["x_eval"])})
-
-# Create an artifact object
-artifact_name = "{}_dataset".format(model_use_case_id)
-artifact = wandb.Artifact(name=artifact_name, type="dataset")
-
-# Add wandb.WBValue obj to the artifact.
-artifact.add(train_table, "train_table")
-artifact.add(eval_table, "eval_table")
-
-# Persist any changes made to the artifact.
-artifact.save()
-
-# Tell W&B this run is finished.
-run.finish()
-```
-
-{{% alert %}}
-Storing files (such as datasets) to an artifact is useful in the context of logging models because you lets you track a model's dependencies.
-{{% /alert %}}
-
-
-## Train a model
-Train a model with the artifact dataset you created in the previous step.
-
-### Declare dataset artifact as an input to the run
-
-Declare the dataset artifact you created in a previous step as the input to the W&B run. This is particularly useful in the context of logging models because declaring an artifact as an input to a run lets you track the dataset (and the version of the dataset) used to train a specific model. W&B uses the information collected to create a [lineage map]({{< relref "./model-lineage.md" >}}).
-
-Use the `use_artifact` API to both declare the dataset artifact as the input of the run and to retrieve the artifact itself.
-
-```python
-job_type = "train_model"
-config = {
- "optimizer": "adam",
- "batch_size": 128,
- "epochs": 5,
- "validation_split": 0.1,
-}
-
-# Initialize a W&B run
-run = wandb.init(project=project, job_type=job_type, config=config)
-
-# Retrieve the dataset artifact
-version = "latest"
-name = "{}:{}".format("{}_dataset".format(model_use_case_id), version)
-artifact = run.use_artifact(artifact_or_name=name)
-
-# Get specific content from the dataframe
-train_table = artifact.get("train_table")
-x_train = train_table.get_column("x_train", convert_to="numpy")
-y_train = train_table.get_column("y_train", convert_to="numpy")
-```
-
-For more information about tracking the inputs and output of a model, see [Create model lineage]({{< relref "./model-lineage.md" >}}) map.
-
-### Define and train model
-
-For this walkthrough, define a 2D Convolutional Neural Network (CNN) with Keras to classify images from the MNIST dataset.
-
-
-Train CNN on MNIST data
-
-```python
-# Store values from our config dictionary into variables for easy accessing
-num_classes = 10
-input_shape = (28, 28, 1)
-loss = "categorical_crossentropy"
-optimizer = run.config["optimizer"]
-metrics = ["accuracy"]
-batch_size = run.config["batch_size"]
-epochs = run.config["epochs"]
-validation_split = run.config["validation_split"]
-
-# Create model architecture
-model = keras.Sequential(
- [
- layers.Input(shape=input_shape),
- layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
- layers.MaxPooling2D(pool_size=(2, 2)),
- layers.Flatten(),
- layers.Dropout(0.5),
- layers.Dense(num_classes, activation="softmax"),
- ]
-)
-model.compile(loss=loss, optimizer=optimizer, metrics=metrics)
-
-# Generate labels for training data
-y_train = keras.utils.to_categorical(y_train, num_classes)
-
-# Create training and test set
-x_t, x_v, y_t, y_v = train_test_split(x_train, y_train, test_size=0.33)
-```
-Next, train the model:
-
-```python
-# Train the model
-model.fit(
- x=x_t,
- y=y_t,
- batch_size=batch_size,
- epochs=epochs,
- validation_data=(x_v, y_v),
- callbacks=[WandbCallback(log_weights=True, log_evaluation=True)],
-)
-```
-
-Finally, save the model locally on your machine:
-
-```python
-# Save model locally
-path = "model.h5"
-model.save(path)
-```
-
-
-
-
-## Log and link a model to the Model Registry
-Use the [`link_model`]({{< relref "/ref/python/experiments/run.md#link_model" >}}) API to log model one ore more files to a W&B run and link it to the [W&B Model Registry]({{< relref "./" >}}).
-
-```python
-path = "./model.h5"
-registered_model_name = "MNIST-dev"
-
-run.link_model(path=path, registered_model_name=registered_model_name)
-run.finish()
-```
-
-W&B creates a registered model for you if the name you specify for `registered-model-name` does not already exist.
-
-See [`link_model`]({{< relref "/ref/python/experiments/run.md#link_model" >}}) in the API Reference guide for optional parameters.
-
-## Evaluate the performance of a model
-It is common practice to evaluate the performance of a one or more models.
-
-First, get the evaluation dataset artifact stored in W&B in a previous step.
-
-```python
-job_type = "evaluate_model"
-
-# Initialize a run
-run = wandb.init(project=project, entity=entity, job_type=job_type)
-
-model_use_case_id = "mnist"
-version = "latest"
-
-# Get dataset artifact, mark it as a dependency
-artifact = run.use_artifact(
- "{}:{}".format("{}_dataset".format(model_use_case_id), version)
-)
-
-# Get desired dataframe
-eval_table = artifact.get("eval_table")
-x_eval = eval_table.get_column("x_eval", convert_to="numpy")
-y_eval = eval_table.get_column("y_eval", convert_to="numpy")
-```
-
-Download the [model version]({{< relref "./model-management-concepts.md#model-version" >}}) from W&B that you want to evaluate. Use the `use_model` API to access and download your model.
-
-```python
-alias = "latest" # alias
-name = "mnist_model" # name of the model artifact
-
-# Access and download model. Returns path to downloaded artifact
-downloaded_model_path = run.use_model(name=f"{name}:{alias}")
-```
-
-Load the Keras model and compute the loss:
-
-```python
-model = keras.models.load_model(downloaded_model_path)
-
-y_eval = keras.utils.to_categorical(y_eval, 10)
-(loss, _) = model.evaluate(x_eval, y_eval)
-score = (loss, _)
-```
-
-Finally, log the loss metric to the W&B run:
-
-```python
-# # Log metrics, images, tables, or any data useful for evaluation.
-run.log(data={"loss": (loss, _)})
-```
-
-
-## Promote a model version
-Mark a model version ready for the next stage of your machine learning workflow with a [*model alias*]({{< relref "./model-management-concepts.md#model-alias" >}}). Each registered model can have one or more model aliases. A model alias can only belong to a single model version at a time.
-
-For example, suppose that after evaluating a model's performance, you are confident that the model is ready for production. To promote that model version, add the `production` alias to that specific model version.
-
-{{% alert %}}
-The `production` alias is one of the most common aliases used to mark a model as production-ready.
-{{% /alert %}}
-
-You can add an alias to a model version interactively with the W&B App UI or programmatically with the Python SDK. The following steps show how to add an alias with the W&B Model Registry App:
-
-
-1. Navigate to the [Model Registry App](https://wandb.ai/registry/model).
-2. Click **View details** next to the name of your registered model.
-3. Within the **Versions** section, click the **View** button next to the name of the model version you want to promote.
-4. Next to the **Aliases** field, click the plus icon (**+**).
-5. Type in `production` into the field that appears.
-6. Press Enter on your keyboard.
-
-
-{{< img src="/images/models/promote_model_production.gif" alt="Promote model to production" >}}
\ No newline at end of file
diff --git a/content/en/guides/core/registry/model_registry_eol.md b/content/en/guides/core/registry/model_registry_eol.md
deleted file mode 100644
index 1082fda3a6..0000000000
--- a/content/en/guides/core/registry/model_registry_eol.md
+++ /dev/null
@@ -1,168 +0,0 @@
----
-menu:
- default:
- identifier: model_registry_eol
- parent: registry
-title: Migrate from legacy Model Registry
-weight: 9
----
-
-W&B is migrating from the legacy **Model Registry** to the enhanced **W&B Registry**. This transition is designed to be seamless and fully managed by W&B. The migration process will preserve your workflows while unlocking powerful new features. For any questions or support, contact [support@wandb.com](mailto:support@wandb.com).
-
-## Reasons for the migration
-
-W&B Registry offers major improvements over the legacy Model Registry:
-
-- **Unified, organization-level experience**: Share and manage curated artifacts across your organization, regardless of teams.
-- **Improved governance**: Use access control, restricted registries, and visibility settings to manage user access.
-- **Enhanced functionality**: New features such as custom registries, better search, audit trails, and automation support help modernize your ML infrastructure.
-
-
-The following table summarizes the key differences between the legacy Model Registry and the new W&B Registry:
-
-| Feature | Legacy W&B Model Registry | W&B Registry |
-| ----- | ----- | ----- |
-| Artifact Visibility | Team-level only - access restricted to team members | Org-level visibility with fine-grained permission controls |
-| Custom Registries |Not supported | Fully supported — create registries for any artifact type |
-| Access Control | Not available | Role-based access (Admin, Member, Viewer) at the registry level |
-| Terminology |“Registered models”: pointers to model versions | “Collections”: pointers to any artifact versions |
-| Registry Scope |Only supports model versioning | Supports models, datasets, custom artifacts, and more |
-| Automations | Registry-level automations | Registry- and collection-level automations supported and copied during migration |
-| Search & Discoverability | Limited search and discoverability | Central search within W&B Registry across all registries in the organization |
-| API Compatibility | Uses `wandb.init.link_model()` and MR-specific patterns | Modern SDK APIs (`link_artifact()`, `use_artifact()`) with auto-redirection |
-| Migration | End-of-life | Automatically migrated and enhanced — data is copied, not deleted |
-
-## Preparing for the migration
-
-- **No action required**: The migration is fully automated and managed by W&B. You do not need to run scripts, update configurations, or move data manually.
-- **Stay informed**: You will receive communications (banners in the W&B App UI) 2 weeks prior to your scheduled migration.
-- **Review permissions**: After the migration, admins should check registry access to ensure alignment with your team’s needs.
-- **Use new paths in future work**: Old code continues to work, W&B recommends using the new W&B Registry paths for new projects.
-
-
-## Migration process
-
-### Temporary write operation pause
-During migration, write operations for your team’s Model Registry will be paused to ensure data consistency for up to one hour. Write operations to the newly created migrated W&B Registry will also be paused during the migration.
-
-### Data migration
-W&B will migrate the following data from the legacy Model Registry to the new W&B Registry:
-
-- Collections
-- Linked artifact versions
-- Version history
-- Aliases, tags, and descriptions
-- Automations (both collection and registry-level)
-- Permissions, including service account roles and protected aliases
-
-Within the W&B App UI, the legacy Model Registry will be replaced with the new W&B Registry. Migrated registries will have the name of your team followed by `mr-migrated`:
-
-```text
--mr-migrated
-```
-
-These registries default to **Restricted** visibility, preserving your existing privacy boundaries. Only the original members of the `` will have access to their respective registries.
-
-
-## After the migration
-
-After the migration completes:
-
-- The legacy Model Registry becomes **read-only**. You can still view and access your data, but no new writes will be allowed.
-- Data in the legacy Model Registry is **copied** to the new W&B Registry, not moved. No data is deleted.
-- Access all your data from the new W&B Registry.
-- Use the new Registry UI for versioning, governance, audit trails, and automation.
-- Continue using your old code.
- - [Existing paths and API calls will automatically redirect to the new W&B Registry.]({{< relref "#code-will-continue-to-work" >}})
- - [Artifact version paths are redirected.]({{< relref "#legacy-paths-will-redirect-to-new-wb-registry-paths" >}})
-- The legacy Model Registry will temporarily remain visible in the UI. W&B will eventually hide the legacy Model Registry.
-- Explore enhanced functionality in the Registry such as:
- - [Organization-level access]({{< relref "/guides/core/registry/create_registry/#visibility-types" >}})
- - [Role-based access control]({{< relref "/guides/core/registry/configure_registry/" >}})
- - [Registry-level lineage tracking]({{< relref "/guides/core/registry/lineage/" >}})
- - [Automations]({{< relref "/guides/core/automations/" >}})
-
-### Code will continue to work
-
-Existing API calls in your code that refer to the legacy Model Registry will automatically redirect to the new W&B Registry. The following API calls will continue to work without any changes:
-
-- `wandb.Api().artifact()`
-- `wandb.run.use_artifact()`
-- `wandb.run.link_artifact()`
-- `wandb.Artifact().link()`
-
-### Legacy paths will redirect to new W&B Registry paths
-
-W&B will automatically redirect legacy Model Registry paths to the new W&B Registry format. This means you can continue using your existing code without needing to refactor paths immediately. Note that automatic redirection only applies to collections that were created in the legacy Model Registry before migration.
-
-For example:
-- If the legacy Model Registry had collection `"my-model"` already present, the link action will redirect successfully
-- If the legacy Model Registry did not have collection `"my-model"`, it will not redirect and will lead to an error
-
-```python
-# This will redirect successfully if "my-model" existed in legacy Model Registry
-run.link_artifact(artifact, "team-name/model-registry/my-model")
-
-# This will fail if "new-model" did not exist in legacy Model Registry
-run.link_artifact(artifact, "team-name/model-registry/new-model")
-```
-
-
-
-To fetch versions from the legacy Model Registry, paths consisted of a team name, a `"model-registry"` string, collection name, and version:
-
-```python
-f"{team-name}/model-registry/{collection-name}:{version}"
-```
-
-W&B will automatically redirect these paths to the new W&B Registry format, which includes the organization name, a `"wandb-registry"` string, the team name, collection name, and version:
-
-```python
-# Redirects to new path
-f"{org-name}/wandb-registry-{team-name}/{collection-name}:{version}"
-```
-
-
-{{% alert title="Python SDK warnings" %}}
-
-A warning error may appear if you continue to use legacy Model Registry paths in your code. The warning will not break your code, but it indicates that you should update your paths to the new W&B Registry format.
-
-Whether a warning appears depends on the version of the W&B Python SDK you are using:
-
-* Users on the latest W&B SDK (`v0.21.0` and above) will see a non-breaking warning in their logs indicating that a redirect has occurred.
-* For older SDK versions, the redirect will still work silently without emitting a warning. Some metadata such as entity or project names may reflect legacy values.
-
-{{% /alert %}}
-
-
-## Frequently asked questions
-
-### How will I know when my org is being migrated?
-
-You will receive advance notice with an in-app banner or direct communication from W&B.
-
-### Will there be downtime?
-
-Write operations to the legacy Model Registry and the new W&B Registry will be paused for a approximately one hour during the migration. All other W&B services will remain available.
-
-### Will this break my code?
-
-No. All legacy Model Registry paths and Python SDK calls will automatically redirect to the new Registry.
-
-### Will my data be deleted?
-
-No. Your data will be copied to the new W&B Registry. The legacy Model Registry becomes read-only and later hidden. No data is removed or lost.
-
-### What if I’m using an older SDK?
-
-Redirects will still work, but you will not see warnings about them. For the best experience, upgrade to the latest version of the W&B SDK.
-
-### Can I rename/modify my migrated registry?
-
-Yes, renaming and other operations such as adding or removing members from a migrated registry are allowed. These registries are simply custom registries underneath, and the redirection will continue working even after migration.
-
-## Questions?
-
-For support or to discuss your migration, contact [support@wandb.com](mailto:support@wandb.com). W&B is committed to helping you transition smoothly to the new W&B Registry.
\ No newline at end of file
diff --git a/content/en/guides/core/registry/organize-with-tags.md b/content/en/guides/core/registry/organize-with-tags.md
deleted file mode 100644
index 51e7d041eb..0000000000
--- a/content/en/guides/core/registry/organize-with-tags.md
+++ /dev/null
@@ -1,320 +0,0 @@
----
-description: Use tags to organize collections or artifact versions within collections.
- You can add, remove, edit tags with the Python SDK or W&B App UI.
-menu:
- default:
- identifier: organize-with-tags
- parent: registry
-title: Organize versions with tags
-weight: 7
----
-
-Create and add tags to organize your collections or artifact versions within your registry. Add, modify, view, or remove tags to a collection or artifact version with the W&B App UI or the W&B Python SDK.
-
-{{% alert title="When to use a tag versus using an alias" %}}
-Use aliases when you need to reference a specific artifact version uniquely. For example, use an alias such as 'production' or 'latest' to ensure that `artifact_name:alias` always points to a single, specific version.
-
-Use tags when you want more flexibility for grouping or searching. Tags are ideal when multiple versions or collections can share the same label, and you don’t need the guarantee that only one version is associated with a specific identifier.
-{{% /alert %}}
-
-
-## Add a tag to a collection
-
-Use the W&B App UI or Python SDK to add a tag to a collection:
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" %}}
-
-Use the W&B App UI to add a tag to a collection:
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Click **View details** next to the name of a collection
-4. Within the collection card, click on the plus icon (**+**) next to the **Tags** field and type in the name of the tag
-5. Press **Enter** on your keyboard
-
-{{< img src="/images/registry/add_tag_collection.gif" alt="Adding tags to a Registry collection" >}}
-
-{{% /tab %}}
-{{% tab header="Python SDK" %}}
-
-```python
-import wandb
-
-COLLECTION_TYPE = ""
-ORG_NAME = ""
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-
-full_name = f"{ORG_NAME}/wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}"
-
-collection = wandb.Api().artifact_collection(
- type_name = COLLECTION_TYPE,
- name = full_name
- )
-
-collection.tags = ["your-tag"]
-collection.save()
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-
-## Update tags that belong to a collection
-
-Update a tag programmatically by reassigning or by mutating the `tags` attribute. W&B recommends, and it is good Python practice, that you reassign the `tags` attribute instead of in-place mutation.
-
-For example, the proceeding code snippet shows common ways to update a list with reassignment. For brevity, we continue the code example from the [Add a tag to a collection section]({{< relref "#add-a-tag-to-a-collection" >}}):
-
-```python
-collection.tags = [*collection.tags, "new-tag", "other-tag"]
-collection.tags = collection.tags + ["new-tag", "other-tag"]
-
-collection.tags = set(collection.tags) - set(tags_to_delete)
-collection.tags = [] # deletes all tags
-```
-
-The following code snippet shows how you can use in-place mutation to update tags that belong to an artifact version:
-
-```python
-collection.tags += ["new-tag", "other-tag"]
-collection.tags.append("new-tag")
-
-collection.tags.extend(["new-tag", "other-tag"])
-collection.tags[:] = ["new-tag", "other-tag"]
-collection.tags.remove("existing-tag")
-collection.tags.pop()
-collection.tags.clear()
-```
-
-## View tags that belong to a collection
-
-Use the W&B App UI to view tags added to a collection:
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Click **View details** next to the name of a collection
-
-If a collection has one or more tags, you can view those tags within the collection card next to the **Tags** field.
-
-{{< img src="/images/registry/tag_collection_selected.png" alt="Registry collection with selected tags" >}}
-
-Tags added to a collection also appear next to the name of that collection.
-
-For example, in the proceeding image, a tag called "tag1" was added to the "zoo-dataset-tensors" collection.
-
-{{< img src="/images/registry/tag_collection.png" alt="Tag management" >}}
-
-
-## Remove a tag from a collection
-
-Use the W&B App UI to remove a tag from a collection:
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Click **View details** next to the name of a collection
-4. Within the collection card, hover your mouse over the name of the tag you want to remove
-5. Click on the cancel button (**X** icon)
-
-## Add a tag to an artifact version
-
-Add a tag to an artifact version linked to a collection with the W&B App UI or with the Python SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" %}}
-1. Navigate to the W&B Registry at https://wandb.ai/registry
-2. Click on a registry card
-3. Click **View details** next to the name of the collection you want to add a tag to
-4. Scroll down to **Versions**
-5. Click **View** next to an artifact version
-6. Within the **Version** tab, click on the plus icon (**+**) next to the **Tags** field and type in the name of the tag
-7. Press **Enter** on your keyboard
-
-{{< img src="/images/registry/add_tag_linked_artifact_version.gif" alt="Adding tags to artifact versions" >}}
-
-{{% /tab %}}
-{{% tab header="Python SDK" %}}
-Fetch the artifact version you want to add or update a tag to. Once you have the artifact version, you can access the artifact object's `tag` attribute to add or modify tags to that artifact. Pass in one or more tags as list to the artifacts `tag` attribute.
-
-Like other artifacts, you can fetch an artifact from W&B without creating a run or you can create a run and fetch the artifact within that run. In either case, ensure to call the artifact object's `save` method to update the artifact on the W&B servers.
-
-Copy and paste an appropriate code cells below to add or modify an artifact version's tag. Replace the values in `<>` with your own.
-
-
-The proceeding code snippet shows how to fetch an artifact and add a tag without creating a new run:
-```python title="Add a tag to an artifact version without creating a new run"
-import wandb
-
-ARTIFACT_TYPE = ""
-ORG_NAME = ""
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-VERSION = ""
-
-artifact_name = f"{ORG_NAME}/wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"
-
-artifact = wandb.Api().artifact(name = artifact_name, type = ARTIFACT_TYPE)
-artifact.tags = ["tag2"] # Provide one or more tags in a list
-artifact.save()
-```
-
-
-The proceeding code snippet shows how to fetch an artifact and add a tag by creating a new run:
-
-```python title="Add a tag to an artifact version during a run"
-import wandb
-
-ORG_NAME = ""
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-VERSION = ""
-
-run = wandb.init(entity = "", project="")
-
-artifact_name = f"{ORG_NAME}/wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"
-
-artifact = run.use_artifact(artifact_or_name = artifact_name)
-artifact.tags = ["tag2"] # Provide one or more tags in a list
-artifact.save()
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-
-## Update tags that belong to an artifact version
-
-
-Update a tag programmatically by reassigning or by mutating the `tags` attribute. W&B recommends, and it is good Python practice, that you reassign the `tags` attribute instead of in-place mutation.
-
-For example, the proceeding code snippet shows common ways to update a list with reassignment. For brevity, we continue the code example from the [Add a tag to an artifact version section]({{< relref "#add-a-tag-to-an-artifact-version" >}}):
-
-```python
-artifact.tags = [*artifact.tags, "new-tag", "other-tag"]
-artifact.tags = artifact.tags + ["new-tag", "other-tag"]
-
-artifact.tags = set(artifact.tags) - set(tags_to_delete)
-artifact.tags = [] # deletes all tags
-```
-
-The following code snippet shows how you can use in-place mutation to update tags that belong to an artifact version:
-
-```python
-artifact.tags += ["new-tag", "other-tag"]
-artifact.tags.append("new-tag")
-
-artifact.tags.extend(["new-tag", "other-tag"])
-artifact.tags[:] = ["new-tag", "other-tag"]
-artifact.tags.remove("existing-tag")
-artifact.tags.pop()
-artifact.tags.clear()
-```
-
-
-## View tags that belong to an artifact version
-
-View tags that belong to an artifact version that is linked to a registry with the W&B App UI or with the Python SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" %}}
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Click **View details** next to the name of the collection you want to add a tag to
-4. Scroll down to **Versions** section
-
-If an artifact version has one or more tags, you can view those tags within the **Tags** column.
-
-{{< img src="/images/registry/tag_artifact_version.png" alt="Artifact version with tags" >}}
-
-{{% /tab %}}
-{{% tab header="Python SDK" %}}
-
-Fetch the artifact version to view its tags. Once you have the artifact version, you can view tags that belong to that artifact by viewing the artifact object's `tag` attribute.
-
-Like other artifacts, you can fetch an artifact from W&B without creating a run or you can create a run and fetch the artifact within that run.
-
-Copy and paste an appropriate code cells below to add or modify an artifact version's tag. Replace the values in `<>` with your own.
-
-The proceeding code snippet shows how to fetch and view an artifact version's tags without creating a new run:
-
-```python title="Add a tag to an artifact version without creating a new run"
-import wandb
-
-ARTIFACT_TYPE = ""
-ORG_NAME = ""
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-VERSION = ""
-
-artifact_name = f"{ORG_NAME}/wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"
-
-artifact = wandb.Api().artifact(name = artifact_name, type = artifact_type)
-print(artifact.tags)
-```
-
-
-The proceeding code snippet shows how to fetch and view artifact version's tags by creating a new run:
-
-```python title="Add a tag to an artifact version during a run"
-import wandb
-
-ORG_NAME = ""
-REGISTRY_NAME = ""
-COLLECTION_NAME = ""
-VERSION = ""
-
-run = wandb.init(entity = "", project="")
-
-artifact_name = f"{ORG_NAME}/wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{VERSION}"
-
-artifact = run.use_artifact(artifact_or_name = artifact_name)
-print(artifact.tags)
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-
-## Remove a tag from an artifact version
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Click **View details** next to the name of the collection you want to add a tag to
-4. Scroll down to **Versions**
-5. Click **View** next to an artifact version
-6. Within the **Version** tab, hover your mouse over the name of the tag
-7. Click on the cancel button (**X** icon)
-
-## Search existing tags
-
-Use the W&B App UI to search existing tags in collections and artifact versions:
-
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry).
-2. Click on a registry card
-3. Within the search bar, type in the name of a tag.
-
-{{< img src="/images/registry/search_tags.gif" alt="Tag-based search" >}}
-
-
-## Find artifact versions with a specific tag
-
-Use the W&B Python SDK to find artifact versions that have a set of tags:
-
-```python
-import wandb
-
-api = wandb.Api()
-tagged_artifact_versions = api.artifacts(
- type_name = "",
- name = "",
- tags = ["", ""]
-)
-
-for artifact_version in tagged_artifact_versions:
- print(artifact_version.tags)
-```
\ No newline at end of file
diff --git a/content/en/guides/core/registry/registry_cards.md b/content/en/guides/core/registry/registry_cards.md
deleted file mode 100644
index 890baf2e81..0000000000
--- a/content/en/guides/core/registry/registry_cards.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-menu:
- default:
- identifier: registry_cards
- parent: registry
-title: Annotate collections
-weight: 8
----
-
-Add human-friendly text to your collections to help users understand the purpose of the collection and the artifacts it contains.
-
-
-Depending on the collection, you might want to include information about the training data, model architecture, task, license, references, and deployment. The proceeding lists some topics worth documenting in a collection:
-
-
-
-W&B recommends including at minimum these details:
-* **Summary**: The purpose of the collection. The machine learning framework used for the machine learning experiment.
-* **License**: The legal terms and permissions associated with the use of the machine learning model. It helps model users understand the legal framework under which they can utilize the model. Common licenses include Apache 2.0, MIT, and GPL.
-* **References**: Citations or references to relevant research papers, datasets, or external resources.
-
-If your collection contains training data, consider including these additional details:
-* **Training data**: Describe the training data used
-* **Processing**: Processing done on the training data set.
-* **Data storage**: Where is that data stored and how to access it.
-
-
-If your collection contains a machine learning model, consider including these additional details:
-* **Architecture**: Information about the model architecture, layers, and any specific design choices.
-* **Task**: The specific type of task or problem that the machine that the collection model is designed to perform. It's a categorization of the model's intended capability.
-* **Deserialize the model**: Provide information on how someone on your team can load the model into memory.
-* **Deployment**: Details on how and where the model is deployed and guidance on how the model is integrated into other enterprise systems, such as a workflow orchestration platforms.
-
-
-## Add a description to a collection
-
-Interactively or programmatically add a description to a collection with the W&B Registry UI or Python SDK.
-
-{{< tabpane text=true >}}
- {{% tab header="W&B Registry UI" %}}
-1. Navigate to the [W&B Registry App](https://wandb.ai/registry/).
-2. Click on a collection.
-3. Select **View details** next to the name of the collection.
-4. Within the **Description** field, provide information about your collection. Format text within with [Markdown markup language](https://www.markdownguide.org/).
-
- {{% /tab %}}
- {{% tab header="Python SDK" %}}
-
-Use the [`wandb.Api().artifact_collection()`]({{< relref "/ref/python/public-api/api.md#artifact_collection" >}}) method to access a collection's description. Use the returned object's `description` property to add, or update, a description to the collection.
-
-Specify the collection's type for the `type_name` parameter and the collection's full name for the `name` parameter. A collection's name consists of the prefix “wandb-registry”, the name of the registry, and the name of the collection separated by a forward slashes:
-
-```text
-wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}
-```
-
-Copy and paste the proceeding code snippet into your Python script or notebook. Replace values enclosed in angle brackets (`<>`) with your own.
-
-```python
-import wandb
-
-api = wandb.Api()
-
-collection = api.artifact_collection(
- type_name = "",
- name = ""
- )
-
-
-collection.description = "This is a description."
-collection.save()
-```
- {{% /tab %}}
-{{< /tabpane >}}
-
-For example, the proceeding image shows a collection that documents a model's architecture, intended use, performance information and more.
-
-{{< img src="/images/registry/registry_card.png" alt="Collection card" >}}
diff --git a/content/en/guides/core/registry/registry_types.md b/content/en/guides/core/registry/registry_types.md
deleted file mode 100644
index fcfb417eb8..0000000000
--- a/content/en/guides/core/registry/registry_types.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-menu:
- default:
- identifier: registry_types
- parent: registry
-title: Registry types
-weight: 1
----
-
-W&B supports two types of registries: [Core registries]({{< relref "#core-registry" >}}) and [Custom registries]({{< relref "#custom-registry" >}}).
-
-## Core registry
-A core registry is a template for specific use cases: **Models** and **Datasets**.
-
-By default, the **Models** registry is configured to accept `"model"` artifact types and the **Dataset** registry is configured to accept `"dataset"` artifact types. An admin can add additional accepted artifact types.
-
-
-
-{{< img src="/images/registry/core_registry_example.png" alt="Core registry" >}}
-
-The preceding image shows the **Models** and the **Dataset** core registry along with a custom registry called **Fine_Tuned_Models** in the W&B Registry App UI.
-
-A core registry has [organization visibility]({{< relref "./configure_registry.md#registry-visibility-types" >}}). A registry admin can not change the visibility of a core registry.
-
-## Custom registry
-Custom registries are not restricted to `"model"` artifact types or `"dataset"` artifact types.
-
-You can create a custom registry for each step in your machine learning pipeline, from initial data collection to final model deployment.
-
-For example, you might create a registry called "Benchmark_Datasets" for organizing curated datasets to evaluate the performance of trained models. Within this registry, you might have a collection called "User_Query_Insurance_Answer_Test_Data" that contains a set of user questions and corresponding expert-validated answers that the model has never seen during training.
-
-{{< img src="/images/registry/custom_registry_example.png" alt="Custom registry example" >}}
-
-A custom registry can have either [organization or restricted visibility]({{< relref "./configure_registry.md#registry-visibility-types" >}}). A registry admin can change the visibility of a custom registry from organization to restricted. However, the registry admin can not change a custom registry's visibility from restricted to organizational visibility.
-
-For information on how to create a custom registry, see [Create a custom registry]({{< relref "./create_collection.md" >}}).
-
-
-## Summary
-The proceeding table summarizes the differences between core and custom registries:
-
-| | Core | Custom|
-| -------------- | ----- | ----- |
-| Visibility | Organizational visibility only. Visibility can not be altered. | Either organization or restricted. Visibility can be altered from organization to restricted visibility.|
-| Metadata | Preconfigured and not editable by users. | Users can edit. |
-| Artifact types | Preconfigured and accepted artifact types cannot be removed. Users can add additional accepted artifact types. | Admin can define accepted types. |
-| Customization | Can add additional types to the existing list.| Edit registry name, description, visibility, and accepted artifact types.|
\ No newline at end of file
diff --git a/content/en/guides/core/registry/search_registry.md b/content/en/guides/core/registry/search_registry.md
deleted file mode 100644
index 2206328aa1..0000000000
--- a/content/en/guides/core/registry/search_registry.md
+++ /dev/null
@@ -1,151 +0,0 @@
----
-menu:
- default:
- identifier: search_registry
- parent: registry
-title: Find registry items
-weight: 7
----
-
-Use the [global search bar in the W&B Registry App]({{< relref "./search_registry.md#search-for-registry-items" >}}) to find a registry, collection, artifact version tag, collection tag, or alias. You can use MongoDB-style queries to [filter registries, collections, and artifact versions]({{< relref "./search_registry.md#query-registry-items-with-mongodb-style-queries" >}}) based on specific criteria using the W&B Python SDK.
-
-
-Only items that you have permission to view appear in the search results.
-
-## Search for registry items
-
-To search for a registry item:
-
-1. Navigate to the W&B Registry App.
-2. Specify the search term in the search bar at the top of the page. Press Enter to search.
-
-Search results appear below the search bar if the term you specify matches an existing registry, collection name, artifact version tag, collection tag, or alias.
-
-{{< img src="/images/registry/search_registry.gif" alt="Searching within a Registry" >}}
-
-## Query registry items with MongoDB-style queries
-
-Use the [`wandb.Api().registries()`]({{< relref "/ref/python/public-api/api.md#registries" >}}) and [query predicates](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-query-predicate) to filter registries, collections, and artifact versions based on one or more [MongoDB-style queries](https://www.mongodb.com/docs/compass/current/query/filter/).
-
-The following table lists query names you can use based on the type of item you want to filter:
-
-| | query name |
-| ----- | ----- |
-| registries | `name`, `description`, `created_at`, `updated_at` |
-| collections | `name`, `tag`, `description`, `created_at`, `updated_at` |
-| versions | `tag`, `alias`, `created_at`, `updated_at`, `metadata` |
-
-The proceeding code examples demonstrate some common search scenarios.
-
-To use the `wandb.Api().registries()` method, first import the W&B Python SDK ([`wandb`]({{< relref "/ref/python/_index.md" >}})) library:
-```python
-import wandb
-
-# (Optional) Create an instance of the wandb.Api() class for readability
-api = wandb.Api()
-```
-
-Filter all registries that contain the string `model`:
-
-```python
-# Filter all registries that contain the string `model`
-registry_filters = {
- "name": {"$regex": "model"}
-}
-
-# Returns an iterable of all registries that match the filters
-registries = api.registries(filter=registry_filters)
-```
-
-Filter all collections, independent of registry, that contains the string `yolo` in the collection name:
-
-```python
-# Filter all collections, independent of registry, that
-# contains the string `yolo` in the collection name
-collection_filters = {
- "name": {"$regex": "yolo"}
-}
-
-# Returns an iterable of all collections that match the filters
-collections = api.registries().collections(filter=collection_filters)
-```
-
-Filter all collections, independent of registry, that contains the string `yolo` in the collection name and possesses `cnn` as a tag:
-
-```python
-# Filter all collections, independent of registry, that contains the
-# string `yolo` in the collection name and possesses `cnn` as a tag
-collection_filters = {
- "name": {"$regex": "yolo"},
- "tag": "cnn"
-}
-
-# Returns an iterable of all collections that match the filters
-collections = api.registries().collections(filter=collection_filters)
-```
-
-Find all artifact versions that contains the string `model` and has either the tag `image-classification` or an `latest` alias:
-
-```python
-# Find all artifact versions that contains the string `model` and
-# has either the tag `image-classification` or an `latest` alias
-registry_filters = {
- "name": {"$regex": "model"}
-}
-
-# Use logical $or operator to filter artifact versions
-version_filters = {
- "$or": [
- {"tag": "image-classification"},
- {"alias": "production"}
- ]
-}
-
-# Returns an iterable of all artifact versions that match the filters
-artifacts = api.registries(filter=registry_filters).collections().versions(filter=version_filters)
-```
-
-See the MongoDB documentation for more information on [logical query operators](https://www.mongodb.com/docs/manual/reference/operator/query-logical/).
-
-Each item in the `artifacts` iterable in the previous code snippet is an instance of the `Artifact` class. This means that you can access each artifact's attributes, such as `name`, `collection`, `aliases`, `tags`, `created_at`, and more:
-
-```python
-for art in artifacts:
- print(f"artifact name: {art.name}")
- print(f"collection artifact belongs to: { art.collection.name}")
- print(f"artifact aliases: {art.aliases}")
- print(f"tags attached to artifact: {art.tags}")
- print(f"artifact created at: {art.created_at}\n")
-```
-For a complete list of an artifact object's attributes, see the [Artifacts Class]({{< relref "/ref/python/experiments/artifact/_index.md" >}}) in the API Reference docs.
-
-
-Filter all artifact versions, independent of registry or collection, created between 2024-01-08 and 2025-03-04 at 13:10 UTC:
-
-```python
-# Find all artifact versions created between 2024-01-08 and 2025-03-04 at 13:10 UTC.
-
-artifact_filters = {
- "alias": "latest",
- "created_at" : {"$gte": "2024-01-08", "$lte": "2025-03-04 13:10:00"},
-}
-
-# Returns an iterable of all artifact versions that match the filters
-artifacts = api.registries().collections().versions(filter=artifact_filters)
-```
-
-Specify the date and time in the format `YYYY-MM-DD HH:MM:SS`. You can omit the hours, minutes, and seconds if you want to filter by date only.
-
-See the MongoDB documentation for more information on [query comparisons](https://www.mongodb.com/docs/manual/reference/operator/query-comparison/).
-
-## Prioritize registries with stars
-
-Add a "star" to label important or frequently used registries. Starred registries appear in the **My starred registries** section on the Registry landing page.
-
-To add a star to a registry:
-
-1. Navigate to the W&B Registry.
-2. Click the star icon next to the name of the registry.
-
-
-
diff --git a/content/en/guides/core/reports/_index.md b/content/en/guides/core/reports/_index.md
deleted file mode 100644
index 86cfac1b8b..0000000000
--- a/content/en/guides/core/reports/_index.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-description: Project management and collaboration tools for machine learning projects
-menu:
- default:
- identifier: reports
- parent: core
-title: Reports
-weight: 3
-url: guides/reports
-cascade:
-- url: guides/reports/:filename
----
-
-
-{{< cta-button productLink="https://wandb.ai/stacey/deep-drive/reports/The-View-from-the-Driver-s-Seat--Vmlldzo1MTg5NQ?utm_source=fully_connected&utm_medium=blog&utm_campaign=view+from+the+drivers+seat" colabLink="https://colab.research.google.com/github/wandb/examples/blob/master/colabs/intro/Report_API_Quickstart.ipynb" >}}
-
-Use W&B Reports to:
-- Organize Runs.
-- Embed and automate visualizations.
-- Describe your findings.
-- Share updates with collaborators, either as a LaTeX zip file a PDF.
-
-
-
-The following image shows a section of a report created from metrics that were logged to W&B over the course of training.
-
-{{< img src="/images/reports/safe-lite-benchmark-with-comments.png" alt="W&B report with benchmark results" max-width="90%" >}}
-
-View the report where the above image was taken from [here](https://wandb.ai/stacey/saferlife/reports/SafeLife-Benchmark-Experiments--Vmlldzo0NjE4MzM).
-
-## How it works
-Create a collaborative report with a few clicks.
-
-1. Navigate to your W&B project workspace in the W&B App.
-2. Click the **Create report** button in the upper right corner of your workspace.
-
-{{< img src="/images/reports/create_a_report_button.png" alt="Create report button" max-width="90%">}}
-
-3. A modal titled **Create Report** will appear. Select the charts and panels you want to add to your report. (You can add or remove charts and panels later).
-4. Click **Create report**.
-5. Edit the report to your desired state.
-6. Click **Publish to project**.
-7. Click the **Share** button to share your report with collaborators.
-
-See the [Create a report]({{< relref "./create-a-report.md" >}}) page for more information on how to create reports interactively an programmatically with the W&B Python SDK.
-
-## How to get started
-Depending on your use case, explore the following resources to get started with W&B Reports:
-
-* Check out our [video demonstration](https://www.youtube.com/watch?v=2xeJIv_K_eI) to get an overview of W&B Reports.
-* Explore the [Reports gallery]({{< relref "./reports-gallery.md" >}}) for examples of live reports.
-* Try the [Programmatic Workspaces]({{< relref "/tutorials/workspaces.md" >}}) tutorial to learn how to create and customize your workspace.
-* Read curated Reports in [W&B Fully Connected](https://wandb.me/fc).
-
-## Recommended practices and tips
-
-For best practices and tips for Experiments and logging, see [Best Practices: Reports](https://wandb.ai/wandb/pytorch-lightning-e2e/reports/W-B-Best-Practices-Guide--VmlldzozNTU1ODY1#reports).
\ No newline at end of file
diff --git a/content/en/guides/core/reports/clone-and-export-reports.md b/content/en/guides/core/reports/clone-and-export-reports.md
deleted file mode 100644
index 14bf2afad5..0000000000
--- a/content/en/guides/core/reports/clone-and-export-reports.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-description: Export a W&B Report as a PDF or LaTeX.
-menu:
- default:
- identifier: clone-and-export-reports
- parent: reports
-title: Clone and export reports
-weight: 40
----
-
-{{% alert %}}
-W&B Report and Workspace API is in Public Preview.
-{{% /alert %}}
-
-## Export reports
-
-Export a report as a PDF or LaTeX. Within your report, select the kebab icon to expand the dropdown menu. Choose **Download and** select either PDF or LaTeX output format.
-
-## Cloning reports
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" value="app" %}}
-Within your report, select the kebab icon to expand the dropdown menu. Choose the **Clone this report** button. Pick a destination for your cloned report in the modal. Choose **Clone report**.
-
-{{< img src="/images/reports/clone_reports.gif" alt="Cloning reports" >}}
-
-Clone a report to reuse a project's template and format. Cloned projects are visible to your team if you clone a project within the team's account. Projects cloned within an individual's account are only visible to that user.
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api"%}}
-
-Load a Report from a URL to use it as a template.
-
-```python
-report = wr.Report(
- project=PROJECT, title="Quickstart Report", description="That was easy!"
-) # Create
-report.save() # Save
-new_report = wr.Report.from_url(report.url) # Load
-```
-
-Edit the content within `new_report.blocks`.
-
-```python
-pg = wr.PanelGrid(
- runsets=[
- wr.Runset(ENTITY, PROJECT, "First Run Set"),
- wr.Runset(ENTITY, PROJECT, "Elephants Only!", query="elephant"),
- ],
- panels=[
- wr.LinePlot(x="Step", y=["val_acc"], smoothing_factor=0.8),
- wr.BarPlot(metrics=["acc"]),
- wr.MediaBrowser(media_keys="img", num_columns=1),
- wr.RunComparer(diff_only="split", layout={"w": 24, "h": 9}),
- ],
-)
-new_report.blocks = (
- report.blocks[:1] + [wr.H1("Panel Grid Example"), pg] + report.blocks[1:]
-)
-new_report.save()
-```
-{{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/reports/collaborate-on-reports.md b/content/en/guides/core/reports/collaborate-on-reports.md
deleted file mode 100644
index 77de631c29..0000000000
--- a/content/en/guides/core/reports/collaborate-on-reports.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-description: Collaborate and share W&B Reports with peers, co-workers, and your team.
-menu:
- default:
- identifier: collaborate-on-reports
- parent: reports
-title: Collaborate on reports
-weight: 30
----
-
-This page describes various ways to collaborate on reports with your team.
-
-## Share a report
-When viewing a report, click **Share**, then:
-- To share a link to the report with an email address or a username, click **Invite**. Enter an email address or username, select **Can view** or **Can edit**, then click **Invite**. If you share by email, the email address does not need to be a member of your organization or team.
-- To generate a sharing link instead, click **Share**. Adjust the permissions for the link, then click **Copy report link**. Share the link with the member.
-
-When viewing the report, click a panel to open it in full-screen mode. If you copy the URL from the browser and share it with another user, when they access the link the panel will open directly in full-screen mode.
-
-## Edit a report
-When any team member clicks the **Edit** button to begin editing the report, a draft is automatically saved. Select **Save to report** to publish your changes.
-
-If an edit conflict occurs, such as when two team members edit the report at once, a warning notification helps you to resolve any conflicts.
-
-{{< img src="/images/reports/share-report.gif" alt="Report sharing modal for a report in a 'Public' project" max-width="90%">}}
-
-## Comment on reports
-Click **Comment** to leave a comment on a report.
-
-To comment directly on a panel, hover over the panel, then click the comment button, which looks like a speech bubble.
-
-{{< img src="/images/reports/demo_comment_on_panels_in_reports.gif" alt="Adding a comment to a panel" >}}
-
-## Star a report
-If your team has a large number of reports, click **Star** at the top of a report to add it to your favorites. When viewing your team's list of reports, click the star in a report's row to add it to your favorites. Starred reports appear at the top of the list.
-
-From the list of reports, you can see how many members have starred each report to gauge its relative popularity.
\ No newline at end of file
diff --git a/content/en/guides/core/reports/create-a-report.md b/content/en/guides/core/reports/create-a-report.md
deleted file mode 100644
index 9e7cc2278d..0000000000
--- a/content/en/guides/core/reports/create-a-report.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-description: Create a W&B Report with the W&B App or programmatically.
-menu:
- default:
- identifier: create-a-report
- parent: reports
-title: Create a report
-weight: 10
----
-
-{{% alert %}}
-W&B Report and Workspace API is in Public Preview.
-{{% /alert %}}
-
-Select a tab below to learn how to create a report in the W&B App or programmatically with the W&B Report and Workspace API.
-
-See this [Google Colab](https://colab.research.google.com/github/wandb/examples/blob/master/colabs/intro/Report_API_Quickstart.ipynb) for an example on how to programmatically create a report.
-
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" value="app" %}}
-1. Navigate to your project workspace in the W&B App.
-2. Click **Create report** in the upper right corner of your workspace.
-
- {{< img src="/images/reports/create_a_report_button.png" alt="Create report button" >}}
-
-3. A modal will appear. Select the charts you would like to start with. You can add or delete charts later from the report interface.
-
- {{< img src="/images/reports/create_a_report_modal.png" alt="Create report modal" >}}
-
-4. Select the **Filter run sets** option to prevent new runs from being added to your report. You can toggle this option on or off. Once you click **Create report,** a draft report will be available in the report tab to continue working on.
-{{% /tab %}}
-
-{{% tab header="Report tab" value="reporttab"%}}
-1. Navigate to your project workspace in the W&B App.
-2. Select to the **Reports** tab (clipboard image) in your project.
-3. Select the **Create Report** button on the report page.
-
- {{< img src="/images/reports/create_report_button.png" alt="Create report button" >}}
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api"%}}
-Create a report programmatically:
-
-1. Install W&B SDK (`wandb`) and Report and Workspace API (`wandb-workspaces`):
- ```bash
- pip install wandb wandb-workspaces
- ```
-2. Next, import workspaces
- ```python
- import wandb
- import wandb_workspaces.reports.v2 as wr
- ```
-3. Create a report with `wandb_workspaces.reports.v2.Report`. Create a report instance with the Report Class Public API ([`wandb.apis.reports`]({{< relref "/ref/python/public-api/api.md#reports" >}})). Specify a name for the project.
- ```python
- report = wr.Report(project="report_standard")
- ```
-
-4. Save the report. Reports are not uploaded to the W&B server until you call the .`save()` method:
- ```python
- report.save()
- ```
-
-For information on how to edit a report interactively with the App UI or programmatically, see [Edit a report]({{< relref "/guides/core/reports/edit-a-report" >}}).
-{{% /tab %}}
-{{< /tabpane >}}
diff --git a/content/en/guides/core/reports/cross-project-reports.md b/content/en/guides/core/reports/cross-project-reports.md
deleted file mode 100644
index 5a9cc7dd2a..0000000000
--- a/content/en/guides/core/reports/cross-project-reports.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-description: Compare runs from two different projects with cross-project reports.
-menu:
- default:
- identifier: cross-project-reports
- parent: reports
-title: Compare runs across projects
-weight: 60
----
-{{% alert %}}
-Watch a [video demonstrating comparing runs across projects](https://www.youtube.com/watch?v=uD4if_nGrs4) (2 min).
-{{% /alert %}}
-
-
-Compare runs from two different projects with cross-project reports. Use the project selector in the run set table to pick a project.
-
-{{< img src="/images/reports/howto_pick_a_different_project_to_draw_runs_from.gif" alt="Compare runs across different projects" >}}
-
-The visualizations in the section pull columns from the first active runset. Make sure that the first run set checked in the section has that column available if you do not see the metric you are looking for in the line plot.
-
-This feature supports history data on time series lines, but we don't support pulling different summary metrics from different projects. In other words, you can not create a scatter plot from columns that are only logged in another project.
-
-If you need to compare runs from two projects and the columns are not working, add a tag to the runs in one project and then move those runs to the other project. You can still filter only the runs from each project, but the report includes all the columns for both sets of runs.
-
-## View-only report links
-
-Share a view-only link to a report that is in a private project or team project.
-
-{{< img src="/images/reports/magic-links.gif" alt="View-only report links" >}}
-
-View-only report links add a secret access token to the URL, so anyone who opens the link can view the page. Anyone can use the magic link to view the report without logging in first. For customers on [W&B Local]({{< relref "/guides/hosting/" >}}) private cloud installations, these links remain behind your firewall, so only members of your team with access to your private instance _and_ access to the view-only link can view the report.
-
-In **view-only mode**, someone who is not logged in can see the charts and mouse over to see tooltips of values, zoom in and out on charts, and scroll through columns in the table. When in view mode, they cannot create new charts or new table queries to explore the data. View-only visitors to the report link won't be able to click a run to get to the run page. Also, the view-only visitors would not be able to see the share modal but instead would see a tooltip on hover which says: `Sharing not available for view only access`.
-
-{{% alert color="info" %}}
-The magic links are only available for “Private” and “Team” projects. For “Public” (anyone can view) or “Open” (anyone can view and contribute runs) projects, the links can't turn on/off because this project is public implying that it is already available to anyone with the link.
-{{% /alert %}}
-
-## Send a graph to a report
-
-Send a graph from your workspace to a report to keep track of your progress. Click the dropdown menu on the chart or panel you'd like to copy to a report and click **Add to report** to select the destination report.
\ No newline at end of file
diff --git a/content/en/guides/core/reports/edit-a-report.md b/content/en/guides/core/reports/edit-a-report.md
deleted file mode 100644
index f607d3aa11..0000000000
--- a/content/en/guides/core/reports/edit-a-report.md
+++ /dev/null
@@ -1,722 +0,0 @@
----
-description: Edit a report interactively with the App UI or programmatically with
- the W&B SDK.
-menu:
- default:
- identifier: edit-a-report
- parent: reports
-title: Edit a report
-weight: 20
----
-
-{{% alert %}}
-W&B Report and Workspace API is in Public Preview.
-{{% /alert %}}
-
-Edit a report interactively with the App UI or programmatically with the W&B SDK.
-
-Reports consist of _blocks_. Blocks make up the body of a report. Within these blocks you can add text, images, embedded visualizations, plots from experiments and run, and panels grids.
-
-_Panel grids_ are a specific type of block that hold panels and _run sets_. Run sets are a collection of runs logged to a project in W&B. Panels are visualizations of run set data.
-
-
-{{% alert %}}
-Check out the [Programmatic workspaces tutorial]({{< relref "/tutorials/workspaces.md" >}}) for a step by step example on how create and customize a saved workspace view.
-{{% /alert %}}
-
-{{% alert %}}
-Verify that you have the W&B Report and Workspace API `wandb-workspaces` installed in addition to the W&B Python SDK if you want to programmatically edit a report:
-
-```pip
-pip install wandb wandb-workspaces
-```
-{{% /alert %}}
-
-## Add plots
-
-Each panel grid has a set of run sets and a set of panels. The run sets at the bottom of the section control what data shows up on the panels in the grid. Create a new panel grid if you want to add charts that pull data from a different set of runs.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" value="app" %}}
-
-Enter a forward slash (`/`) in the report to display a dropdown menu. Select **Add panel** to add a panel. You can add any panel that is supported by W&B, including a line plot, scatter plot or parallel coordinates chart.
-
-{{< img src="/images/reports/demo_report_add_panel_grid.gif" alt="Add charts to a report" >}}
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api"%}}
-Add plots to a report programmatically with the SDK. Pass a list of one or more plot or chart objects to the `panels` parameter in the `PanelGrid` Public API Class. Create a plot or chart object with its associated Python Class.
-
-
-The proceeding examples demonstrates how to create a line plot and scatter plot.
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(
- project="report-editing",
- title="An amazing title",
- description="A descriptive description.",
-)
-
-blocks = [
- wr.PanelGrid(
- panels=[
- wr.LinePlot(x="time", y="velocity"),
- wr.ScatterPlot(x="time", y="acceleration"),
- ]
- )
-]
-
-report.blocks = blocks
-report.save()
-```
-
-For more information about available plots and charts you can add to a report programmatically, see `wr.panels`.
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-## Add run sets
-
-Add run sets from projects interactively with the App UI or the W&B SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="W&B App" value="app" %}}
-
-Enter a forward slash (`/`) in the report to display a dropdown menu. From the dropdown, choose **Panel Grid**. This will automatically import the run set from the project the report was created from.
-
-If you import a panel into a report, run names are inherited from the project. In the report, you can optionally [rename a run]({{< relref "/guides/models/track/runs/#rename-a-run" >}}) to give the reader more context. The run is renamed only in the individual panel. If you clone the panel in the same report, the run is also renamed in the cloned panel.
-
-1. In the report, click the pencil icon to open the report editor.
-1. In the run set, find the run to rename. Hover over the report name, click the three vertical dots. Select one of the following choices, then submit the form.
-
- - **Rename run for project**: rename the run across the entire project. To generate a new random name, leave the field blank.
- - **Rename run for panel grid** rename the run only in the report, preserving the existing name in other contexts. Generating a new random name is not supported.
-
-1. Click **Publish report**.
-
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api"%}}
-
-Add run sets from projects with the `wr.Runset()` and `wr.PanelGrid` Classes. The proceeding procedure describes how to add a runset:
-
-1. Create a `wr.Runset()` object instance. Provide the name of the project that contains the run sets for the project parameter and the entity that owns the project for the entity parameter.
-2. Create a `wr.PanelGrid()` object instance. Pass a list of one or more runset objects to the `run sets` parameter.
-3. Store one or more `wr.PanelGrid()` object instances in a list.
-4. Update the report instance blocks attribute with the list of panel grid instances.
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(
- project="report-editing",
- title="An amazing title",
- description="A descriptive description.",
-)
-
-panel_grids = wr.PanelGrid(
- runsets=[wr.RunSet(project="", entity="")]
-)
-
-report.blocks = [panel_grids]
-report.save()
-```
-
-You can optionally add runsets and panels with one call to the SDK:
-
-```python
-import wandb
-
-report = wr.Report(
- project="report-editing",
- title="An amazing title",
- description="A descriptive description.",
-)
-
-panel_grids = wr.PanelGrid(
- panels=[
- wr.LinePlot(
- title="line title",
- x="x",
- y=["y"],
- range_x=[0, 100],
- range_y=[0, 100],
- log_x=True,
- log_y=True,
- title_x="x axis title",
- title_y="y axis title",
- ignore_outliers=True,
- groupby="hyperparam1",
- groupby_aggfunc="mean",
- groupby_rangefunc="minmax",
- smoothing_factor=0.5,
- smoothing_type="gaussian",
- smoothing_show_original=True,
- max_runs_to_show=10,
- plot_type="stacked-area",
- font_size="large",
- legend_position="west",
- ),
- wr.ScatterPlot(
- title="scatter title",
- x="y",
- y="y",
- # z='x',
- range_x=[0, 0.0005],
- range_y=[0, 0.0005],
- # range_z=[0,1],
- log_x=False,
- log_y=False,
- # log_z=True,
- running_ymin=True,
- running_ymean=True,
- running_ymax=True,
- font_size="small",
- regression=True,
- ),
- ],
- runsets=[wr.RunSet(project="", entity="")],
-)
-
-
-report.blocks = [panel_grids]
-report.save()
-```
-
-{{% /tab %}}
-{{< /tabpane >}}
-
-
-## Freeze a run set
-
-A report automatically updates run sets to show the latest data from the project. You can preserve the run set in a report by *freezing* that run set. When you freeze a run set, you preserve the state of the run set in a report at a point in time.
-
-To freeze a run set when viewing a report, click the snowflake icon in its panel grid near the **Filter** button.
-
-{{< img src="/images/reports/freeze_runset.png" alt="Freeze runset button" >}}
-
-## Group a run set programmatically
-
-Group runs in a run set programmatically with the [Workspace and Reports API]({{< relref "/ref/wandb_workspaces/reports" >}}).
-
-You can group runs in a run set by config values, run metadata or summary metrics. The following table lists the available grouping methods along with the available keys for that grouping method:
-
-| Grouping Method | Description |Available keys |
-| ---|------| --- |
-| Config values| Group runs by config values | Values specified in config parameter in `wandb.init(config=)` |
-| Run metadata| Group runs by run metadata | `State`, `Name`, `JobType` |
-| Summary metrics| Group runs by summary metrics | Values you log to a run with `wandb.Run.log()` |
-
-
-
-### Group runs by config values
-
-Group runs by config values to compare runs with similar configurations. Config values are parameters you specify in your run configuration `(wandb.init(config=))`. To group runs by config values, use the `config.` syntax, where `` is the name of the config value you want to group by.
-
-For example, the following code snippet first initializes a run with a config value for `group`, then groups runs in a report based on the `group` config value. Replace values for `` and `` with your W&B entity and project names.
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-entity = ""
-project = ""
-
-for group in ["control", "experiment_a", "experiment_b"]:
- for i in range(3):
- with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run:
- # Simulate some training
- for step in range(100):
- run.log({
- "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05),
- "loss": 1.0 - (step / 100) * 0.5
- })
-```
-
-Within your Python script or notebook, you can then group runs by the `config.group` value:
-
-```python
-runset = wr.Runset(
- project=project,
- entity=entity,
- groupby=["config.group"] # Group by the "group" config value
-)
-```
-
-Continuing from the previous example, you can create a report with the grouped run set:
-
-```python
-report = wr.Report(
- entity=entity,
- project=project,
- title="Grouped Runs Example",
-)
-
-report.blocks = [
- wr.PanelGrid(
- runsets=[runset],
- )
- ]
-
-report.save()
-```
-
-### Group runs by run metadata
-
-Group runs by a run's name (`Name`), state (`State`), or job type (`JobType`).
-
-Continuing from the previous example, you can group your runs by their name with the following code snippet:
-
-```python
-runset = wr.Runset(
- project=project,
- entity=entity,
- groupby=["Name"] # Group by run names
-)
-```
-
-{{% alert %}}
-The name of the run is the name you specify in the `wandb.init(name=)` parameter. If you do not specify a name, W&B generates a random name for the run.
-
-You can find the name of the run in the **Overview** page of a run in the W&B App or programmatically with `Api.runs().run.name`.
-{{% /alert %}}
-
-### Group runs by summary metrics
-
-The following examples demonstrate how to group runs by summary metrics. Summary metrics are the values you log to a run with `wandb.Run.log()`. After you log a run, you can find the names of your summary metrics in the W&B App under the **Summary** section of a run's **Overview** page.
-
-The syntax for grouping runs by summary metrics is `summary.`, where `` is the name of the summary metric you want to group by.
-
-For example, suppose you log a summary metric called `acc`:
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-entity = ""
-project = ""
-
-for group in ["control", "experiment_a", "experiment_b"]:
- for i in range(3):
- with wandb.init(entity=entity, project=project, group=group, config={"group": group, "run": i}, name=f"{group}_run_{i}") as run:
- # Simulate some training
- for step in range(100):
- run.log({
- "acc": 0.5 + (step / 100) * 0.3 + (i * 0.05),
- "loss": 1.0 - (step / 100) * 0.5
- })
-
-```
-
-You can then group runs by the `summary.acc` summary metric:
-
-```python
-runset = wr.Runset(
- project=project,
- entity=entity,
- groupby=["summary.acc"] # Group by summary values
-)
-```
-
-## Filter a run set programmatically
-
-Programmatically filter run sets and add them to a report with the [Workspace and Reports API]({{< relref "/ref/wandb_workspaces/reports" >}}).
-
-The general syntax for a filter expression is:
-
-```text
-Filter('key') operation
-```
-
-Where `key` is the name of the filter, `operation` is a comparison operator (e.g., `>`, `<`, `==`, `in`, `not in`, `or`, and `and`), and `` is the value to compare against. `Filter` is a placeholder for the type of filter you want to apply. The following table lists the available filters and their descriptions:
-
-| Filter | Description | Available keys |
-| ---|---| --- |
-|`Config('key')` | Filter by config values | Values specified in `config` parameter in `wandb.init(config=)`. |
-|`SummaryMetric('key')` | Filter by summary metrics | Values you log to a run with `wandb.Run.log()`. |
-|`Tags('key')` | Filter by tags | Tag values that you add to your run (programmatically or with the W&B App). |
-|`Metric('key')` | Filter by run properties | `tags`, `state`, `displayName`, `jobType` |
-
-Once you have defined your filters, you can create a report and pass the filtered run sets to `wr.PanelGrid(runsets=)`. See the **Report and Workspace API** tabs throughout this page for more information on how to add various elements to a report programmatically.
-
-The following examples demonstrate how to filter run sets in a report. Replace values enclosed in `<>` with your own values.
-
-### Config filters
-
-Filter a runset by one or more config values. Config values are parameters you specify in your run configuration (`wandb.init(config=)`).
-
-For example, the following code snippet first initializes a run with a config value for `learning_rate` and `batch_size`, then filters runs in a report based on the `learning_rate` config value.
-
-```python
-import wandb
-
-config = {
- "learning_rate": 0.01,
- "batch_size": 32,
-}
-
-with wandb.init(project="", entity="", config=config) as run:
- # Your training code here
- pass
-```
-
-Within your Python script or notebook, you can then programmatically filter runs that have a learning rate greater than `0.01`.
-
-```python
-import wandb_workspaces.reports.v2 as wr
-
-runset = wr.Runset(
- entity="",
- project="",
- filters="Config('learning_rate') > 0.01"
-)
-```
-
-You can also filter by multiple config values with the `and` operator:
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Config('learning_rate') > 0.01 and Config('batch_size') == 32"
-)
-```
-
-Continuing from the previous example, you can create a report with the filtered runset as follows:
-
-```python
-report = wr.Report(
- entity="",
- project="",
- title="My Report"
-)
-
-report.blocks = [
- wr.PanelGrid(
- runsets=[runset],
- panels=[
- wr.LinePlot(
- x="Step",
- y=["accuracy"],
- )
- ]
- )
-]
-
-report.save()
-```
-
-### Metric filters
-
-Filter run sets based on a run's: tag (`tags`), run state (`state`), run name (`displayName`), or job type (`jobType`).
-
-{{% alert %}}
-`Metric` filters posses a different syntax. Pass a list of values as a list.
-
-```text
-Metric('key') operation []
-```
-{{% /alert %}}
-
-For example, consider the following Python snippet that creates three runs and assigns each of them a name:
-
-```python
-import wandb
-
-with wandb.init(project="", entity="") as run:
- for i in range(3):
- run.name = f"run{i+1}"
- # Your training code here
- pass
-```
-
-When you create your report, you can filter runs by their display name. For example, to filter runs with names `run1`, `run2`, and `run3`, you can use the following code:
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Metric('displayName') in ['run1', 'run2', 'run3']"
-)
-```
-
-{{% alert %}}
-You can find the name of the run in the **Overview** page of a run in the W&B App or programmatically with `Api.runs().run.name`.
-{{% /alert %}}
-
-The following examples demonstrate how to filter a runset by the run's state (`finished`, `crashed`, or `running`):
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Metric('state') in ['finished']"
-)
-```
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Metric('state') not in ['crashed']"
-)
-```
-
-
-### SummaryMetric filters
-
-The following examples demonstrate how to filter a run set by summary metrics. Summary metrics are the values you log to a run with `wandb.Run.log()`. After you log a run, you can find the names of your summary metrics in the W&B App under the **Summary** section of a run's **Overview** page.
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="SummaryMetric('accuracy') > 0.9"
-)
-```
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Metric('state') in ['finished'] and SummaryMetric('train/train_loss') < 0.5"
-)
-```
-
-### Tags filters
-
-The following code snippet shows how to filter a runs set by its tags. Tags are values you add to a run (programmatically or with the W&B App).
-
-```python
-runset = wr.Runset(
- entity="",
- project="",
- filters="Tags('training') == 'training'"
-)
-```
-
-## Add code blocks
-
-Add code blocks to your report interactively with the App UI or with the W&B SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="App UI" value="app" %}}
-
-Enter a forward slash (`/`) in the report to display a dropdown menu. From the dropdown choose **Code**.
-
-Select the name of the programming language on the right hand of the code block. This will expand a dropdown. From the dropdown, select your programming language syntax. You can choose from Javascript, Python, CSS, JSON, HTML, Markdown, and YAML.
-
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api" %}}
-
-Use the `wr.CodeBlock` Class to create a code block programmatically. Provide the name of the language and the code you want to display for the language and code parameters, respectively.
-
-For example the proceeding example demonstrates a list in YAML file:
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(project="report-editing")
-
-report.blocks = [
- wr.CodeBlock(
- code=["this:", "- is", "- a", "cool:", "- yaml", "- file"], language="yaml"
- )
-]
-
-report.save()
-```
-
-This will render a code block similar to:
-
-```yaml
-this:
-- is
-- a
-cool:
-- yaml
-- file
-```
-
-The proceeding example demonstrates a Python code block:
-
-```python
-report = wr.Report(project="report-editing")
-
-
-report.blocks = [wr.CodeBlock(code=["Hello, World!"], language="python")]
-
-report.save()
-```
-
-This will render a code block similar to:
-
-```md
-Hello, World!
-```
-
-{{% /tab %}}
-
-{{% /tabpane %}}
-
-## Add markdown
-
-Add markdown to your report interactively with the App UI or with the W&B SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="App UI" value="app" %}}
-
-Enter a forward slash (`/`) in the report to display a dropdown menu. From the dropdown choose **Markdown**.
-
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api" %}}
-
-Use the `wandb.apis.reports.MarkdownBlock` Class to create a markdown block programmatically. Pass a string to the `text` parameter:
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(project="report-editing")
-
-report.blocks = [
- wr.MarkdownBlock(text="Markdown cell with *italics* and **bold** and $e=mc^2$")
-]
-```
-
-This will render a markdown block similar to:
-
-{{< img src="/images/reports/markdown.png" alt="Rendered markdown block" >}}
-
-{{% /tab %}}
-
-{{% /tabpane %}}
-
-
-## Add HTML elements
-
-Add HTML elements to your report interactively with the App UI or with the W&B SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="App UI" value="app" %}}
-
-Enter a forward slash (`/`) in the report to display a dropdown menu. From the dropdown select a type of text block. For example, to create an H2 heading block, select the `Heading 2` option.
-
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api" %}}
-
-Pass a list of one or more HTML elements to `wandb.apis.reports.blocks` attribute. The proceeding example demonstrates how to create an H1, H2, and an unordered list:
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(project="report-editing")
-
-report.blocks = [
- wr.H1(text="How Programmatic Reports work"),
- wr.H2(text="Heading 2"),
- wr.UnorderedList(items=["Bullet 1", "Bullet 2"]),
-]
-
-report.save()
-```
-
-This will render a HTML elements to the following:
-
-
-{{< img src="/images/reports/render_html.png" alt="Rendered HTML elements" >}}
-
-{{% /tab %}}
-
-{{% /tabpane %}}
-
-## Embed rich media links
-
-Embed rich media within the report with the App UI or with the W&B SDK.
-
-{{< tabpane text=true >}}
-{{% tab header="App UI" value="app" %}}
-
-Copy and past URLs into reports to embed rich media within the report. The following animations demonstrate how to copy and paste URLs from Twitter, YouTube, and SoundCloud.
-
-### Twitter
-
-Copy and paste a Tweet link URL into a report to view the Tweet within the report.
-
-{{< img src="/images/reports/twitter.gif" alt="Embedding Twitter content" >}}
-
-### Youtube
-
-Copy and paste a YouTube video URL link to embed a video in the report.
-
-{{< img src="/images/reports/youtube.gif" alt="Embedding YouTube videos" >}}
-
-### SoundCloud
-
-Copy and paste a SoundCloud link to embed an audio file into a report.
-
-{{< img src="/images/reports/soundcloud.gif" alt="Embedding SoundCloud audio" >}}
-
-{{% /tab %}}
-
-{{% tab header="Report and Workspace API" value="python_wr_api" %}}
-
-Pass a list of one or more embedded media objects to the `wandb.apis.reports.blocks` attribute. The proceeding example demonstrates how to embed video and Twitter media into a report:
-
-```python
-import wandb
-import wandb_workspaces.reports.v2 as wr
-
-report = wr.Report(project="report-editing")
-
-report.blocks = [
- wr.Video(url="https://www.youtube.com/embed/6riDJMI-Y8U"),
- wr.Twitter(
- embed_html='\n'
- ),
-]
-report.save()
-```
-
-{{% /tab %}}
-
-{{% /tabpane %}}
-
-## Duplicate and delete panel grids
-
-If you have a layout that you would like to reuse, you can select a panel grid and copy-paste it to duplicate it in the same report or even paste it into a different report.
-
-Highlight a whole panel grid section by selecting the drag handle in the upper right corner. Click and drag to highlight and select a region in a report such as panel grids, text, and headings.
-
-{{< img src="/images/reports/demo_copy_and_paste_a_panel_grid_section.gif" alt="Copying panel grids" >}}
-
-Select a panel grid and press `delete` on your keyboard to delete a panel grid.
-
-{{< img src="/images/reports/delete_panel_grid.gif" alt="Deleting panel grids" >}}
-
-## Collapse headers to organize Reports
-
-Collapse headers in a Report to hide content within a text block. When the report is loaded, only headers that are expanded will show content. Collapsing headers in reports can help organize your content and prevent excessive data loading. The proceeding gif demonstrates the process.
-
-{{< img src="/images/reports/collapse_headers.gif" alt="Collapsing headers in a report." >}}
-
-## Visualize relationships across multiple dimensions
-
-To effectively visualize relationships across multiple dimensions, use a color gradient to represent one of the variables. This enhances clarity and makes patterns easier to interpret.
-
-1. Choose a variable to represent with a color gradient (e.g., penalty scores, learning rates, etc.). This allows for a clearer understanding of how penalty (color) interacts with reward/side effects (y-axis) over training time (x-axis).
-2. Highlight key trends. Hovering over a specific group of runs highlights them in the visualization.
-
diff --git a/content/en/guides/core/reports/embed-reports.md b/content/en/guides/core/reports/embed-reports.md
deleted file mode 100644
index d1e00ca180..0000000000
--- a/content/en/guides/core/reports/embed-reports.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-description: Embed W&B reports directly into Notion or with an HTML IFrame element.
-menu:
- default:
- identifier: embed-reports
- parent: reports
-title: Embed a report
-weight: 50
----
-
-## HTML iframe element
-
-Select the **Share** button on the upper right hand corner within a report. A modal window will appear. Within the modal window, select **Copy embed code**. The copied code will render within an Inline Frame (IFrame) HTML element. Paste the copied code into an iframe HTML element of your choice.
-
-{{% alert %}}
-Only **public** reports are viewable when embedded.
-{{% /alert %}}
-
-{{< img src="/images/reports/get_embed_url.gif" alt="Getting embed code" >}}
-
-## Confluence
-
-The proceeding animation demonstrates how to insert the direct link to the report within an IFrame cell in Confluence.
-
-{{< img src="//images/reports/embed_iframe_confluence.gif" alt="Embedding in Confluence" >}}
-
-## Notion
-
-The proceeding animation demonstrates how to insert a report into a Notion document using an Embed block in Notion and the report's embedded code.
-
-{{< img src="//images/reports/embed_iframe_notion.gif" alt="Embedding in Notion" >}}
-
-## Gradio
-
-You can use the `gr.HTML` element to embed W&B Reports within Gradio Apps and use them within Hugging Face Spaces.
-
-```python
-import gradio as gr
-
-
-def wandb_report(url):
- iframe = f'