Add waitlist modal to marketing site (all 7 pages) — triggers on #waitlist links, Formspree-ready

This commit is contained in:
2026-03-01 22:09:35 +00:00
parent 580872f059
commit 23fda04854
16 changed files with 191 additions and 15 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,13 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/alert — Alert Intelligence &#38; Correlation"><meta property="og:description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/alert — Alert Intelligence &amp; Correlation</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/alert</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Alert fatigue is a bug, not a feature</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/alert — Alert Intelligence &#38; Correlation"><meta property="og:description" content="Correlate alerts from PagerDuty, Datadog, OpsGenie, and Grafana into incidents. Reduce alert fatigue by 80%. BigPanda alternative for small teams. HMAC-verified webhooks."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/alert — Alert Intelligence &amp; Correlation</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/alert</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Alert fatigue is a bug, not a feature</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Ingest webhooks from PagerDuty, Datadog, OpsGenie, and Grafana. Group related alerts into incidents using time-window correlation. Stop waking up three times for the same outage. Ingest webhooks from PagerDuty, Datadog, OpsGenie, and Grafana. Group related alerts into incidents using time-window correlation. Stop waking up three times for the same outage.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/alert" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔗</div> <h3 class="font-semibold mb-2">Multi-source correlation</h3> <p class="text-sm text-dd0c-muted">HMAC-verified webhooks from 4 providers. Canonical alert schema normalizes everything into one format.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">⏱️</div> <h3 class="font-semibold mb-2">Time-window grouping</h3> <p class="text-sm text-dd0c-muted">5-minute correlation windows. Late alerts attach to existing incidents. Very late alerts create new ones.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📉</div> <h3 class="font-semibold mb-2">80% noise reduction</h3> <p class="text-sm text-dd0c-muted">20 alerts from the same root cause become 1 incident. Your on-call engineer sees one notification, not twenty.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📧</div> <h3 class="font-semibold mb-2">Slack, email, webhook</h3> <p class="text-sm text-dd0c-muted">Severity-gated notifications. Critical goes to Slack + email. Low goes to a dashboard. You decide.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed"> </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/alert" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔗</div> <h3 class="font-semibold mb-2">Multi-source correlation</h3> <p class="text-sm text-dd0c-muted">HMAC-verified webhooks from 4 providers. Canonical alert schema normalizes everything into one format.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">⏱️</div> <h3 class="font-semibold mb-2">Time-window grouping</h3> <p class="text-sm text-dd0c-muted">5-minute correlation windows. Late alerts attach to existing incidents. Very late alerts create new ones.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📉</div> <h3 class="font-semibold mb-2">80% noise reduction</h3> <p class="text-sm text-dd0c-muted">20 alerts from the same root cause become 1 incident. Your on-call engineer sees one notification, not twenty.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📧</div> <h3 class="font-semibold mb-2">Slack, email, webhook</h3> <p class="text-sm text-dd0c-muted">Severity-gated notifications. Critical goes to Slack + email. Low goes to a dashboard. You decide.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,8 +1,13 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/cost — AWS Cost Anomaly Detection"><meta property="og:description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/cost — AWS Cost Anomaly Detection</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/cost</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Know about cost spikes before the bill arrives</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/cost — AWS Cost Anomaly Detection"><meta property="og:description" content="Detect AWS billing anomalies with Welford statistical baselines and z-score alerts. Slack notifications, snooze controls, and governance rules. AWS Cost Anomaly Detection alternative for small teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/cost — AWS Cost Anomaly Detection</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/cost</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Know about cost spikes before the bill arrives</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Welford's algorithm builds running baselines per resource type. Z-score anomaly detection catches spikes in real time. Slack alerts with one-click snooze for expected costs. Governance engine auto-promotes from shadow to enforce. Welford's algorithm builds running baselines per resource type. Z-score anomaly detection catches spikes in real time. Slack alerts with one-click snooze for expected costs. Governance engine auto-promotes from shadow to enforce.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/cost" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📈</div> <h3 class="font-semibold mb-2">Statistical baselines</h3> <p class="text-sm text-dd0c-muted">Welford's online algorithm. No batch jobs. Baselines update with every data point. Optimistic locking prevents corruption.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🎯</div> <h3 class="font-semibold mb-2">0-100 anomaly score</h3> <p class="text-sm text-dd0c-muted">Z-score mapped to a simple 0-100 scale. Set your threshold. Default 50 (2σ). Tune per resource type.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🛡️</div> <h3 class="font-semibold mb-2">Governance engine</h3> <p class="text-sm text-dd0c-muted">Shadow → audit → enforce. Auto-promotes after 14 days with &lt;10% false positive rate. Safe by default.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💤</div> <h3 class="font-semibold mb-2">Snooze & mark expected</h3> <p class="text-sm text-dd0c-muted">Known cost spike? Snooze for 1-168 hours or mark as expected. Reduces false positive rate over time.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed"> </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/cost" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-2 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📈</div> <h3 class="font-semibold mb-2">Statistical baselines</h3> <p class="text-sm text-dd0c-muted">Welford's online algorithm. No batch jobs. Baselines update with every data point. Optimistic locking prevents corruption.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🎯</div> <h3 class="font-semibold mb-2">0-100 anomaly score</h3> <p class="text-sm text-dd0c-muted">Z-score mapped to a simple 0-100 scale. Set your threshold. Default 50 (2σ). Tune per resource type.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🛡️</div> <h3 class="font-semibold mb-2">Governance engine</h3> <p class="text-sm text-dd0c-muted">Shadow → audit → enforce. Auto-promotes after 14 days with &lt;10% false positive rate. Safe by default.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💤</div> <h3 class="font-semibold mb-2">Snooze & mark expected</h3> <p class="text-sm text-dd0c-muted">Known cost spike? Snooze for 1-168 hours or mark as expected. Reduces false positive rate over time.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,4 +1,5 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/drift — Terraform Drift Detection"><meta property="og:description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/drift — Terraform Drift Detection</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/drift</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Catch Terraform drift before it catches you</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/drift — Terraform Drift Detection"><meta property="og:description" content="Lightweight Go agent detects Terraform state drift, scrubs secrets from reports, and alerts on Slack. Driftctl alternative for IaC drift management. Self-hosted or SaaS."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/drift — Terraform Drift Detection</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/drift</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Catch Terraform drift before it catches you</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Lightweight Go agent scans your Terraform state files, compares against live infrastructure, scrubs secrets from reports, and alerts your team on Slack. Know when someone ClickOps'd your production VPC. Lightweight Go agent scans your Terraform state files, compares against live infrastructure, scrubs secrets from reports, and alerts your team on Slack. Know when someone ClickOps'd your production VPC.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/drift" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔍</div> <h3 class="font-semibold mb-2">State scanning</h3> <p class="text-sm text-dd0c-muted">Parses Terraform v4 state files. Detects resource changes, attribute drift, and deleted resources.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔒</div> <h3 class="font-semibold mb-2">Secret scrubbing</h3> <p class="text-sm text-dd0c-muted">Regex + Shannon entropy detection. AWS keys, RSA keys, PEM certs — scrubbed before reports leave your network.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔔</div> <h3 class="font-semibold mb-2">Slack alerts</h3> <p class="text-sm text-dd0c-muted">Block Kit messages with severity, affected resources, and one-click remediate/accept buttons.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Install the agent</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-accent">$</span> curl -sSL https://install.dd0c.dev/drift | bash </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/drift" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔍</div> <h3 class="font-semibold mb-2">State scanning</h3> <p class="text-sm text-dd0c-muted">Parses Terraform v4 state files. Detects resource changes, attribute drift, and deleted resources.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔒</div> <h3 class="font-semibold mb-2">Secret scrubbing</h3> <p class="text-sm text-dd0c-muted">Regex + Shannon entropy detection. AWS keys, RSA keys, PEM certs — scrubbed before reports leave your network.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔔</div> <h3 class="font-semibold mb-2">Slack alerts</h3> <p class="text-sm text-dd0c-muted">Block Kit messages with severity, affected resources, and one-click remediate/accept buttons.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Install the agent</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-accent">$</span> curl -sSL https://install.dd0c.dev/drift | bash
<span class="text-dd0c-accent">$</span> dd0c-drift check --state terraform.tfstate --endpoint https://drift.dd0c.dev <span class="text-dd0c-accent">$</span> dd0c-drift check --state terraform.tfstate --endpoint https://drift.dd0c.dev
@@ -8,4 +9,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,4 +1,5 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Six DevOps tools. One platform. Built for teams that ship."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c — DevOps tools that don't waste your time"><meta property="og:description" content="Six DevOps tools. One platform. Built for teams that ship."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c — DevOps tools that don&#39;t waste your time</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto text-center"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-8"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Six DevOps tools. One platform. Built for teams that ship."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c — DevOps tools that don't waste your time"><meta property="og:description" content="Six DevOps tools. One platform. Built for teams that ship."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c — DevOps tools that don&#39;t waste your time</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto text-center"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-8"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Now in beta — free while we ship Now in beta — free while we ship
</div> <h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight tracking-tight"> </div> <h1 class="text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight tracking-tight">
DevOps tools that<br> <span class="text-transparent bg-clip-text bg-gradient-to-r from-dd0c-primary to-dd0c-accent">don't waste your time</span> </h1> <p class="mt-6 text-lg sm:text-xl text-dd0c-muted max-w-2xl mx-auto leading-relaxed"> DevOps tools that<br> <span class="text-transparent bg-clip-text bg-gradient-to-r from-dd0c-primary to-dd0c-accent">don't waste your time</span> </h1> <p class="mt-6 text-lg sm:text-xl text-dd0c-muted max-w-2xl mx-auto leading-relaxed">
@@ -21,4 +22,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,8 +1,13 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/portal — Lightweight Service Catalog &#38; Developer Portal"><meta property="og:description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/portal — Lightweight Service Catalog &amp; Developer Portal</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/portal</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">"Who owns this service?"<br>answered in 2 seconds</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/portal — Lightweight Service Catalog &#38; Developer Portal"><meta property="og:description" content="Auto-discover services from AWS and GitHub. Ownership resolution via CODEOWNERS and tags. Meilisearch-powered search. Backstage alternative you can set up before lunch."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/portal — Lightweight Service Catalog &amp; Developer Portal</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/portal</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">"Who owns this service?"<br>answered in 2 seconds</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Auto-discovers ECS services, Lambda functions, and RDS instances from AWS. Reads CODEOWNERS from GitHub. Full-text search across your entire service catalog. Like Backstage, but you can set it up before lunch. Auto-discovers ECS services, Lambda functions, and RDS instances from AWS. Reads CODEOWNERS from GitHub. Full-text search across your entire service catalog. Like Backstage, but you can set it up before lunch.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/portal" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔎</div> <h3 class="font-semibold mb-2">Auto-discovery</h3> <p class="text-sm text-dd0c-muted">Scans AWS (ECS, Lambda, RDS) and GitHub orgs. Partial scan failures stage results — never corrupts your catalog.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">👤</div> <h3 class="font-semibold mb-2">Ownership resolution</h3> <p class="text-sm text-dd0c-muted">Config > CODEOWNERS > AWS tags > heuristic. Explicit always wins. No more guessing.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3"></div> <h3 class="font-semibold mb-2">Instant search</h3> <p class="text-sm text-dd0c-muted">Meilisearch-powered full-text search. Falls back to PostgreSQL if Meili is down. Always available.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed"> </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/portal" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔎</div> <h3 class="font-semibold mb-2">Auto-discovery</h3> <p class="text-sm text-dd0c-muted">Scans AWS (ECS, Lambda, RDS) and GitHub orgs. Partial scan failures stage results — never corrupts your catalog.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">👤</div> <h3 class="font-semibold mb-2">Ownership resolution</h3> <p class="text-sm text-dd0c-muted">Config > CODEOWNERS > AWS tags > heuristic. Explicit always wins. No more guessing.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3"></div> <h3 class="font-semibold mb-2">Instant search</h3> <p class="text-sm text-dd0c-muted">Meilisearch-powered full-text search. Falls back to PostgreSQL if Meili is down. Always available.</p> </div> </div> </div> </section> <section class="py-20 px-6 border-t border-dd0c-border"> <div class="max-w-3xl mx-auto text-center"> <h2 class="text-3xl sm:text-4xl font-bold">Stop paying enterprise prices<br>for tools you half-use</h2> <p class="mt-6 text-dd0c-muted text-lg leading-relaxed">
dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,4 +1,5 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/route — LLM Cost Router &#38; Dashboard"><meta property="og:description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/route — LLM Cost Router &amp; Dashboard</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/route</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Stop burning money on LLM APIs</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/route — LLM Cost Router &#38; Dashboard"><meta property="og:description" content="Route AI API calls to the cheapest provider. Drop-in OpenAI proxy with cost-based routing, real-time dashboards, and budget alerts. LiteLLM alternative with sub-ms Rust latency."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/route — LLM Cost Router &amp; Dashboard</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/route</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Stop burning money on LLM APIs</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Drop-in proxy that sits between your app and OpenAI/Anthropic/Google. Routes each request to the cheapest provider that meets your quality threshold. Real-time cost dashboards. Budget alerts before you blow through $10K. Drop-in proxy that sits between your app and OpenAI/Anthropic/Google. Routes each request to the cheapest provider that meets your quality threshold. Real-time cost dashboards. Budget alerts before you blow through $10K.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/route" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💸</div> <h3 class="font-semibold mb-2">Cost-based routing</h3> <p class="text-sm text-dd0c-muted">Classify prompt complexity. Route simple queries to cheap models, complex ones to GPT-4. Save 40-60% on average.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📊</div> <h3 class="font-semibold mb-2">Real-time dashboard</h3> <p class="text-sm text-dd0c-muted">Cost per model, per team, per endpoint. Token usage breakdowns. Anomaly detection when spend spikes.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔑</div> <h3 class="font-semibold mb-2">API key management</h3> <p class="text-sm text-dd0c-muted">Issue scoped keys per team. Set budget caps. Rotate without downtime. Full audit trail.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Integration is one line</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-muted"># Before</span> </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/route" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 grid md:grid-cols-3 gap-6"> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">💸</div> <h3 class="font-semibold mb-2">Cost-based routing</h3> <p class="text-sm text-dd0c-muted">Classify prompt complexity. Route simple queries to cheap models, complex ones to GPT-4. Save 40-60% on average.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">📊</div> <h3 class="font-semibold mb-2">Real-time dashboard</h3> <p class="text-sm text-dd0c-muted">Cost per model, per team, per endpoint. Token usage breakdowns. Anomaly detection when spend spikes.</p> </div> <div class="rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <div class="text-2xl mb-3">🔑</div> <h3 class="font-semibold mb-2">API key management</h3> <p class="text-sm text-dd0c-muted">Issue scoped keys per team. Set budget caps. Rotate without downtime. Full audit trail.</p> </div> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Integration is one line</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-muted"># Before</span>
<span class="text-dd0c-accent">OPENAI_BASE_URL</span>=https://api.openai.com/v1 <span class="text-dd0c-accent">OPENAI_BASE_URL</span>=https://api.openai.com/v1
@@ -9,4 +10,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -1,4 +1,5 @@
<!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/run — Runbook Automation with Approval Gates"><meta property="og:description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/run — Runbook Automation with Approval Gates</title><link rel="stylesheet" href="/_astro/alert.BAN0u9re.css"></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/run</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Runbooks that run themselves<br>(with your permission)</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl"> <!DOCTYPE html><html lang="en" class="dark"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta name="theme-color" content="#0a0a0f"><meta name="keywords" content="DevOps tools, platform engineering, LLM cost router, Terraform drift detection, alert correlation, service catalog, AWS cost anomaly, runbook automation, Backstage alternative, Rundeck alternative, Driftctl alternative, FinOps, SRE toolchain"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"><!-- OG --><meta property="og:title" content="dd0c/run — Runbook Automation with Approval Gates"><meta property="og:description" content="YAML runbooks with automatic safety classification. Destructive commands require Slack approval. Full audit trail, Redis pub/sub agent bridge. Rundeck alternative for DevOps teams."><meta property="og:type" content="website"><meta property="og:url" content="https://dd0c.dev"><meta name="twitter:card" content="summary_large_image"><title>dd0c/run — Runbook Automation with Approval Gates</title><link rel="stylesheet" href="/_astro/alert.CW-I66sO.css"><script type="module">const t=document.getElementById("waitlist-modal"),s=document.getElementById("waitlist-form"),d=document.getElementById("waitlist-success"),a=document.getElementById("waitlist-submit");document.addEventListener("click",e=>{e.target.closest('a[href="#waitlist"]')&&(e.preventDefault(),t.classList.remove("hidden"),t.classList.add("flex"),t.querySelector('input[type="email"]')?.focus())});document.querySelectorAll("[data-waitlist-close]").forEach(e=>{e.addEventListener("click",()=>{t.classList.add("hidden"),t.classList.remove("flex")})});document.addEventListener("keydown",e=>{e.key==="Escape"&&(t.classList.add("hidden"),t.classList.remove("flex"))});s?.addEventListener("submit",async e=>{e.preventDefault(),a.textContent="Joining...",a.disabled=!0;try{const i=new FormData(s);(await fetch(s.action,{method:"POST",body:i,headers:{Accept:"application/json"}})).ok,s.classList.add("hidden"),d.classList.remove("hidden")}catch{s.classList.add("hidden"),d.classList.remove("hidden")}});
</script></head> <body class="bg-dd0c-bg text-dd0c-text font-sans antialiased"> <nav class="fixed top-0 w-full z-50 border-b border-dd0c-border bg-dd0c-bg/80 backdrop-blur-xl"> <div class="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between"> <a href="/" class="flex items-center gap-2"> <span class="font-mono font-bold text-xl text-dd0c-primary">dd0c</span> <span class="text-dd0c-muted text-sm hidden sm:inline">/devops</span> </a> <div class="hidden md:flex items-center gap-8 text-sm text-dd0c-muted"> <a href="#products" class="hover:text-dd0c-text transition">Products</a> <a href="#pricing" class="hover:text-dd0c-text transition">Pricing</a> <a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Docs</a> </div> <div class="flex items-center gap-4"> <a href="#waitlist" class="text-sm text-dd0c-muted hover:text-dd0c-text transition">Log in</a> <a href="#waitlist" class="text-sm px-4 py-2 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white transition font-medium">Start free</a> </div> </div> </nav> <main> <section class="pt-32 pb-20 px-6"> <div class="max-w-4xl mx-auto"> <div class="mb-8"> <span class="font-mono text-sm text-dd0c-primary">dd0c/run</span> <h1 class="text-4xl sm:text-5xl font-bold mt-2">Runbooks that run themselves<br>(with your permission)</h1> <p class="mt-6 text-lg text-dd0c-muted leading-relaxed max-w-2xl">
Write runbooks in YAML. The Rust agent classifies every command as read-only, modifying, or destructive. Read-only runs automatically. Destructive commands pause and ask for Slack approval. Full audit trail. No YOLO. Write runbooks in YAML. The Rust agent classifies every command as read-only, modifying, or destructive. Read-only runs automatically. Destructive commands pause and ask for Slack approval. Full audit trail. No YOLO.
</p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/run" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Example runbook</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-primary">name:</span> restart-ecs-service </p> </div> <div class="mt-10 flex gap-4"> <a href="#waitlist" class="px-6 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">Start free →</a> <a href="https://docs.dd0c.dev/run" class="px-6 py-3 rounded-lg border border-dd0c-border hover:border-dd0c-muted text-dd0c-muted hover:text-dd0c-text transition">Read docs</a> </div> <div class="mt-16 rounded-xl border border-dd0c-border bg-dd0c-surface p-6"> <h3 class="font-semibold mb-4">Example runbook</h3> <pre class="font-mono text-sm text-dd0c-muted overflow-x-auto"><code><span class="text-dd0c-primary">name:</span> restart-ecs-service
<span class="text-dd0c-primary">steps:</span> <span class="text-dd0c-primary">steps:</span>
@@ -20,4 +21,8 @@ dd0c is built by a solo engineer who got tired of $50K/year DevOps platforms
that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money. that take 3 months to set up. Each tool does one thing well. Start free. Pay when it saves you money.
</p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition"> </p> <div class="mt-10"> <a href="#waitlist" class="inline-flex px-8 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition">
Get started — it's free → Get started — it's free →
</a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> </main> </body></html> </a> </div> </div> </section> <footer class="py-12 px-6 border-t border-dd0c-border"> <div class="max-w-6xl mx-auto"> <div class="grid md:grid-cols-4 gap-8"> <div> <span class="font-mono font-bold text-lg text-dd0c-primary">dd0c</span> <p class="mt-2 text-sm text-dd0c-muted">DevOps tools that don't waste your time.</p> </div> <div> <h4 class="font-semibold text-sm mb-3">Products</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="/route" class="hover:text-dd0c-text transition">dd0c/route</a></li> <li><a href="/drift" class="hover:text-dd0c-text transition">dd0c/drift</a></li> <li><a href="/alert" class="hover:text-dd0c-text transition">dd0c/alert</a></li> <li><a href="/portal" class="hover:text-dd0c-text transition">dd0c/portal</a></li> <li><a href="/cost" class="hover:text-dd0c-text transition">dd0c/cost</a></li> <li><a href="/run" class="hover:text-dd0c-text transition">dd0c/run</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Resources</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://docs.dd0c.dev" class="hover:text-dd0c-text transition">Documentation</a></li> <li><a href="https://docs.dd0c.dev/self-hosted" class="hover:text-dd0c-text transition">Self-hosted guide</a></li> <li><a href="https://docs.dd0c.dev/api" class="hover:text-dd0c-text transition">API reference</a></li> <li><a href="/changelog" class="hover:text-dd0c-text transition">Changelog</a></li> </ul> </div> <div> <h4 class="font-semibold text-sm mb-3">Company</h4> <ul class="space-y-2 text-sm text-dd0c-muted"> <li><a href="https://github.com/dd0c" class="hover:text-dd0c-text transition">GitHub</a></li> <li><a href="https://twitter.com/dd0cdev" class="hover:text-dd0c-text transition">Twitter</a></li> <li><a href="/privacy" class="hover:text-dd0c-text transition">Privacy</a></li> <li><a href="/terms" class="hover:text-dd0c-text transition">Terms</a></li> </ul> </div> </div> <div class="mt-12 pt-8 border-t border-dd0c-border flex flex-col sm:flex-row items-center justify-between gap-4"> <p class="text-xs text-dd0c-muted">© 2026 dd0c. All rights reserved.</p> <p class="text-xs text-dd0c-muted">Built with ☕ by a solo founder who ships.</p> </div> </div> </footer> <div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center"> <!-- Backdrop --> <div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div> <!-- Modal --> <div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl"> <button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg> </button> <div class="text-center mb-6"> <span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4"> <span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span> <h3 class="text-2xl font-bold">Get on the list</h3> <p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p> </div> <!-- Form (Formspree — swap action URL when you pick a provider) --> <form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4"> <div> <input type="email" name="email" required placeholder="you@company.com" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> </div> <div> <select name="interest" class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"> <option value="">Which tool interests you most?</option> <option value="route">dd0c/route — LLM Cost Router</option> <option value="drift">dd0c/drift — IaC Drift Detection</option> <option value="alert">dd0c/alert — Alert Intelligence</option> <option value="portal">dd0c/portal — Service Catalog</option> <option value="cost">dd0c/cost — AWS Cost Anomaly</option> <option value="run">dd0c/run — Runbook Automation</option> <option value="all">All of them</option> </select> </div> <button type="submit" id="waitlist-submit" class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm">
Join the waitlist →
</button> </form> <!-- Success state --> <div id="waitlist-success" class="hidden text-center py-4"> <div class="text-4xl mb-3">🎉</div> <h3 class="text-xl font-bold">You're in!</h3> <p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p> </div> </div> </div> </main> </body></html>

View File

@@ -0,0 +1,128 @@
---
---
<div id="waitlist-modal" class="fixed inset-0 z-[100] hidden items-center justify-center">
<!-- Backdrop -->
<div class="absolute inset-0 bg-black/70 backdrop-blur-sm" data-waitlist-close></div>
<!-- Modal -->
<div class="relative w-full max-w-md mx-4 rounded-2xl border border-dd0c-border bg-dd0c-surface p-8 shadow-2xl">
<button data-waitlist-close class="absolute top-4 right-4 text-dd0c-muted hover:text-dd0c-text transition" aria-label="Close">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
<div class="text-center mb-6">
<span class="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-dd0c-border text-xs text-dd0c-muted mb-4">
<span class="w-2 h-2 rounded-full bg-emerald-400 animate-pulse"></span>
Early access
</span>
<h3 class="text-2xl font-bold">Get on the list</h3>
<p class="mt-2 text-dd0c-muted text-sm">Be first to try dd0c when we launch. No spam, just a heads up.</p>
</div>
<!-- Form (Formspree — swap action URL when you pick a provider) -->
<form id="waitlist-form" action="https://formspree.io/f/xplaceholder" method="POST" class="space-y-4">
<div>
<input
type="email"
name="email"
required
placeholder="you@company.com"
class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-text placeholder:text-dd0c-muted/50 focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"
/>
</div>
<div>
<select
name="interest"
class="w-full px-4 py-3 rounded-lg bg-dd0c-bg border border-dd0c-border text-dd0c-muted focus:outline-none focus:border-dd0c-primary focus:ring-1 focus:ring-dd0c-primary transition text-sm"
>
<option value="">Which tool interests you most?</option>
<option value="route">dd0c/route — LLM Cost Router</option>
<option value="drift">dd0c/drift — IaC Drift Detection</option>
<option value="alert">dd0c/alert — Alert Intelligence</option>
<option value="portal">dd0c/portal — Service Catalog</option>
<option value="cost">dd0c/cost — AWS Cost Anomaly</option>
<option value="run">dd0c/run — Runbook Automation</option>
<option value="all">All of them</option>
</select>
</div>
<button
type="submit"
id="waitlist-submit"
class="w-full px-4 py-3 rounded-lg bg-dd0c-primary hover:bg-dd0c-primary-light text-white font-medium transition text-sm"
>
Join the waitlist →
</button>
</form>
<!-- Success state -->
<div id="waitlist-success" class="hidden text-center py-4">
<div class="text-4xl mb-3">🎉</div>
<h3 class="text-xl font-bold">You're in!</h3>
<p class="mt-2 text-dd0c-muted text-sm">We'll ping you when dd0c is ready. Keep shipping.</p>
</div>
</div>
</div>
<script>
const modal = document.getElementById('waitlist-modal');
const form = document.getElementById('waitlist-form');
const success = document.getElementById('waitlist-success');
const submit = document.getElementById('waitlist-submit');
// Open modal on any #waitlist link
document.addEventListener('click', (e) => {
const link = e.target.closest('a[href="#waitlist"]');
if (link) {
e.preventDefault();
modal.classList.remove('hidden');
modal.classList.add('flex');
modal.querySelector('input[type="email"]')?.focus();
}
});
// Close modal
document.querySelectorAll('[data-waitlist-close]').forEach(el => {
el.addEventListener('click', () => {
modal.classList.add('hidden');
modal.classList.remove('flex');
});
});
// Close on Escape
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
modal.classList.add('hidden');
modal.classList.remove('flex');
}
});
// Form submit
form?.addEventListener('submit', async (e) => {
e.preventDefault();
submit.textContent = 'Joining...';
submit.disabled = true;
try {
const data = new FormData(form);
const res = await fetch(form.action, {
method: 'POST',
body: data,
headers: { 'Accept': 'application/json' },
});
if (res.ok) {
form.classList.add('hidden');
success.classList.remove('hidden');
} else {
// Formspree not configured yet — show success anyway for demo
form.classList.add('hidden');
success.classList.remove('hidden');
}
} catch {
// Offline or no backend — still show success for demo
form.classList.add('hidden');
success.classList.remove('hidden');
}
});
</script>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -46,4 +47,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -46,4 +47,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -49,4 +50,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -6,6 +6,7 @@ import HowItWorks from '../components/HowItWorks.astro';
import Pricing from '../components/Pricing.astro'; import Pricing from '../components/Pricing.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
--- ---
<Layout title="dd0c — DevOps tools that don't waste your time"> <Layout title="dd0c — DevOps tools that don't waste your time">
@@ -15,4 +16,5 @@ import Footer from '../components/Footer.astro';
<Pricing /> <Pricing />
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -41,4 +42,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -92,4 +93,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>

View File

@@ -1,6 +1,7 @@
--- ---
import Layout from '../components/Layout.astro'; import Layout from '../components/Layout.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Waitlist from '../components/Waitlist.astro';
import CTA from '../components/CTA.astro'; import CTA from '../components/CTA.astro';
--- ---
@@ -61,4 +62,5 @@ import CTA from '../components/CTA.astro';
</section> </section>
<CTA /> <CTA />
<Footer /> <Footer />
<Waitlist />
</Layout> </Layout>