Get started
Quickstart
Install the GitHub App, pair one Linux server as your agent, add HookCI to Slack, and see your first check on a pull request.
This guide uses the hosted hub at ci.webuno.io. By the end, a pull request on your repository runs its checks on your own server and reports them in GitHub Checks and Slack.
Before you start
- A Linux server you control, amd64 or arm64, with systemd. It only needs outbound HTTPS to the hub, GitHub, and your package registries. No inbound ports, no SSH.
- Owner or admin rights on the GitHub account or organization that owns the repository. Only an admin can pair an agent or add HookCI to Slack.
- A Slack workspace where you can add apps. Enterprise Grid is not supported.
sudoon the server.
No .hookci.yml is required. The agent detects Node, Python, Go, Rust, and Docker Compose projects and builds a check list from the project files. See Run checks locally to preview what it detects.
Set it up
-
Install the GitHub App. Open ci.webuno.io/start, choose Install on GitHub, and pick the account and repositories HookCI may read. GitHub returns you to a hub page that shows a pair token and the commands for your server.
Illustration. The success page shows a one-time pair token, the install commands, and an Add to Slack button. The status line changes once an agent connects. -
Install the agent on your server. Run the install script. It verifies the checksum of the download, verifies the cosign signature if
cosignis installed, and sets up thehookci-runuser and the systemd units.curl -fsSL https://ci.webuno.io/install | sh -
Pair the agent. Redeem the token from the hub page. It works once and expires after 15 minutes.
sudo hookci connect hc_pair_EXAMPLEconnectsaves the agent credential under/var/lib/hookci, checks that the hub accepts it, and starts the agent service. The hub page changes from “Waiting for your agent…” to “Agent connected”.build-01 recording $ curl -fsSL https://ci.webuno.io/install | sh Downloading hookci_linux_amd64.tar.gz Signature verified Installed hookci. Next, pair this machine: sudo hookci connect <pair-token> $ sudo hookci connect hc_pair_EXAMPLE Connected to https://ci.webuno.io as build-01
Illustration. Install and pair. Output is shortened and the token is a placeholder.
-
Add HookCI to Slack. On the hub page choose Add to Slack and approve the app in your workspace. Then link your own Slack user to your GitHub account, so HookCI can check your permissions on a repository.
/hookci meClick Link your GitHub account in the reply. The link works once and expires after 10 minutes.
-
Watch a repository. Invite the bot to a channel, then tell it which repository to post there.
/invite @hookci /hookci watch acme/webHookCI posts a test message to confirm it can write to the channel. You need write access to the repository on GitHub.
Illustration. Typing the watch command and the app's reply in a #ci channel. -
Open a pull request. Push a branch and open a PR. The hub adds a
hookcicheck to the PR and sends the run to your agent.Illustration. The HookCI check on a pull request. Each job appears as its own check, and failures include file and line annotations. The same run appears in the Slack channel and is updated in place as jobs finish.
Illustration. A run message from the @hookci app with one row per job and a link to the logs.
If nothing shows up
- The hub page stays on “Waiting for your agent…”: run
sudo hookci doctoron the server. It checks systemd, cgroups, thehookci-runuser, and whether the hub is reachable on port 443. connectsays the token is invalid: tokens work once and expire after 15 minutes. Create a new one in Slack App Home with Add agent.- The PR check says “No agent paired” or “Agent offline”: the agent is not connected. See Pair an agent.
- The PR check says “Waiting for approval”: the PR comes from a fork. Approve it as described in Trust and forks.
- The PR check says “No checks detected”: the repository has no
.hookci.ymland nothing the agent recognizes. Add a.hookci.yml.
More fixes are in Troubleshooting.
Where to go next
- How it works: what happens between a push and a green check.
.hookci.ymlreference: jobs, caching, limits, and notification settings.- Slack commands: every
/hookcisubcommand and the App Home. - Security and data: what the hub stores and what stays on your server.