Documentation
HoneGetting started
Updated
You install Hone from the Scalpels catalog like any other product. The general flow is described in Install a product. This page covers what is specific to Hone.
Before you start
- Connect GitHub and Laravel Cloud to your Scalpels team (Connect GitHub, Connect Laravel Cloud).
- Choose a Cloud region close to the apps that will report to Hone. Every app sends its telemetry over HTTPS to this deployment, so keeping them in the same region keeps that traffic local.
- Check the apps you plan to monitor. The Hone client requires Laravel 13 and PHP 8.3 or later. Apps on Laravel 11 or 12 cannot install it.
What the install provisions
Scalpels forks artisan-build/hone into your GitHub account and creates the following in your Laravel Cloud account, and nothing else:
| Resource | Why Hone needs it |
|---|---|
| Web compute on PHP 8.5 | Serves the ingest endpoint (/ingest) and the MCP server (/mcp). |
| A Neon serverless PostgreSQL 18 database | Holds everything: credentials, raw events and aggregates. Hone's telemetry schema uses jsonb and PostgreSQL-only functions, so it cannot run on MySQL. |
| A managed queue | Processes the telemetry batches the ingest endpoint accepts. |
| The scheduler | Runs hone:maintain and hone:health every hour. |
Hone does not use a cache, so none is provisioned. After the first deploy, Scalpels runs php artisan migrate --force, which creates Hone's telemetry tables and the credential tables in the one database.
Hone has no required environment values. Every HONE_* setting has a working default; see Configuration for the optional ones.
After it is running
Hone is headless. There is no sign-in page, no dashboard and no admin screen, so there is nothing to log into after the install. You use it in two ways:
- Apps send telemetry to it. Attach each Laravel app you want to monitor; see Connecting your apps.
- Your agent reads from it. Connect a coding agent to its MCP server; see Connecting your agent.
To check the deployment is up before you attach anything, request its capabilities endpoint. It needs no credential:
curl https://<your-hone-host>/capabilities
A working deployment answers with the telemetry envelope versions it accepts:
{"envelope":{"min_major":1,"max_major":1,"supported_majors":[1]}}
An unauthenticated POST to /ingest or /mcp should return 401. That is expected: both endpoints require a bearer credential, and each needs a different kind.
Do not turn on Cloud's Nightwatch integration
Laravel Cloud offers a built-in Nightwatch integration. Leave it off, both on the Hone environment and on every app that reports to Hone. It runs Cloud's managed agent and sends data to Nightwatch's hosted service, which is what Hone exists to avoid.
Keeping it current
Hone's repository is your fork. When you upgrade, upgrade the Hone server and run its migrations before you update the client package in your apps. A newer server accepts every older client, but a client that is ahead of the server is refused. See Troubleshooting for what that looks like.