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:
@@ -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.
|
||||
|
||||
@@ -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'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'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>
|
||||
|
||||
Reference in New Issue
Block a user