PageSourceSearch

https://patr.cloud/

html patr.cloud collected 2026-10-02 03:16:39 UTC 34,926 bytes, 65 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Astro v6.4.2"><title>Patr — deploy apps on your own servers</title><meta name="description" content="Patr is an open-source, self-hosted platform for deploying and running your apps on your own servers — no Kubernetes expertise, no DevOps team, no separate observability stack."><link rel="canonical" href="https://patr.cloud/"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:title" content="Patr — deploy apps on your own servers"><meta property="og:description" content="Patr is an open-source, self-hosted platform for deploying and running your apps on your own servers — no Kubernetes expertise, no DevOps team, no separate observability stack."><meta property="og:url" content="https://patr.cloud/"><meta property="og:site_name" content="Patr"><meta property="og:image" content="https://patr.cloud/og-default.png"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Patr — deploy apps on your own servers"><meta name="twitter:description" content="Patr is an open-source, self-hosted platform for deploying and running your apps on your own servers — no Kubernetes expertise, no DevOps team, no separate observability stack."><meta name="twitter:image" content="https://patr.cloud/og-default.png">
1<script type="application/ld+json">[{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Is it actually free?","acceptedAnswer":{"@type":"Answer","text":"The self-hosted version is the whole product — every feature, nothing greyed out. The only paid tier adds the governance stuff big companies need: SSO, billing, org-level controls. Solo devs and small teams never hit that wall."}},{"@type":"Question","name":"Do I really not need Kubernetes?","acceptedAnswer":{"@type":"Answer","text":"Right. Point Patr at a VM, a cluster, or a spare box and deploy. If you happen to run k8s it'll use it; if you don't, you'll never know it was an option."}},{"@type":"Question","name":"Where does my data live?","acceptedAnswer":{"@type":"Answer","text":"On your hardware. Patr is something you run, not a service you rent — nothing phones home, and there's no account you can get locked out of."}},{"@type":"Question","name":"What happens when I outgrow one server?","acceptedAnswer":{"@type":"Answer","text":"Add more runners and spread deployments across them. Same workflow, more machines under it."}},{"@type":"Question","name":"Can I use it in production today?","acceptedA
1nswer":{"@type":"Answer","text":"I do — that's the whole battle-tested-on-me thing above. For everyone else it's closed beta while I knock the edges off. Want in early? The code's on GitHub."}}]},{"@context":"https://schema.org","@type":"Organization","name":"Patr","url":"https://patr.cloud/","logo":"https://patr.cloud/logo.svg","sameAs":["https://github.com/patr-cloud"]},{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Patr","applicationCategory":"DeveloperApplication","operatingSystem":"Linux","url":"https://patr.cloud/","description":"Patr is an open-source, self-hosted platform for deploying and running your apps on your own servers — no Kubernetes expertise, no DevOps team, no separate observability stack.","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"isAccessibleForFree":true,"license":"https://github.com/patr-cloud/patr/blob/develop/LICENSE"}]</script>
1<link rel="sitemap" href="/sitemap-index.xml"><!-- Icons --><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><meta name="theme-color" content="#0d0526"><style>@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/poppins-latin-400-normal.cpxAROuN.woff2) format("woff2"),url(/_astro/poppins-latin-400-normal.BOb3E3N0.woff) format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/poppins-latin-500-normal.C8OXljZJ.woff2) format("woff2"),url(/_astro/poppins-latin-500-normal.DGXqpDMm.woff) format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/poppins-latin-600-normal.zEkxB9Mr.woff2) format("woff2"),url(/_astro/poppins-latin-600-normal.BJdTmd5m.woff) format("woff")}@font-face{font-family:Poppins;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/poppins-latin-700-normal.Qrb0O0WB.woff2) format("woff2"),url(/_astro/poppins-latin-700-normal.BVuQR_eA.woff) format("woff")}:root{--color-bg: #0d0526;--color-text: #ffffffde;--color-accent: #f89b41;--color-muted: #ffffffac;--color-border: #414245;--color-code-bg: #191131;--color-accent-glow: rgba(248, 155, 65, .14);--color-panel: #140b30;--mark-yes: #4bb96f;--mark-partial: #f0a94a;--mark-no: #c95c62;--font-sans: "Poppins", "Roboto", "Helvetica", "Arial", sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace}*,*:before,*:after{box-sizing:border-box}body{margin:0;overflow-x:hidden;font-family:var(--font-sans);font-size:1rem;line-height:1.6;color:var(--color-text);background:var(--color-bg)}a{color:var(--color-accent);text-decoration:none;transition:opacity .15s ease}a:hover{opacity:.8}img{max-width:100%;height:auto;display:block}header,main,footer{max-width:680px;margin:0 auto;padding:0 1.25rem}body.wide header,body.wide main,body.wide footer{max-width:960px}header{padding-top:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--color-border);margin-bottom:2.5rem}footer{margin-top:4rem;padding-top:1.5rem;padding-bottom:2rem;border-top:1px solid var(--color-border);color:var(--color-muted);font-size:.875rem}nav{display:flex;align-items:center;justify-content:space-between}.site-name{display:flex;align-items:center;gap:.75rem;font-weight:700;font-size:1.125rem;color:var(--color-text);text-decoration:none}.site-name:hover{opacity:.75}.site-logo{height:21px;width:auto}.nav-links{display:flex;align-items:center;gap:1.5rem}.nav-links a{color:var(--color-muted);font-size:.95rem;font-weight:500}.nav-links a:hover{color:var(--color-accent);opacity:1}footer{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}footer p{margin:0}.footer-links{display:flex;gap:1.25rem}.footer-links a{color:var(--color-muted)}.footer-links a:hover{color:var(--color-accent);opacity:1}.prose h1,.prose h2,.prose h3,.prose h4{line-height:1.3;margin-top:2rem;margin-bottom:.5rem}.prose h1{font-size:1.875rem;margin-top:0}.prose h2{font-size:1.375rem}.prose h3{font-size:1.125rem}.prose p{margin:0 0 1.25rem}.prose a{text-decoration:underline;text-underline-offset:2px}.prose ul,.prose ol{padding-left:1.5rem;margin:0 0 1.25rem}.prose li{margin-bottom:.25rem}.prose blockquote{margin:0 0 1.25rem;padding:.5rem 1rem;border-left:4px solid var(--color-border);color:var(--color-muted)}.prose blockquote p{margin:0}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--color-code-bg);padding:.15em .35em;border-radius:3px}.prose pre{background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:6px;padding:1rem 1.25rem;overflow-x:auto;margin:0 0 1.25rem;color:#e6e6e6}.prose pre code{background:none;padding:0;font-size:.875rem;color:inherit}.prose hr{border:none;border-top:1px solid var(--color-border);margin:2rem 0}.prose table{width:100%;border-collapse:collapse;margin:0 0 1.25rem;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;padding:.5rem .75rem;border:1px solid var(--color-border)}.prose th{background:var(--color-code-bg);font-weight:600}
2</style>
3<link rel="stylesheet" href="/_astro/index.B9VBo4jN.css"></head> <body class="wide"> <header> <nav> <a href="/" class="site-name"> <img src="/logo.svg" alt="Patr" class="site-logo"> </a> <div class="nav-links"> <a href="/blog">Blog</a> <a href="https://github.com/patr-cloud/patr#readme">Docs</a> <a href="https://github.com/patr-cloud/patr">GitHub</a> </div> </nav> </header> <main>   <section class="hero" data-astro-cid-j7pv25f6> <div class="hero-glow" aria-hidden="true" data-astro-cid-j7pv25f6></div> <p class="kicker" data-astro-cid-j7pv25f6>Open-source · self-hosted PaaS</p> <h1 data-astro-cid-j7pv25f6>Deploying an app shouldn't need a whole team.</h1> <p class="hero-sub" data-astro-cid-j7pv25f6>
4Patr is an open-source, self-hosted platform that runs your apps on your own
5      servers — a VM, a k8s cluster, or the Raspberry Pi in your drawer.
6      You build. It deals with the rest.
7</p> <div class="cta-row" data-astro-cid-j7pv25f6> <a class="btn btn-primary" href="https://github.com/patr-cloud/patr" data-astro-cid-j7pv25f6>GitHub</a> <a class="btn" href="https://github.com/patr-cloud/patr#readme" data-astro-cid-j7pv25f6>Read the docs</a> </div> <p class="beta-note" data-astro-cid-j7pv25f6> <span class="beta-badge" data-astro-cid-j7pv25f6>Closed beta</span>
8Not open to the public yet — I'm running it in real production right now,
9      hitting the bugs myself so they're dead before they ever reach you. The
10      code's <a href="https://github.com/patr-cloud/patr" data-astro-cid-j7pv25f6>on GitHub</a> if you want a look under the hood.
11</p> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Why this exists</p> <h2 data-astro-cid-j7pv25f6>Shipping shouldn't be open heart surgery.</h2> <p data-astro-cid-j7pv25f6>
12You built the thing. Getting it in front of users should be the easy part.
13      Instead it's an entire profession: pipelines, YAML, dashboards, a small army
14      babysitting infrastructure so that something that's already built can go live.
15      I've watched teams treat shipping an app like open heart surgery my whole
16      career, and it never sat right with me.
17</p> <p data-astro-cid-j7pv25f6>
18Patr's whole job is making sure you never think about any of it. An entire
19      PaaS, running on your own setup.
20</p> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>What you're not signing up for</p> <div class="feature-grid" data-astro-cid-j7pv25f6> <div class="feature" data-astro-cid-j7pv25f6> <h3 data-astro-cid-j7pv25f6><span class="no" data-astro-cid-j7pv25f6>No</span> Kubernetes PhD</h3> <p data-astro-cid-j7pv25f6>
21Point Patr at a VM, a cluster, or the machine under your desk. It doesn't
22          care what's underneath, and you don't have to either.
23</p> </div> <div class="feature" data-astro-cid-j7pv25f6> <h3 data-astro-cid-j7pv25f6><span class="no" data-astro-cid-j7pv25f6>No</span> crippled free tier</h3> <p data-astro-cid-j7pv25f6>
24Self-hosted is the full product, not a demo with the good buttons greyed
25          out. Everything the paid plan has, minus the stuff only large orgs care about.
26</p> </div> <div class="feature" data-astro-cid-j7pv25f6> <h3 data-astro-cid-j7pv25f6><span class="no" data-astro-cid-j7pv25f6>No</span> cloud provider required</h3> <p data-astro-cid-j7pv25f6>
27Your hardware is enough. A cloud account is optional, not a prerequisite.
28          Your servers, your data, your call.
29</p> </div> <div class="feature" data-astro-cid-j7pv25f6> <h3 data-astro-cid-j7pv25f6><span class="no" data-astro-cid-j7pv25f6>No</span> separate observability stack</h3> <p data-astro-cid-j7pv25f6>
30Logs and metrics are built in. Nobody should lose a weekend wiring up
31          OTEL and Grafana just to see why their app crashed.
32</p> </div> </div> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>What's in the box</p> <h2 data-astro-cid-j7pv25f6>A whole PaaS, not a deploy button.</h2> <div class="cap-grid" data-astro-cid-j7pv25f6> <div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><path d="M12 13v8" data-astro-cid-j7pv25f6></path><path d="m8 17 4-4 4 4" data-astro-cid-j7pv25f6></path><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25" data-astro-cid-j7pv25f6></path></svg>      </span> <h3 data-astro-cid-j7pv25f6>Deploy anything</h3> <p data-astro-cid-j7pv25f6>A container image or a repo, onto a VM, a k8s cluster, or bare metal. One workflow, whatever the target.</p> </div><div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" data-astro-cid-j7pv25f6></path><path d="m3.3 7 8.7 5 8.7-5" data-astro-cid-j7pv25f6></path><path d="M12 22V12" data-astro-cid-j7pv25f6></path></svg>     </span> <h3 data-astro-cid-j7pv25f6>Container registry</h3> <p data-astro-cid-j7pv25f6>Push your images straight to Patr. No third-party registry to wire up first.</p> </div><div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><circle cx="12" cy="12" r="10" data-astro-cid-j7pv25f6></circle><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" data-astro-cid-j7pv25f6></path><path d="M2 12h20" data-astro-cid-j7pv25f6></path></svg>    </span> <h3 data-astro-cid-j7pv25f6>Domains + HTTPS</h3> <p data-astro-cid-j7pv25f6>A free HTTPS URL out of the box, or bring your own domain. SSL is handled for you.</p> </div><div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6>    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><path d="M22 12h-4l-3 9L9 3l-3 9H2" data-astro-cid-j7pv25f6></path></svg>   </span> <h3 data-astro-cid-j7pv25f6>Logs &amp; metrics</h3> <p data-astro-cid-j7pv25f6>Built in. See what your app is doing without standing up OTEL and Grafana yourself.</p> </div><div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6>     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><circle cx="7.5" cy="15.5" r="5.5" data-astro-cid-j7pv25f6></circle><path d="m21 2-9.6 9.6" data-astro-cid-j7pv25f6></path><path d="m15.5 7.5 3 3L22 7l-3-3" data-astro-cid-j7pv25f6></path></svg>  </span> <h3 data-astro-cid-j7pv25f6>Secrets &amp; config</h3> <p data-astro-cid-j7pv25f6>Managed secrets, injected into your deployments — not pasted into a YAML file somewhere.</p> </div><div class="cap" data-astro-cid-j7pv25f6> <span class="cap-icon" aria-hidden="true" data-astro-cid-j7pv25f6>      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6><path d="m4 17 6-6-6-6" data-astro-cid-j7pv25f6></path><path d="M12 19h8" data-astro-cid-j7pv25f6></path></svg> </span> <h3 data-astro-cid-j7pv25f6>CLI + API</h3> <p data-astro-cid-j7pv25f6>Drive it all from the terminal, or hit the typed API directly. Scriptable top to bottom.</p> </div> </div> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>What you'd use it for</p> <ul class="use-cases" data-astro-cid-j7pv25f6> <li data-astro-cid-j7pv25f6>Simplifying your AWS setup so your team ships faster instead of fighting the console.</li> <li data-astro-cid-j7pv25f6>Letting developers deploy their own apps without a DevOps team getting involved.</li> <li data-astro-cid-j7pv25f6>
32Getting logs and metrics without running a second infrastructure project to see the first one.</li> <li data-astro-cid-j7pv25f6>Running on hardware you already own instead of renting someone else's.</li> </ul> </section>   <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>How does it work?</p> <h2 data-astro-cid-j7pv25f6>You run it. You point it at your servers. You deploy.</h2> <div class="terminal" role="img" aria-label="Terminal session showing the Patr deploy workflow" data-astro-cid-j7pv25f6> <div class="terminal-bar" data-astro-cid-j7pv25f6> <span class="dot" data-astro-cid-j7pv25f6></span><span class="dot" data-astro-cid-j7pv25f6></span><span class="dot" data-astro-cid-j7pv25f6></span> <span class="terminal-title" data-astro-cid-j7pv25f6>you@your-machine — patr</span> </div> <pre class="terminal-body" data-astro-cid-j7pv25f6><code data-astro-cid-j7pv25f6><span class="c-comment" data-astro-cid-j7pv25f6># 1. set Patr up on a server you own</span>
33<span class="c-prompt" data-astro-cid-j7pv25f6>$</span> patr runner setup
34<span class="c-ok" data-astro-cid-j7pv25f6>✓</span> Patr is up at https://patr.your-domain.com
35
36<span class="c-comment" data-astro-cid-j7pv25f6># 2. create a runner to deploy your apps onto</span>
37<span class="c-prompt" data-astro-cid-j7pv25f6>$</span> patr runner create
38<span class="c-ok" data-astro-cid-j7pv25f6>✓</span> runner created
39
40<span class="c-comment" data-astro-cid-j7pv25f6># 3. push a deployment. that's the whole workflow</span>
41<span class="c-prompt" data-astro-cid-j7pv25f6>$</span> patr deployment push
42<span class="c-ok" data-astro-cid-j7pv25f6>✓</span> built
43<span class="c-ok" data-astro-cid-j7pv25f6>✓</span> deployed
44<span class="c-arrow" data-astro-cid-j7pv25f6>→</span> https://myapp.your-domain.com</code></pre> </div> <p class="muted" data-astro-cid-j7pv25f6>
45Everything after that — logs, metrics, restarts, domains — is in the dashboard.
46      Screenshots coming as the beta opens up.
47</p> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <div class="callout" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Battle-tested — on me first</p> <h2 data-astro-cid-j7pv25f6>I'm hitting the bugs in prod so you don't have to.</h2> <p data-astro-cid-j7pv25f6>
48Patr isn't a side project I'm hoping works someday. It's running real
49        production workloads right now — mine. Every rough edge, every 3am page,
50        every ugly edge case gets found by me, in prod, before it ever reaches you.
51</p> <p data-astro-cid-j7pv25f6>
52That's the whole point of the closed beta. I'd rather be the one who gets
53        burned. By the time the doors open, the scary bugs are already dead — killed
54        in a real production environment, not a test suite pretending to be one.
55</p> </div> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>How is this different from…</p> <div class="table-wrap" data-astro-cid-j7pv25f6> <table class="comparison" data-astro-cid-j7pv25f6> <thead data-astro-cid-j7pv25f6> <tr data-astro-cid-j7pv25f6> <th scope="col" data-astro-cid-j7pv25f6></th> <th scope="col" class="col-patr" data-astro-cid-j7pv25f6>Patr</th><th scope="col" class data-astro-cid-j7pv25f6>Heroku / Render</th><th scope="col" class data-astro-cid-j7pv25f6>Coolify</th><th scope="col" class data-astro-cid-j7pv25f6>DIY Kubernetes</th> </tr> </thead> <tbody data-astro-cid-j7pv25f6> <tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>Open source</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-no" role="img" aria-label="No" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M5 5l10 10M15 5L5 15" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" data-astro-cid-j7pv25f6></path></svg>  </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td> </tr><tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>Runs on your hardware</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-no" role="img" aria-label="No" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M5 5l10 10M15 5L5 15" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" data-astro-cid-j7pv25f6></path></svg>  </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td> </tr><tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>Full product, free</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-no" role="img" aria-label="No" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M5 5l10 10M15 5L5 15" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" data-astro-cid-j7pv25f6></path></svg>  </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-partial" role="img" aria-label="Partial" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 12c2-3 4-3 6 0s4 3 6 0" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg> </span> <span class="mark-note" data-astro-cid-j7pv25f6>free software, your time isn&#39;t</span> </td> </tr><tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>Logs &amp; metrics built in</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-partial" role="img" aria-label="Partial" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 12c2-3 4-3 6 0s4 3 6 0" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg> </span> <span class="mark-note" data-astro-cid-j7pv25f6>paid add-ons</span> </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-partial" role="img" aria-label="Partial" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 12c2-3 4-3 6 0s4 3 6 0" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg> </span> <span class="mark-note" data-astro-cid-j7pv25f6>basic</span> </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-no" role="img" aria-label="No" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M5 5l10 10M15 5L5 15" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" data-astro-cid-j7pv25f6></path></svg>  </span> <span class="mark-note" data-astro-cid-j7pv25f6>assemble it yourself</span> </td> </tr><tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>
55VMs, clusters &amp; bare metal</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-no" role="img" aria-label="No" data-astro-cid-j7pv25f6>  <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M5 5l10 10M15 5L5 15" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" data-astro-cid-j7pv25f6></path></svg>  </span> <span class="mark-note" data-astro-cid-j7pv25f6>their cloud only</span> </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-partial" role="img" aria-label="Partial" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 12c2-3 4-3 6 0s4 3 6 0" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg> </span> <span class="mark-note" data-astro-cid-j7pv25f6>Docker hosts</span> </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td> </tr><tr data-astro-cid-j7pv25f6> <th scope="row" class="row-label" data-astro-cid-j7pv25f6>Battle-tested</th> <td class="col-patr" data-astro-cid-j7pv25f6> <span class="mark mark-partial" role="img" aria-label="Partial" data-astro-cid-j7pv25f6>   <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 12c2-3 4-3 6 0s4 3 6 0" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg> </span> <span class="mark-note" data-astro-cid-j7pv25f6>in prod now — mine</span> </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td><td class data-astro-cid-j7pv25f6> <span class="mark mark-yes" role="img" aria-label="Yes" data-astro-cid-j7pv25f6> <svg viewBox="0 0 20 20" fill="none" aria-hidden="true" data-astro-cid-j7pv25f6><path d="M4 10.5l4 4 8-9" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-j7pv25f6></path></svg>   </span>  </td> </tr> </tbody> </table> </div> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Questions you're probably asking</p> <div class="faq" data-astro-cid-j7pv25f6> <details class="faq-item" open data-astro-cid-j7pv25f6> <summary data-astro-cid-j7pv25f6>Is it actually free?</summary> <p class="faq-a" data-astro-cid-j7pv25f6>The self-hosted version is the whole product — every feature, nothing greyed out. The only paid tier adds the governance stuff big companies need: SSO, billing, org-level controls. Solo devs and small teams never hit that wall.</p> </details><details class="faq-item" data-astro-cid-j7pv25f6> <summary data-astro-cid-j7pv25f6>Do I really not need Kubernetes?</summary> <p class="faq-a" data-astro-cid-j7pv25f6>Right. Point Patr at a VM, a cluster, or a spare box and deploy. If you happen to run k8s it&#39;ll use it; if you don&#39;t, you&#39;ll never know it was an option.</p> </details>
55<details class="faq-item" data-astro-cid-j7pv25f6> <summary data-astro-cid-j7pv25f6>Where does my data live?</summary> <p class="faq-a" data-astro-cid-j7pv25f6>On your hardware. Patr is something you run, not a service you rent — nothing phones home, and there&#39;s no account you can get locked out of.</p> </details><details class="faq-item" data-astro-cid-j7pv25f6> <summary data-astro-cid-j7pv25f6>What happens when I outgrow one server?</summary> <p class="faq-a" data-astro-cid-j7pv25f6>Add more runners and spread deployments across them. Same workflow, more machines under it.</p> </details><details class="faq-item" data-astro-cid-j7pv25f6> <summary data-astro-cid-j7pv25f6>Can I use it in production today?</summary> <p class="faq-a" data-astro-cid-j7pv25f6>I do — that&#39;s the whole battle-tested-on-me thing above. For everyone else it&#39;s closed beta while I knock the edges off. Want in early? The code&#39;s on GitHub.</p> </details> </div> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Latest from the blog</p> <ul class="post-list" data-astro-cid-j7pv25f6> <li data-astro-cid-j7pv25f6> <a href="/blog/where-were-we-all-these-years" class="post-link" data-astro-cid-j7pv25f6> <span class="post-title" data-astro-cid-j7pv25f6>Where were we all these years?</span> <span class="post-date" data-astro-cid-j7pv25f6>June 1, 2026</span> </a> <p class="post-description" data-astro-cid-j7pv25f6>I shut down a company I loved. Patr survived, went open source, and I&#39;m not done. Here&#39;s the whole story, and an invitation.</p> </li><li data-astro-cid-j7pv25f6> <a href="/blog/eliminating-tests-with-types" class="post-link" data-astro-cid-j7pv25f6> <span class="post-title" data-astro-cid-j7pv25f6>Eliminating Tests with Types</span> <span class="post-date" data-astro-cid-j7pv25f6>March 19, 2026</span> </a> <p class="post-description" data-astro-cid-j7pv25f6>How I used Rust&#39;s type system to make an entire class of API tests unnecessary: if it compiles, it&#39;s correct.</p> </li> </ul> <p data-astro-cid-j7pv25f6><a href="/blog" data-astro-cid-j7pv25f6>All posts →</a></p> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <p class="kicker" data-astro-cid-j7pv25f6>Come build it with me</p> <p data-astro-cid-j7pv25f6>
56Patr needs Rust people for the core, frontend people for the dashboard, and
57      people who write docs, answer questions, and make a community worth hanging
58      out in. I can't pay you today — but the moment there's real income, the
59      people who built it with me get paid.
60<a href="/blog/where-were-we-all-these-years" data-astro-cid-j7pv25f6>The full, honest version of that story is here</a>.
61</p> </section>  <section class="section reveal" data-astro-cid-j7pv25f6> <div class="closing" data-astro-cid-j7pv25f6> <h2 data-astro-cid-j7pv25f6>Sounds good?</h2> <div class="cta-row" data-astro-cid-j7pv25f6> <a class="btn btn-primary" href="https://github.com/patr-cloud/patr" data-astro-cid-j7pv25f6>GitHub</a> <a class="btn" href="https://github.com/patr-cloud/patr#readme" data-astro-cid-j7pv25f6>Read the docs</a> </div> <p class="muted" data-astro-cid-j7pv25f6>
62It's early, and I'm not going to pretend otherwise. But "early" here means
63        I'm the one in prod hitting the sharp edges, not you. Come watch it harden —
64        or grab a file and help me sand it down faster.
65</p> </div> </section>  </main> <footer> <p>&copy; 2026 Patr</p> <div class="footer-links"> <a href="https://github.com/patr-cloud/patr">GitHub</a> <a href="/blog">Blog</a> </div> </footer></body></html> 
65<script type="module">const o=window.matchMedia("(prefers-reduced-motion: reduce)").matches,t=document.querySelectorAll(".reveal");if(o||!("IntersectionObserver"in window))t.forEach(e=>e.classList.add("is-visible"));else{document.documentElement.classList.add("reveal-ready");const e=new IntersectionObserver((s,i)=>{s.forEach(r=>{r.isIntersecting&&(r.target.classList.add("is-visible"),i.unobserve(r.target))})},{rootMargin:"0px 0px -10% 0px",threshold:.05});t.forEach(s=>e.observe(s))}</script>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.