PHPackages                             artisan-build/hone-contracts - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PSR &amp; Standards](/categories/psr-standards)
4. /
5. artisan-build/hone-contracts

ActiveLibrary[PSR &amp; Standards](/categories/psr-standards)

artisan-build/hone-contracts
============================

The versioned wire envelope shared between hone-client and hone-server. The single place Hone's wire compatibility lives.

v1.2.0(2w ago)0147↓50%2MITPHPPHP ^8.2

Since Jun 11Pushed 2w agoCompare

[ Source](https://github.com/artisan-build/hone-contracts)[ Packagist](https://packagist.org/packages/artisan-build/hone-contracts)[ RSS](/packages/artisan-build-hone-contracts/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (4)Used By (2)

hone-contracts
==============

[](#hone-contracts)

The versioned **wire envelope** shared between [`hone-client`](https://github.com/artisan-build/hone-client)(the send side) and `hone-server` (the receive side) of [Hone](https://github.com/artisan-build/hone).

This package is tiny and deliberately so. It is the **single place Hone's wire compatibility lives** — the DTOs that cross the network, their (de)serialization, and the `ENVELOPE_VERSION` constant. Both other packages depend on it with a version range.

> **Read-only mirror.** This repository is a read-only split of the [`artisan-build/hone`](https://github.com/artisan-build/hone) monorepo. Issues and pull requests are disabled here — please open them on the monorepo.

Why a separate package
----------------------

[](#why-a-separate-package)

Across N independently-deployed senders and one self-hosted receiver, **version skew is the normal state, not an error.** You cannot keep them in lockstep, so the wire protocol is built to tolerate skew, and the contract that defines it lives in exactly one place that both sides pin.

The compatibility rules
-----------------------

[](#the-compatibility-rules)

1. **The envelope carries its own version.** Every payload includes `ENVELOPE_VERSION`.
2. **Additive within a major.** New fields are optional and added; existing fields are never removed or repurposed. That one rule is what makes a newer server able to parse every older envelope, and an older server able to ignore fields it doesn't recognize.
3. **The inner records are opaque.** The envelope wraps Nightwatch record bodies but never interprets them. Only the thin envelope (app id, deploy, batch metadata) is version-sensitive. A change in Nightwatch's payload shape is invisible to this contract.
4. **A major bump is a deliberate act.** Crossing an envelope major can only happen through an explicit `composer require`, never a routine `composer update` — `hone-client` pins a caret constraint (`^X`) on this package.

The envelope (shape)
--------------------

[](#the-envelope-shape)

The envelope wraps a batch of opaque Nightwatch records with the minimum metadata the server needs to route, tag, and version-check them:

FieldMeaning`envelope_version`The `ENVELOPE_VERSION` the sender was built against.`app`The source application id (one Hone environment may receive many apps).`deploy`The deploy identifier — `NIGHTWATCH_DEPLOY`, typically the commit SHA.`sent_at`When the batch was assembled.`records`The opaque Nightwatch records; each carries its own type discriminator.Installation
------------

[](#installation)

```
composer require artisan-build/hone-contracts
```

You usually don't install this directly — it arrives as a dependency of `hone-client` or `hone-server`.

License
-------

[](#license)

MIT. See [LICENSE](LICENSE).

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance97

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Total

3

Last Release

17d ago

PHP version history (2 changes)v1.0.0PHP ^8.3

v1.2.0PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1053395?v=4)[Ed Grosvenor](/maintainers/edgrosvenor)[@edgrosvenor](https://github.com/edgrosvenor)

---

Top Contributors

[![edgrosvenor](https://avatars.githubusercontent.com/u/1053395?v=4)](https://github.com/edgrosvenor "edgrosvenor (1 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

contractslaraveltelemetrynightwatchhone

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/artisan-build-hone-contracts/health.svg)

```
[![Health](https://phpackages.com/badges/artisan-build-hone-contracts/health.svg)](https://phpackages.com/packages/artisan-build-hone-contracts)
```

###  Alternatives

[nightowl/agent

NightOwl monitoring agent — collects telemetry from laravel/nightwatch and writes to PostgreSQL

771.7k](/packages/nightowl-agent)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
