Comments pinned to the page
Reviewers click the element they mean and type. The thread shows up on the pull request with a screenshot of that spot.
Ferrule builds each branch into a private URL with your own build command and staging data. Reviewers click through the change before they approve it.
Connect a repository once. After that, every branch you push gets its own build and its own link.
Install the app on GitHub, GitLab or Bitbucket and choose which repositories Ferrule may build.
Ferrule runs your build command with staging variables and posts the link as a status check.
Reviewers open the link, comment on the page itself, and approve with the change in front of them.
Each part of a preview exists to save one round trip between the author and the reviewer.
Reviewers click the element they mean and type. The thread shows up on the pull request with a screenshot of that spot.
A failed build opens on the failing line with the file and line number, not at the top of three thousand lines of install output.
Share one link with a client or a tester outside your organization, and let it expire on its own.
Each preview reports page weight against the limits you set, so a heavy change is caught in review.
Variables inherit from staging. Any branch can switch on a flag or point at its own API without touching the rest.
Run the CLI from your laptop, add one step to your CI workflow, or start the image on your own servers.
CLI
$ npm install --save-dev ferrule
$ npx ferrule login
$ npx ferrule init # writes ferrule.json with your build command
$ npx ferrule preview # builds this branch and prints its URL
CI workflow
on: pull_request
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx ferrule preview --comment
env:
FERRULE_TOKEN: ${{ secrets.FERRULE_TOKEN }}
Docker
$ docker run -d --name ferrule \
-p 8080:8080 \
-v ferrule-data:/data \
-e FERRULE_LICENSE="your-key" \
ferrule/server:2
The self-hosted edition runs builds, stores logs and serves previews from your own servers. Nothing about your code leaves them.
SAML and OpenID Connect, with previews limited to the groups you choose.
Build artifacts and logs go to any S3-compatible bucket you point it at.
Pin a version, read the changelog, then pull the next image when you're ready.
License checks run against a signed file, so air-gapped networks are fine.
Every plan builds unlimited previews. You pay for the people who sign in to review them.
For side projects and open source.
$0for one person, always
Start freeFor product teams that ship every day.
$19per reviewer, per month
Start a 14-day trialFor teams that keep code on their own network.
$39per reviewer, per month
Talk to usPrices in US dollars. Yearly billing takes two months off.
| Feature | Hobby | Team | Self-hosted |
|---|---|---|---|
| Projects | 1 | Unlimited | Unlimited |
| Builds at a time | 1 | 4 | Your hardware |
| Build minutes per month | 300 | 6,000 | No limit |
| Password previews | Not included | Included | Included |
| Single sign-on | Not included | Not included | Included |
| Log retention | 7 days | 90 days | You decide |
What teams usually ask before they connect a repository.
Something else? Write to the team.
Yes. Give each app its folder and build command in ferrule.json, and each one gets its own preview URL on the same pull request.
Members of your organization, by default. On Team and Self-hosted you can add a password to share one preview with someone outside it.
On Ferrule's build machines for Hobby and Team. With Self-hosted, they run on your servers and nothing leaves your network.
A preview sleeps after 7 days without a visit and wakes on the next request. When a pull request closes, its previews are deleted 30 days later.
It can, but we recommend staging data. Branch environments let you seed each preview with sample records instead.
No. The trial runs for 14 days, then your workspace moves to Hobby unless you add a card.
Tell us how you deploy today. A person on the team replies within two working days.
Connect a repository in a couple of minutes. The Hobby plan never expires.
Part of the Design Systems Library