page.tsx188 lines · main
| 1 | import Link from 'next/link'; |
| 2 | |
| 3 | import { DocsShell } from '../../components/shell'; |
| 4 | |
| 5 | export const metadata = { title: 'service level agreement' }; |
| 6 | |
| 7 | export default function SlaPage() { |
| 8 | return ( |
| 9 | <DocsShell> |
| 10 | <h1 className="font-mono text-2xl tracking-tight">service level agreement</h1> |
| 11 | <p className="mt-2 font-mono text-sm text-[var(--color-text-muted)]"> |
| 12 | the uptime briven commits to per tier, how monthly credits are calculated when we miss it, |
| 13 | and what counts as "downtime" for purposes of this agreement. effective date{' '} |
| 14 | <strong>2026-05-21</strong> (Phase 4 public-beta launch). free-tier projects are best-effort |
| 15 | with no contractual commitment. |
| 16 | </p> |
| 17 | |
| 18 | <Section title="commitments"> |
| 19 | <table className="mt-2 w-full border-collapse font-mono text-xs"> |
| 20 | <thead> |
| 21 | <tr className="border-b border-[var(--color-border-subtle)] text-left text-[var(--color-text-muted)]"> |
| 22 | <th className="py-2 pr-4 font-normal">tier</th> |
| 23 | <th className="py-2 pr-4 font-normal">monthly uptime target</th> |
| 24 | <th className="py-2 pr-4 font-normal">credit if missed</th> |
| 25 | </tr> |
| 26 | </thead> |
| 27 | <tbody className="text-[var(--color-text)]"> |
| 28 | <tr className="border-b border-[var(--color-border-subtle)]"> |
| 29 | <td className="py-2 pr-4">free</td> |
| 30 | <td className="py-2 pr-4 text-[var(--color-text-subtle)]">best-effort</td> |
| 31 | <td className="py-2 pr-4 text-[var(--color-text-subtle)]">none</td> |
| 32 | </tr> |
| 33 | <tr className="border-b border-[var(--color-border-subtle)]"> |
| 34 | <td className="py-2 pr-4">pro</td> |
| 35 | <td className="py-2 pr-4">99.5%</td> |
| 36 | <td className="py-2 pr-4">see schedule below</td> |
| 37 | </tr> |
| 38 | <tr> |
| 39 | <td className="py-2 pr-4">team</td> |
| 40 | <td className="py-2 pr-4">99.9%</td> |
| 41 | <td className="py-2 pr-4">see schedule below</td> |
| 42 | </tr> |
| 43 | </tbody> |
| 44 | </table> |
| 45 | </Section> |
| 46 | |
| 47 | <Section title="what counts as the platform being up"> |
| 48 | <p>three signals, measured externally from outside the briven infrastructure:</p> |
| 49 | <ul className="list-disc pl-5"> |
| 50 | <li> |
| 51 | <code>api.briven.tech/ready</code> returns HTTP 200 within 5 seconds. probes every 60s. |
| 52 | </li> |
| 53 | <li> |
| 54 | <code>realtime.briven.tech/ready</code> returns HTTP 200 within 5 seconds. probes every |
| 55 | 60s. |
| 56 | </li> |
| 57 | <li> |
| 58 | a function invocation to a healthy deployment in your project returns within 10 seconds |
| 59 | for at least one randomly selected hosted project per region. probes every 5 minutes. |
| 60 | </li> |
| 61 | </ul> |
| 62 | <p> |
| 63 | a probe failure counts as downtime when at least three consecutive probes fail (so a |
| 64 | single packet drop doesn't trigger the SLA). downtime accumulates per calendar month UTC. |
| 65 | the monthly uptime % is calculated as{' '} |
| 66 | <code>1 - (downtime_minutes / total_minutes_in_month)</code>. |
| 67 | </p> |
| 68 | </Section> |
| 69 | |
| 70 | <Section title="credit schedule"> |
| 71 | <p> |
| 72 | if your tier's monthly uptime falls below the commitment, your next monthly invoice is |
| 73 | credited per the table below. credits are automatic — you don't need to file a ticket |
| 74 | unless we miss applying the credit, but you can confirm via <code>briven doctor --month</code>{' '} |
| 75 | or the dashboard billing page. |
| 76 | </p> |
| 77 | <table className="mt-2 w-full border-collapse font-mono text-xs"> |
| 78 | <thead> |
| 79 | <tr className="border-b border-[var(--color-border-subtle)] text-left text-[var(--color-text-muted)]"> |
| 80 | <th className="py-2 pr-4 font-normal">measured uptime</th> |
| 81 | <th className="py-2 pr-4 font-normal">pro credit</th> |
| 82 | <th className="py-2 pr-4 font-normal">team credit</th> |
| 83 | </tr> |
| 84 | </thead> |
| 85 | <tbody className="text-[var(--color-text)]"> |
| 86 | <tr className="border-b border-[var(--color-border-subtle)]"> |
| 87 | <td className="py-2 pr-4">target met</td> |
| 88 | <td className="py-2 pr-4 text-[var(--color-text-subtle)]">—</td> |
| 89 | <td className="py-2 pr-4 text-[var(--color-text-subtle)]">—</td> |
| 90 | </tr> |
| 91 | <tr className="border-b border-[var(--color-border-subtle)]"> |
| 92 | <td className="py-2 pr-4">< tier target but ≥ 99.0%</td> |
| 93 | <td className="py-2 pr-4">10% of the month's subscription</td> |
| 94 | <td className="py-2 pr-4">10% of the month's subscription</td> |
| 95 | </tr> |
| 96 | <tr className="border-b border-[var(--color-border-subtle)]"> |
| 97 | <td className="py-2 pr-4">< 99.0% but ≥ 95.0%</td> |
| 98 | <td className="py-2 pr-4">25%</td> |
| 99 | <td className="py-2 pr-4">25%</td> |
| 100 | </tr> |
| 101 | <tr> |
| 102 | <td className="py-2 pr-4">< 95.0%</td> |
| 103 | <td className="py-2 pr-4">50%</td> |
| 104 | <td className="py-2 pr-4">50%</td> |
| 105 | </tr> |
| 106 | </tbody> |
| 107 | </table> |
| 108 | <p className="mt-3 text-[var(--color-text-subtle)]"> |
| 109 | credit applies to the affected month's subscription fee. overage and metered usage |
| 110 | aren't credited. credits never roll over into cash refunds; they offset future |
| 111 | invoices. |
| 112 | </p> |
| 113 | </Section> |
| 114 | |
| 115 | <Section title="what's excluded"> |
| 116 | <p>downtime caused by any of the following does not count against the SLA:</p> |
| 117 | <ul className="list-disc pl-5"> |
| 118 | <li>scheduled maintenance announced ≥ 48h in advance on the status page</li> |
| 119 | <li>incidents caused by the customer's own code (e.g. a function that 500s under load) or by the customer's own configuration changes</li> |
| 120 | <li>incidents caused by upstream provider failures (Hostinger, Cloudflare, Polar, Mittera) where briven's mitigation is to wait for the upstream</li> |
| 121 | <li>force majeure: natural disasters, war, government action, internet-scale BGP events</li> |
| 122 | <li>any period during which the customer is in breach of the Terms of Service or has overdue invoices</li> |
| 123 | <li>downtime affecting only free-tier projects — they're best-effort by design</li> |
| 124 | </ul> |
| 125 | </Section> |
| 126 | |
| 127 | <Section title="how downtime is measured"> |
| 128 | <p> |
| 129 | briven publishes its own external probes at{' '} |
| 130 | <Link |
| 131 | href="/status" |
| 132 | className="text-[var(--color-text-link)] underline-offset-2 hover:underline" |
| 133 | > |
| 134 | docs.briven.tech/status |
| 135 | </Link>{' '} |
| 136 | and{' '} |
| 137 | <Link |
| 138 | href="https://briven.tech/status" |
| 139 | className="text-[var(--color-text-link)] underline-offset-2 hover:underline" |
| 140 | > |
| 141 | briven.tech/status |
| 142 | </Link> |
| 143 | . additionally, a third-party probe (Uptime Kuma on a separate provider) records minute- |
| 144 | level availability for each public surface. monthly uptime is calculated from the |
| 145 | third-party probe data — never from internal logs alone. |
| 146 | </p> |
| 147 | <p> |
| 148 | on disagreement, the third-party probe's record is authoritative for the calculation; |
| 149 | customers may inspect the same data at the public status page's history view. |
| 150 | </p> |
| 151 | </Section> |
| 152 | |
| 153 | <Section title="filing a claim"> |
| 154 | <p> |
| 155 | credits are automatic and applied to the next invoice. if you believe a credit was missed, |
| 156 | email{' '} |
| 157 | <a href="mailto:billing@flndrn.com" className="text-[var(--color-text-link)] hover:underline"> |
| 158 | billing@flndrn.com |
| 159 | </a>{' '} |
| 160 | within 30 days of the affected month with your project id and the time window in |
| 161 | question. claims older than 30 days are ineligible. |
| 162 | </p> |
| 163 | </Section> |
| 164 | |
| 165 | <Section title="changes to this SLA"> |
| 166 | <p> |
| 167 | briven may update the SLA with 30 days' notice posted to the public changelog. the |
| 168 | version of this page in effect on the first day of your billing month governs that |
| 169 | month's credits. |
| 170 | </p> |
| 171 | </Section> |
| 172 | |
| 173 | <p className="mt-12 font-mono text-xs text-[var(--color-text-subtle)]"> |
| 174 | flndrn Limited, Limassol, Cyprus · this document is the SLA referenced in the briven Terms |
| 175 | of Service. |
| 176 | </p> |
| 177 | </DocsShell> |
| 178 | ); |
| 179 | } |
| 180 | |
| 181 | function Section({ title, children }: { title: string; children: React.ReactNode }) { |
| 182 | return ( |
| 183 | <section className="mt-10 flex flex-col gap-3 font-sans text-sm text-[var(--color-text-muted)]"> |
| 184 | <h2 className="font-mono text-lg tracking-tight text-[var(--color-text)]">{title}</h2> |
| 185 | {children} |
| 186 | </section> |
| 187 | ); |
| 188 | } |