porro

Get started

Connecting a site to Porro

Let Porro install the connector with a pull request on Forge, Ploi or Laravel Cloud, or run one command with the site key.

Everything in the panel works without a Porro account. Connecting adds what can only be seen from outside the site, alongside every other site you look after.

Let Porro install it

On Laravel Forge, Ploi or Laravel Cloud, Porro can do all of this for you through a pull request:

  1. In the workspace's Settings, under Integrations → Connections, connect your host and GitHub, GitLab or Bitbucket.
  2. Import the site from the host. For a site you added another way, open its settings, then Connector & errors, and link it to where it lives on the host and to its repository.
  3. Click Install with a pull request on the site's page, or Install connectors on Sites to do several at once.

Porro opens a pull request adding the connector, sets PORRO_KEY in the site's environment on the host, and adds a report step to its deploy script (deploy commands on Cloud). Nothing changes on the site until you merge, and the first report arrives with the deploy. Porro never deploys, merges or runs commands on your servers.

Not on one of those hosts? Follow the steps below.

1. Add the site in Porro

Add the site in Porro, open its page and create a site key under Connector. A site key looks like porro_…, is shown once and signs every report the site sends.

2. Run connect

Site Command
Laravel or Filament php artisan porro:connect <site key>
Statamic php please porro:connect <site key>
Craft CMS php craft porro/connect <site key>
JavaScript npx @porro/js-connector connect <site key>

connect saves the key to .env as PORRO_KEY and sends the first report.

3. Let it report on a schedule

PHP sites report every 15 minutes:

  • Laravel, Filament and Statamic report on Laravel's scheduler, which needs one cron line. If the scheduler isn't running yet, connect offers to add the line to the server's crontab, with the right PHP binary and folder, or prints it to paste into Forge, Ploi or crontab -e. --cron adds it without asking; --no-cron leaves the crontab alone. On Laravel Cloud, turn on Scheduler on the environment's App cluster, then save and redeploy: Cloud runs schedule:run every minute, so there's no cron line. Vapor runs the scheduler unless vapor.yml sets scheduler: false. On both, just set PORRO_KEY.
  • Craft reports from its own cron line, which php craft porro/connect offers to add in the same way. php craft porro/cron adds it later, without the key.
  • JavaScript reports on every production build instead. Add PORRO_KEY to the host's production environment variables, not the repo.

Add the report command to your deploy script so Porro hears about deploys straight away: php artisan porro:report (php craft porro/report --deploy on Craft). It never fails a deploy.

Only production reports

With PORRO_ENABLED unset, only production reports: APP_ENV (or CRAFT_ENVIRONMENT) of production, prod or live. A local or staging copy running with the live .env stays quiet, so it can't overwrite the live site's state in Porro. Set PORRO_ENABLED=true to report from another environment on purpose, or false to stop reporting.

php artisan porro:status (or php craft porro/status) shows whether reporting is on and why, and --json prints the exact report.

What a report is

One signed POST with the site's versions, packages and health facts, never its content, users or secrets. What leaves a site lists every field. Porro never connects in: reading the site's findings back is a GET from the site, signed with the same key.

Try it on your sites.

28 days free, no card needed. Import your sites from Forge, Laravel Cloud or Ploi in a couple of minutes.

Start your free trial →