Prepare Hub guided self-hosting docs for the next release (#3342)

* docs(hub): drop the manual auth secret from self-hosting setup

Hub generates its authentication secret on first start and stores it in the
database it is already using, so self-hosters no longer run openssl or carry
PASEO_HUB_AUTH_SECRET between restarts. The variable stays as an override for
deployments that must supply the secret from a platform secret store; Hub uses
it without persisting it, so removing it resumes the stored value.

Also corrects a claim that predates this change: rotating the secret does not
invalidate execution credentials already issued. Hub verifies those against
persisted hashes rather than the secret, so only browser sessions end.

Documentation companion to https://github.com/getpaseo/hub/pull/50.

* docs(hub): lead with the local guided setup

* docs(hub): document XDG data directory

* docs: make Hub self-hosting the quickstart
This commit is contained in:
Mohamed Boudra
2026-08-20 14:16:01 +02:00
committed by GitHub
parent c6b04f302a
commit 9163aed3f1
9 changed files with 290 additions and 315 deletions
+1 -1
View File
@@ -60,7 +60,7 @@ ${agents}
- [Changelog](${SITE_URL}/changelog): Release notes for the Paseo daemon, CLI, desktop, and mobile apps.
- [Download](${SITE_URL}/download): Install Paseo on Mac, Windows, Linux, iOS, Android, or run the web app.
- [Paseo Hub](${SITE_URL}/hub): Optional service above your daemons that adds GitHub, Slack, and Discord triggers. Self-hosted, private beta.
- [Paseo Hub](${SITE_URL}/hub): Self-hosted service above your daemons that adds GitHub, Slack, and Discord triggers. A hosted version is planned.
- [Blog](${SITE_URL}/blog): Updates and technical posts from the Paseo team.
- [Privacy](${SITE_URL}/privacy): Privacy policy.
- [GitHub](https://github.com/getpaseo/paseo): Source code, issues, and releases.
+58 -18
View File
@@ -17,7 +17,7 @@ export const Route = createFileRoute("/hub")({
head: () =>
pageMeta(
"Paseo Hub - GitHub, Slack, and Discord triggers",
"An optional service above your Paseo daemons. Mention a bot in a GitHub issue and an agent runs on your own machine and opens a PR. Self-hosted first, private beta.",
"Run Paseo Hub yourself and start agents on your own machines from GitHub, Slack, and Discord.",
"/hub",
),
component: Hub,
@@ -34,9 +34,10 @@ function Hub() {
<p className="text-lg text-white/70 leading-relaxed max-w-2xl">
An optional service that sits above your daemons and gives them extra capabilities.
</p>
<p className="text-white/40 text-sm mt-3">Private beta. Self-hosted first.</p>
<p className="text-white/40 text-sm mt-3">Self-host now. Hosted version coming later.</p>
<div className="space-y-20 mt-16">
<QuickStart />
<Triggers />
<Agents />
<Shape />
@@ -47,6 +48,37 @@ function Hub() {
);
}
function QuickStart() {
return (
<section className="space-y-6">
<h2 className="text-xl font-medium">Run it yourself</h2>
<p className="text-white/70 leading-relaxed max-w-2xl">
Start with an embedded database and finish setup in the browser. No Docker, PostgreSQL, or
environment variables required.
</p>
<pre className="w-fit max-w-full overflow-x-auto rounded-xl border border-white/10 bg-white/[0.03] px-5 py-4 font-mono text-sm text-white/90">
<code>npx @getpaseo/hub</code>
</pre>
<div className="flex flex-wrap items-center gap-4 pt-2">
<a
href="/docs/hub/quickstart"
className="rounded-md bg-white text-black px-4 py-2 text-sm font-medium hover:bg-white/90 transition-colors"
>
Read the quickstart
</a>
<a
href="https://github.com/getpaseo/hub"
target="_blank"
rel="noopener noreferrer"
className={LINK_CLASS}
>
View the source
</a>
</div>
</section>
);
}
const TRIGGER_SURFACES = [
{ name: "GitHub", icon: <GitHubIcon className="h-6 w-6" />, body: "Issues, PRs, and reviews." },
{ name: "Slack", icon: <SlackIcon className="h-6 w-6" />, body: "Channels and threads." },
@@ -266,7 +298,7 @@ function Shape() {
<div className="w-full max-w-xs rounded-xl border border-white/20 bg-white/[0.06] px-6 py-5 text-center">
<p className="font-medium">Hub</p>
<p className="text-xs text-muted-foreground mt-1">Self-hosted, one per team</p>
<p className="text-xs text-muted-foreground mt-1">Self-hosted or managed</p>
</div>
<Connector label="the same RPCs the app and CLI use" />
@@ -357,10 +389,11 @@ function MachineIcon() {
function Access() {
return (
<section className="space-y-6">
<h2 className="text-xl font-medium">Getting access</h2>
<h2 className="text-xl font-medium">Hosted Hub</h2>
<p className="text-white/70 leading-relaxed max-w-2xl">
Join the Paseo Discord and DM me. I&apos;m looking for design partners who are comfortable
self-hosting.
The hosted version is not generally available yet. Join the Paseo Discord and watch the
<span className="font-mono text-white/80"> #paseo-hub</span> channel for the release
announcement.
</p>
<div className="flex items-center gap-4 pt-2">
<a
@@ -396,20 +429,26 @@ function FaqSection() {
a team, and run multi-tenant. None of that belongs in a single machine daemon.
</p>
</FAQItem>
<FAQItem question="Why self-hosted first?">
The Hub can trigger executions on the daemons connected to it, so it has to be trusted. I
am not comfortable having people connect their daemons to my infrastructure until the
daemon has stronger authorization primitives and sandboxing. That work is on the roadmap,
and it applies to every Paseo user.
<FAQItem question="Can I run it myself?">
Yes. Run <code>npx @getpaseo/hub</code> and complete setup in the browser. The source is
available on{" "}
<a href="https://github.com/getpaseo/hub" className={LINK_CLASS}>
GitHub
</a>
, and the{" "}
<a href="/docs/hub/self-hosting" className={LINK_CLASS}>
self-hosting guide
</a>{" "}
covers more involved deployments.
</FAQItem>
<FAQItem question="What do I need to run it?">
A single Node.js application and a Postgres database. You also bring your own GitHub App,
Slack app, and Discord bot credentials, which is the tedious part.
Node.js and a running Paseo daemon. Hub uses an embedded database by default and guides
you through connecting the provider apps you want. PostgreSQL, Docker, and environment
variables are optional deployment choices.
</FAQItem>
<FAQItem question="Will there be a hosted version?">
Planned, once the daemon has stronger authorization primitives and sandboxing. I already
run a Hub for my own repos, and I can walk you through a trial on it if you want to skip
the self-hosted setup. No SLA.
Yes. Join the Paseo Discord and watch the <code>#paseo-hub</code> channel. The hosted
release will be announced there.
</FAQItem>
<FAQItem question="What else is planned?">
<p>Not built yet, listed so you know where this is going.</p>
@@ -432,7 +471,7 @@ function FaqSection() {
triggers, and it&apos;s why access to the beta stays small and trusted.
</FAQItem>
<FAQItem question="How do I get access?">
Join the{" "}
You can self-host today. For the hosted version, join the{" "}
<a
href={DISCORD_INVITE_URL}
target="_blank"
@@ -441,7 +480,8 @@ function FaqSection() {
>
Paseo Discord
</a>{" "}
and DM @moboudra for an invite to the private Hub channel.
and wait for the release announcement in <code>#paseo-hub</code>. You do not need to
message anyone directly.
</FAQItem>
</div>
</section>