Files
Mohamed Boudra c54f20e53e feat(website): show Hub's Free and Pro plans, and drop trial wording (#5138)
Hosted Hub replaces its automatic trial with a real Free plan, so the
pricing section becomes three columns: Self-hosted, Free, and Pro. Both
hosted columns render entirely from `GET /api/billing/plans` — name,
price, the `included` figures, and the catalog's feature prose — because
those figures are derived from the entitlement template the instance
enforces, so nothing on this page can drift from the limit a customer
actually gets.

The parser requires both slugs and the new `included` object and throws
on anything else. The page already degrades to "temporarily unavailable"
when the loader throws, so a strict boundary costs a fallback we have
rather than a wrong number we would ship. This is also why the change
must not merge before the Hub side deploys: against today's API the
section renders that fallback.

Public docs follow the two Hub changes: Free replaces the trial and
points at /hub for the figures Stripe metadata now owns; sign-in lands on
Home with its four-step checklist; `hub.execute` gets the grant command
it needs; and trigger authoring documents that the agent is validated
against the target daemon at save, which needs that daemon connected and
accepts Claude, Codex, and OpenCode only.
2026-09-28 15:51:12 +01:00

5.5 KiB

title, description, nav, order, category
title description nav order category
Hub quickstart Run Hub locally and answer a Slack mention with an agent on your machine. Quickstart 61 Hub

Hub quickstart

Run Hub on your machine, connect it to Slack without a public server, and answer a mention with an agent in your repository. Hub's browser setup hands off to your terminal, and paseo hub init writes and deploys a starter trigger for you.

You need Paseo installed and running, Node.js, and a Slack workspace where you can create an app.

1. Start Hub

npx @getpaseo/hub

Open the address it prints, normally http://localhost:3000, and create the operator account Hub asks for.

The first run needs no database, Docker, environment variables, or API keys. Hub creates an embedded database and your organization.

Hub opens Home, a checklist of the four things that have to be true before a mention starts an agent: connect an app, connect a daemon, create a trigger, run it. The steps below are those four. Home derives each one from what your organization actually has, prints the command the next step needs, and collapses once all four are done.

2. Connect Slack

Set up your apps explains how to create the Slack app and gives you a manifest to paste into Slack. Keep Socket Mode selected. It connects out from Hub and needs no public address or HTTPS.

Paste the App-level token and Bot token back into Hub, then choose Connect Slack. Invite the bot to the channel where you will use it:

/invite @Paseo

GitHub and Discord can wait. Their setup stays available under Apps.

3. Connect the machine your code is on

Connect a daemon shows one command with this Hub's address already in it:

paseo hub login http://localhost:3000

Run it on the machine where your code lives, in the repository the agent should work in. Run the initializer below from that directory so it becomes the trigger's working directory.

Approve the login in the browser tab that opens. Leave the Hub tab open: it watches for the daemon and shows Daemon connected by itself. Choose Continue when the daemon is connected.

4. Create the starter trigger

After approving login, answer Yes to Connect this daemon to Paseo Hub? and Allow Hub automations to run agents on this daemon?. Execution permission defaults to no, so enable it explicitly for this setup. If you answered no, Home shows the daemon as connected but unable to run agents, with the command that fixes it: paseo hub permissions grant hub.execute.

Then run:

paseo hub init

Choose Custom endpoint and confirm http://localhost:3000. Setup reuses your login and daemon connection, then lists the app connections ready for this trigger. With one Slack workspace connected, it selects that connection automatically. With several usable connections, choose the Trigger connection. If none is ready, setup sends you to Hub → Apps and stops before selecting an agent or writing files.

Question What it wants
Starter agent provider, model, and mode Claude, Codex, or OpenCode on your daemon. Suggested model and mode entries are its defaults.
Your Slack member ID U01234567, the only account allowed to trigger the bot.
Deploy now? Yes, to activate this trigger in Hub.

Providers must expose a selectable model and execution mode. If there is no default mode, choose the one the agent should use. Hub runs agents unattended, so it accepts only Claude, Codex, and OpenCode, and it checks the model, mode, and options against your daemon before deploying. Another provider, or a value the daemon does not offer, is refused here rather than at the first run.

Find your Slack IDs explains how to copy your member ID. The Slack workspace comes from the selected app connection.

Setup validates the trigger and writes:

.paseo/
└── triggers/
    └── slack-help.yml

If slack-help.yml already exists, setup asks before replacing that file. Other files remain in place. If you decline deployment, run paseo hub deploy from this repository when ready.

5. Mention the bot

In the channel you invited the bot to:

@Paseo have a look

Hub starts the agent on your daemon and posts its reply in the Slack thread. The terminal links to Triggers, where you can manage the trigger and inspect its runs. If nothing runs, Activity tells a filtered mention from one that never matched a trigger.

Next

Hub keeps its local state in your user data directory, normally ~/.local/share/paseo-hub. Self-hosting covers deployment and advanced configuration when you outgrow the local run.