diff --git a/.vitepress/components/ComparisonBanner.vue b/.vitepress/components/ComparisonBanner.vue
new file mode 100644
index 0000000..dae52e2
--- /dev/null
+++ b/.vitepress/components/ComparisonBanner.vue
@@ -0,0 +1,346 @@
+
+
+
+
+
+
+
{{ verdictTitle }}
+
{{ verdictDescription }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
{{ competitorA.name }}
+
+
+
+ VS
+
+
+
+
+
![]()
+
+
{{ competitorB.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vitepress/components/Footer.vue b/.vitepress/components/Footer.vue
index c000472..a10b6b3 100644
--- a/.vitepress/components/Footer.vue
+++ b/.vitepress/components/Footer.vue
@@ -22,6 +22,10 @@
Security Notice
+
@@ -113,7 +128,6 @@ const currentYear = computed(() => new Date().getFullYear())
.velda-footer {
background: var(--vp-c-bg-soft);
border-top: 1px solid var(--vp-c-divider);
- margin-top: 4rem;
width: 100%;
position: relative;
z-index: 30;
@@ -135,7 +149,7 @@ const currentYear = computed(() => new Date().getFullYear())
@media (min-width: 768px) {
.footer-columns {
- grid-template-columns: repeat(3, 1fr);
+ grid-template-columns: repeat(4, 1fr);
gap: 3rem;
}
}
diff --git a/.vitepress/theme/ComparisonLayout.vue b/.vitepress/theme/ComparisonLayout.vue
new file mode 100644
index 0000000..bef70ed
--- /dev/null
+++ b/.vitepress/theme/ComparisonLayout.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts
index 2094dd4..b6e7936 100644
--- a/.vitepress/theme/index.ts
+++ b/.vitepress/theme/index.ts
@@ -7,10 +7,12 @@ import FeatureComparison from '../components/FeatureComparison.vue'
import CallToAction from '../components/CallToAction.vue'
import BlogHome from '../components/BlogHome.vue'
import Footer from '../components/Footer.vue'
+import ComparisonBanner from '../components/ComparisonBanner.vue'
import CustomLayout from './CustomLayout.vue'
import Comparison from './comparison.vue'
import { Icon } from '@iconify/vue'
import setupGA from './ga'
+import ComparisonLayout from './ComparisonLayout.vue'
declare global {
interface Window {
@@ -28,6 +30,9 @@ export default {
app.component('CallToAction', CallToAction)
app.component('BlogHome', BlogHome)
app.component('Footer', Footer)
+ app.component('ComparisonBanner', ComparisonBanner)
+ app.component('comparison', ComparisonLayout)
+ app.component('ComparisonDoc', ComparisonLayout)
app.component('Icon', Icon)
app.component('Comparison', Comparison)
setupGA(router)
diff --git a/public/slurm.svg b/public/slurm.svg
new file mode 100644
index 0000000..3d1e7d2
--- /dev/null
+++ b/public/slurm.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/scripts/generate-sitemap.js b/scripts/generate-sitemap.js
index 097608d..56b55f7 100644
--- a/scripts/generate-sitemap.js
+++ b/scripts/generate-sitemap.js
@@ -124,7 +124,8 @@ async function generateSitemap() {
const docsPages = [
{ label: 'Why Velda', path: '/intro', desc: 'Introduction and core concepts' },
{ label: 'Connect to Velda Instance', path: '/connect', desc: 'Setup and connection guide' },
- { label: 'Run Workloads', path: '/run', desc: 'How to execute your workloads' }
+ { label: 'Run Workloads', path: '/run', desc: 'How to execute your workloads' },
+ { label: 'Slurm Alternative', path: '/slurm-alternative', desc: 'Compare Velda with Slurm' }
]
// Collect blog posts (exclude README and template)
@@ -149,7 +150,7 @@ async function generateSitemap() {
blogPosts.sort((a,b) => (b.date || '') .localeCompare(a.date || ''))
// Build markdown content similar to existing sitemap.md
- let md = `---\ntitle: Sitemap\ndescription: Complete site navigation for Velda - find all pages, blog posts, and documentation\n---\n\n# Sitemap\n\n## 🏠 Main Pages\n`
+ let md = `---\nsidebar: false\ntitle: Sitemap\ndescription: Complete site navigation for Velda - find all pages, blog posts, and documentation\n---\n\n# Sitemap\n\n## 🏠 Main Pages\n`
for (const p of mainPages) {
md += `- [${p.label}](${p.path}) - ${p.desc}\n`
diff --git a/sitemap.md b/sitemap.md
index 9305d37..f9a3da4 100644
--- a/sitemap.md
+++ b/sitemap.md
@@ -1,4 +1,5 @@
---
+sidebar: false
title: Sitemap
description: Complete site navigation for Velda - find all pages, blog posts, and documentation
---
@@ -18,6 +19,7 @@ description: Complete site navigation for Velda - find all pages, blog posts, an
- [Why Velda](/intro) - Introduction and core concepts
- [Connect to Velda Instance](/connect) - Setup and connection guide
- [Run Workloads](/run) - How to execute your workloads
+- [Slurm Alternative](/slurm-alternative) - Compare Velda with Slurm
## 📰 Blog
- [Blog Home](/blog/) - Latest posts and updates
@@ -33,4 +35,4 @@ description: Complete site navigation for Velda - find all pages, blog posts, an
---
-*Last updated: 2025-09-23*
+*Last updated: 2025-09-25*
diff --git a/slurm-alternative.md b/slurm-alternative.md
new file mode 100644
index 0000000..59bf364
--- /dev/null
+++ b/slurm-alternative.md
@@ -0,0 +1,79 @@
+---
+layout: page
+sidebar: false
+title: "Velda vs Slurm: Modern Cloud Development Platform"
+description: "Compare Velda's cloud-native development platform with traditional Slurm HPC systems. Discover Kubernetes-based architecture, better resource utilization, and superior developer experience."
+keywords: ["Velda vs Slurm", "HPC alternative", "cloud development", "Kubernetes pods", "workload isolation", "container deployment", "modern HPC", "Slurm replacement"]
+image: "https://velda.io/og-preview.png"
+---
+
+
+
+
+
+
+
+
+| Feature | Slurm | Velda |
+|--------------------|--------------------|--------------------|
+| **Containerized Execution**
Each task runs in a container that is isolated with other workloads on the same node, and developers cannot access tasks of other users| ❌ | ✅ |
+| **Environment customization**
Every workload can run in fully customizable environment, including system packages(apt, pip, etc.) | ❌ | ✅ |
+| **Email**
Get notified when your job is completed | ❌ | ✅ |
+| **Cluster autoscale**
Allocate compute resources from Cloud / Kubernetes based on demand | ❌ | ✅ |
+| **Interactive Development**
Developers have access to dedicated dev-environments, with full capability like IDEs and docker access | ❌ | ✅ |
+| **Service deployment**
Run service directly in the cluster in one command, and access them with multiple options like DNS names, port-forwarding or load-balancer | ❌ | ✅ |
+| **SSO integration**
Use your SSO provider to manage user access / login | ❌ | ✅ |
+| **RBAC**
Role based access control: Limit who can see other's job/data | ❌ | ✅ |
+| **API access**
Run jobs, manage workloads, analyze task results, through powerful and secure rest API | ❌ | ✅ |
+| **Web access**
From browser, directly start development in VS Code Web, or view task logs | Third-party | ✅ |
+
+
+
+# Velda vs. Slurm
+# What's right for me?
+
+Both Velda and Slurm serve as options for managing HPC clusters. They provide similar command-line interface to run jobs,
+assuming all nodes have a consistent environment setup.
+
+## Architecture and Deployment Model
+
+**Slurm's Traditional Node-Based System:**
+Slurm operates on a legacy HPC model where entire compute nodes are allocated to jobs, regardless of actual resource requirements. This approach, designed for traditional MPI applications, creates significant inefficiencies in modern heterogeneous workloads. Users must understand complex partition systems, quality-of-service (QoS) configurations, and resource limit hierarchies.
+
+**Velda's Cloud-Native Architecture:**
+Velda leverages multiple backend options to allocate compute resources: VMs from your cloud provider, Kubernetes to deploy workloads as pods, or through custom scripts like SSH.
+This enables precise resource allocation and efficient multi-tenancy.
+The platform abstracts away infrastructure complexity while providing
+enterprise-grade security, automatic scaling, and comprehensive observability.
+
+## Security and Isolation
+
+Slurm provides basic process isolation through Linux user accounts and relies on shared filesystems for data access. This approach creates potential security vulnerabilities and makes it difficult to ensure complete workload separation, especially in multi-tenant research environments or when workloads need different system dependencies.
+
+Velda implements per-user-per-instance containers. Each user's workload runs in a completely isolated environment with
+guaranteed resource limits and secure communication channels, ensuring consistency across all jobs initiated by that instance.
+This architecture allows fully customizable packages to be installed, while enabling safe multi-tenancy even for sensitive computational workloads.
+
+## Developer Experience and Workflow Integration
+
+Traditional HPC systems require significant domain expertise, with users needing to understand batch schedulers, module systems, and job script creation. Debugging running jobs is challenging, and interactive development workflows are poorly supported.
+
+Velda prioritizes developer experience with intuitive command-line interfaces that feel like local development. Full support for modern IDEs, real-time debugging, and seamless port forwarding enables productive development workflows. Teams can use their existing tools and practices without HPC-specific training.
+
+## Enterprise Features and Compliance
+Modern organizations require robust access controls, audit logging, and compliance capabilities. Slurm's basic accounting and limited RBAC features may not meet enterprise security requirements.
+
+Velda provides comprehensive enterprise features including SSO integration, detailed audit trails, usage reporting, RBAC policies. Integration with existing security infrastructure ensures seamless adoption in regulated environments.
+
+
\ No newline at end of file