artisan-build/sink-client

The capture transport side of Sink. Installed in Laravel apps whose outbound mail should be captured by a Sink server.

Maintainers

Package info

github.com/artisan-build/sink-client

pkg:composer/artisan-build/sink-client

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-08-24 10:54 UTC

This package is auto-updated.

Last update: 2026-08-25 10:35:11 UTC


README

Read-only mirror. This repository is a read-only split of the artisan-build/sink monorepo. Issues and pull requests are disabled here — please open them on the monorepo.

The send side of Sink. It provides the Laravel sink mail transport that captures outbound messages and posts them to a self-hosted Sink server instead of delivering them anywhere.

Installation

composer require artisan-build/sink-client

Then configure the Sink server URL and token:

php artisan sink:install --url=https://sink.example.test --token=your-token

Enable capture explicitly in the host app:

MAIL_MAILER=sink
SINK_URL=https://sink.example.test
SINK_TOKEN=your-token

Installing the package alone does not change your default mailer. Sink only captures mail when the application selects MAIL_MAILER=sink.

Configuration

Publish the config if you need to tune retries, timeout, stream tagging, or message size limits:

php artisan vendor:publish --tag=sink-client-config

Available environment values:

  • SINK_URL: Sink server base URL.
  • SINK_TOKEN: Sink ingest token.
  • SINK_STREAM: optional stream label for future per-run isolation.
  • SINK_RETRY_ATTEMPTS: HTTP attempts before the send fails visibly. Default 3.
  • SINK_RETRY_BASE_MS: exponential backoff base in milliseconds. Default 200.
  • SINK_TIMEOUT: per-attempt HTTP timeout in seconds. Default 15.
  • SINK_MAX_MESSAGE_BYTES: raw MIME size ceiling before attachments are dropped or headers-only capture is used. Default 10485760.

Production Fuse

Sink refuses to construct the transport in production unless you explicitly set:

SINK_ALLOW_PRODUCTION=true

This prevents production mail from being silently swallowed. If Sink cannot capture a selected message after retries are exhausted, the send throws so queued mail jobs fail visibly.

Compatibility

Check server/client envelope compatibility with:

php artisan sink:update

If your Sink server does not expose /capabilities yet, the command reports that gracefully.

License

MIT. See LICENSE.