PHPackages                             gianfriaur/opcua-laravel-client - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. gianfriaur/opcua-laravel-client

Abandoned → [https://github.com/php-opcua/laravel-opcua](/?search=https%3A%2F%2Fgithub.com%2Fphp-opcua%2Flaravel-opcua)Library[Utility &amp; Helpers](/categories/utility)

gianfriaur/opcua-laravel-client
===============================

Laravel integration for OPC UA client with optional session manager support

v4.4.0(4w ago)551MITPHPPHP ^8.2CI passing

Since Mar 16Pushed 3d ago1 watchersCompare

[ Source](https://github.com/php-opcua/laravel-opcua)[ Packagist](https://packagist.org/packages/gianfriaur/opcua-laravel-client)[ RSS](/packages/gianfriaur-opcua-laravel-client/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (8)Dependencies (29)Versions (13)Used By (0)

**OPC UA Laravel Client**
=========================

[](#opc-ua-laravel-client)

    ![OPC UA Laravel Client](assets/logo-light.svg)

 [![Tests](https://camo.githubusercontent.com/a8acb30e4e658e3ebd2ad0f0a29bc1a54fa00fa2e997330af59e1cb658daeb90/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f7068702d6f706375612f6c61726176656c2d6f706375612f74657374732e796d6c3f6272616e63683d6d6173746572266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/php-opcua/laravel-opcua/actions/workflows/tests.yml) [![Coverage](https://camo.githubusercontent.com/a9753180d3872481512ca101d7daace94b71a0a9dcf04613b97114ff5c8f3389/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f7068702d6f706375612f6c61726176656c2d6f706375613f7374796c653d666c61742d737175617265266c6f676f3d636f6465636f76)](https://codecov.io/gh/php-opcua/laravel-opcua) [![Latest Version](https://camo.githubusercontent.com/ad6ecdc7298c4ea8763f81a325af0ff62b33755a676e6ad9057b70f0d3e2f549/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7068702d6f706375612f6c61726176656c2d6f706375613f7374796c653d666c61742d737175617265266c6162656c3d7061636b6167697374)](https://packagist.org/packages/php-opcua/laravel-opcua) [![PHP Version](https://camo.githubusercontent.com/1d0e98ec160347e14f375410ddb85796a96284c7b4d110a8ce9e89d149ecd3c1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7068702d6f706375612f6c61726176656c2d6f706375613f7374796c653d666c61742d737175617265)](https://packagist.org/packages/php-opcua/laravel-opcua) [![License](https://camo.githubusercontent.com/820b2f1ddeff07a59e0ad9cd4caf823fdeba518a1919d123f179c7b2ccd544da/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7068702d6f706375612f6c61726176656c2d6f706375613f7374796c653d666c61742d737175617265)](LICENSE) [![Stars](https://camo.githubusercontent.com/c008160e6a6715b17db63453b86f33ef5ec0458d6c0237fdf2a2042ba2a5a42b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f7068702d6f706375612f6c61726176656c2d6f706375613f7374796c653d666c61742d737175617265)](https://github.com/php-opcua/laravel-opcua/stargazers) [![Laravel Version](https://camo.githubusercontent.com/00d19c343f5ef6869994cd5ffeb7b997d009b854d984b4991b61fe0a7d504c3b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e7825323025374325323031322e7825323025374325323031332e782d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/00d19c343f5ef6869994cd5ffeb7b997d009b854d984b4991b61fe0a7d504c3b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e7825323025374325323031322e7825323025374325323031332e782d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)

 [![Linux](https://camo.githubusercontent.com/88a96af546255df6414fb878e65861f03abd9cd7c69fe0c652b32d10e1dc2b84/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f4c696e75782de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d6c696e7578266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/88a96af546255df6414fb878e65861f03abd9cd7c69fe0c652b32d10e1dc2b84/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f4c696e75782de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d6c696e7578266c6f676f436f6c6f723d7768697465) [![macOS](https://camo.githubusercontent.com/9abd62edee5c8e38df116839daa54deb7e5b2054d4bcb856529f5cd92ada8b74/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f6d61634f532de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/9abd62edee5c8e38df116839daa54deb7e5b2054d4bcb856529f5cd92ada8b74/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f6d61634f532de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465) [![Windows](https://camo.githubusercontent.com/67b9f3090b3bbef27712496e616a0a0f0ead78d1a3a092a80b74df716dda8a6b/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f57696e646f77732de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d77696e646f77733131266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/67b9f3090b3bbef27712496e616a0a0f0ead78d1a3a092a80b74df716dda8a6b/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f57696e646f77732de29c932d3265613434663f7374796c653d666c61742d737175617265266c6f676f3d77696e646f77733131266c6f676f436f6c6f723d7768697465)

---

Laravel integration for [OPC UA](https://opcfoundation.org/about/opc-technologies/opc-ua/) built on [`opcua-client`](https://github.com/php-opcua/opcua-client) and [`opcua-session-manager`](https://github.com/php-opcua/opcua-session-manager). Connect your Laravel app to PLCs, SCADA systems, sensors, and IoT devices with a familiar developer experience: a `Facade`, `.env`-based configuration, named connections (like `config/database.php`), and an Artisan command for the optional session manager daemon.

**What you get:**

- **Facade** — `Opcua::read('i=2259')` with full IDE autocompletion
- **Named connections** — define multiple OPC UA servers and switch between them, just like database connections
- **Transparent session management** — when the daemon is running, connections persist across HTTP requests; when it's not, direct per-request connections with zero code changes
- **Laravel-native logging and caching** — your log channel and cache store are automatically injected into every OPC UA client
- **All OPC UA operations** — browse, read, write, method calls, subscriptions, events, history, path resolution, type discovery
- **PSR-14 events** — 47 dispatched events covering every OPC UA operation for observability and extensibility
- **Auto-publish** — daemon monitors subscriptions automatically and dispatches PSR-14 events to your Laravel listeners — no manual publish loop
- **Auto-connect** — define subscriptions in `config/opcua.php` per connection and the daemon sets them up at startup
- **Trust store** — certificate trust management with configurable policies and auto-accept modes
- **Write auto-detection** — omit the type parameter and let the client detect the correct OPC UA type automatically

> **Note:** This package wraps the full [opcua-client](https://github.com/php-opcua/opcua-client) API with Laravel conventions. For the underlying protocol details, types, and advanced features, see the [client documentation](https://github.com/php-opcua/opcua-client/tree/master/doc).

### Tested against the OPC UA reference implementation

[](#tested-against-the-opc-ua-reference-implementation)

The underlying [opcua-client](https://github.com/php-opcua/opcua-client) is integration-tested against **[UA-.NETStandard](https://github.com/OPCFoundation/UA-.NETStandard)** — the **reference implementation** maintained by the OPC Foundation, the organization that defines the OPC UA specification.

This Laravel package is additionally integration-tested via [uanetstandard-test-suite](https://github.com/php-opcua/uanetstandard-test-suite) in both direct and managed (daemon) modes, ensuring full compatibility across all connection strategies. Like [opcua-client](https://github.com/php-opcua/opcua-client) and [opcua-session-manager](https://github.com/php-opcua/opcua-session-manager), unit tests run cross-OS — **Linux, macOS, and Windows** across PHP 8.2–8.5 × Laravel 11/12/13 — on every push. Integration tests stay on Linux (Docker-hosted OPC UA servers).

### Runs on Linux, macOS, and Windows

[](#runs-on-linux-macos-and-windows)

The session manager IPC auto-selects the right transport per platform — zero app-side changes.

PlatformDefault transportEndpoint URILinux / macOSUnix-domain socket`unix://`WindowsTCP loopback`tcp://127.0.0.1:9990``config/opcua.php → session_manager.socket_path` defaults to the platform-appropriate URI. Override by setting `OPCUA_SOCKET_PATH` in `.env` to either a `unix://`, a `tcp://127.0.0.1:` (loopback-only — non-loopback hosts are refused on both client and daemon sides), or a scheme-less path (= `unix://`, backwards-compatible with pre-v4.2.0 configs).

Quick Start
-----------

[](#quick-start)

```
composer require php-opcua/laravel-opcua
```

```
# RSA security (or use ECC: ECC_nistP256, ECC_nistP384, ECC_brainpoolP256r1, ECC_brainpoolP384r1)
OPCUA_ENDPOINT=opc.tcp://192.168.1.100:4840
```

```
use PhpOpcua\LaravelOpcua\Facades\Opcua;

$client = Opcua::connect();

$value = $client->read('i=2259');
echo $value->getValue(); // 0 = Running

$client->disconnect();
```

That's it. Facade, `.env`, connect, read. Everything else is optional.

See It in Action
----------------

[](#see-it-in-action)

### Browse the address space

[](#browse-the-address-space)

```
$client = Opcua::connect();

$refs = $client->browse('i=85'); // Objects folder
foreach ($refs as $ref) {
    echo "{$ref->displayName} ({$ref->nodeId})\n";
}

$client->disconnect();
```

### Read multiple values with fluent builder

[](#read-multiple-values-with-fluent-builder)

```
$client = Opcua::connect();

$results = $client->readMulti()
    ->node('i=2259')->value()
    ->node('ns=2;i=1001')->displayName()
    ->execute();

foreach ($results as $dv) {
    echo $dv->getValue() . "\n";
}

$client->disconnect();
```

### Write to a PLC

[](#write-to-a-plc)

```
use PhpOpcua\Client\Types\BuiltinType;

$client = Opcua::connect();
$client->write('ns=2;i=1001', 42, BuiltinType::Int32);

// Or let the client auto-detect the type
$client->write('ns=2;i=1001', 42);

$client->disconnect();
```

### Call a method on the server

[](#call-a-method-on-the-server)

```
use PhpOpcua\Client\Types\Variant;
use PhpOpcua\Client\Types\BuiltinType;

$client = Opcua::connect();

$result = $client->call(
    'i=2253',   // Server object
    'i=11492',  // Method
    [new Variant(BuiltinType::UInt32, 1)],
);

echo $result->statusCode;               // 0
echo $result->outputArguments[0]->value; // [1001, 1002, ...]

$client->disconnect();
```

### Subscribe to data changes

[](#subscribe-to-data-changes)

```
$client = Opcua::connect();

$sub = $client->createSubscription(publishingInterval: 500.0);
$client->createMonitoredItems($sub->subscriptionId, [
    ['nodeId' => 'ns=2;i=1001'],
]);

$response = $client->publish();
foreach ($response->notifications as $notif) {
    echo $notif['dataValue']->getValue() . "\n";
}

$client->deleteSubscription($sub->subscriptionId);
$client->disconnect();
```

### Auto-publish — no manual publish loop

[](#auto-publish--no-manual-publish-loop)

With `auto_publish` enabled, the daemon handles subscriptions automatically. Just register Laravel event listeners:

```
// config/opcua.php
'session_manager' => ['auto_publish' => true],

'connections' => [
    'plc-1' => [
        'endpoint' => 'opc.tcp://192.168.1.10:4840',
        'auto_connect' => true,
        'subscriptions' => [
            [
                'publishing_interval' => 500.0,
                'monitored_items' => [
                    ['node_id' => 'ns=2;s=Temperature', 'client_handle' => 1],
                ],
            ],
        ],
    ],
],
```

```
// EventServiceProvider
use PhpOpcua\Client\Event\DataChangeReceived;

Event::listen(DataChangeReceived::class, function (DataChangeReceived $e) {
    DB::table('sensor_readings')->insert([
        'value' => $e->dataValue->getValue(),
        'client_handle' => $e->clientHandle,
    ]);
});
```

```
php artisan opcua:session  # connects, subscribes, publishes — all automatic
```

### React to events

[](#react-to-events)

47 PSR-14 events are dispatched automatically — connections, reads, writes, alarms, subscriptions, cache, retries. Just register listeners:

```
use Illuminate\Support\Facades\Event;
use PhpOpcua\Client\Event\ClientConnected;
use PhpOpcua\Client\Event\NodeValueWriteFailed;
use PhpOpcua\Client\Event\AlarmActivated;

// Log connections
Event::listen(ClientConnected::class, function ($e) {
    logger()->info("Connected to {$e->endpointUrl}");
});

// Track write failures
Event::listen(NodeValueWriteFailed::class, function ($e) {
    logger()->warning("Write failed on {$e->nodeId}: 0x" . dechex($e->statusCode));
});

// Alert operators on alarms
Event::listen(AlarmActivated::class, function ($e) {
    Notification::send(
        User::role('operator')->get(),
        new AlarmTriggered($e->sourceName, $e->severity, $e->message),
    );
});
```

See [Events documentation](docs/events/overview.md) for the full reference of all 47 events.

### Switch connections

[](#switch-connections)

```
// Named connection from config
$client = Opcua::connect('plc-line-1');
$value = $client->read('ns=2;i=1001');
Opcua::disconnect('plc-line-1');

// Ad-hoc connection at runtime
$client = Opcua::connectTo('opc.tcp://10.0.0.50:4840', [
    'username' => 'operator',
    'password' => 'secret',
], as: 'temp-plc');

Opcua::disconnectAll();
```

### Test without a real server

[](#test-without-a-real-server)

```
use PhpOpcua\Client\Testing\MockClient;
use PhpOpcua\Client\Types\DataValue;

$mock = MockClient::create()
    ->onRead('i=2259', fn() => DataValue::ofInt32(0));

// Inject into OpcuaManager via DI or reflection
$value = $mock->read('i=2259');
echo $value->getValue(); // 0
echo $mock->callCount('read'); // 1
```

Features
--------

[](#features)

FeatureWhat it does**Facade**`Opcua::read()`, `Opcua::browse()`, etc. with full PHPDoc for IDE autocompletion**Named Connections**Define multiple servers in `config/opcua.php`, switch with `Opcua::connection('plc-2')`**Ad-hoc Connections**`Opcua::connectTo('opc.tcp://...')` for endpoints not in config**Session Manager**Artisan command `php artisan opcua:session` for daemon-based session persistence**Transparent Fallback**Daemon available? ManagedClient. Not available? Direct Client. Zero code changes**String NodeIds**`'i=2259'`, `'ns=2;s=MyNode'` everywhere a `NodeId` is accepted**Fluent Builder API**`readMulti()`, `writeMulti()`, `createMonitoredItems()`, `translateBrowsePaths()` chain**PSR-3 Logging**Laravel's log channel injected automatically via config**PSR-14 Events**47 dispatched events covering every OPC UA operation for observability and extensibility**PSR-16 Caching**Laravel's cache store injected automatically. Per-call `useCache` on browse ops**Write Auto-Detection**`write('ns=2;i=1001', 42)` — omit the type and the client detects it automatically**Read Metadata Cache**Cached node metadata avoids redundant reads; refresh on demand with `read($nodeId, refresh: true)`**Trust Store**`FileTrustStore` with configurable `TrustPolicy`, auto-accept modes, and certificate management**Type Discovery**`discoverDataTypes()` auto-detects custom server structures**Auto-Publish**Daemon auto-publishes for sessions with subscriptions, dispatches PSR-14 events to Laravel listeners**Auto-Connect**Per-connection `auto_connect` with declarative `subscriptions` config — daemon sets up monitoring on startup**Subscription Management**`createMonitoredItems()`, `modifyMonitoredItems()`, `setTriggering()`, `transferSubscriptions()`**MockClient**Test without a server — register handlers, assert calls**Timeout &amp; Retry**Per-connection `timeout`, `auto_retry` via config or fluent API**Auto-Batching**`readMulti`/`writeMulti` transparently split when exceeding server limits**Recursive Browse**`browseAll()`, `browseRecursive()` with depth control and cycle detection**Path Resolution**`resolveNodeId('/Objects/Server/ServerStatus')`**Security**10 policies (RSA + ECC), 3 auth modes, auto-generated certs, certificate trust management> **ECC disclaimer:** ECC security policies (`ECC_nistP256`, `ECC_nistP384`, `ECC_brainpoolP256r1`, `ECC_brainpoolP384r1`) are fully implemented and tested against the OPC Foundation's UA-.NETStandard reference stack. However, no commercial OPC UA vendor supports ECC endpoints yet. When using ECC, client certificates are auto-generated if `client_certificate`/`client_key` are omitted, and username/password authentication uses the `EccEncryptedSecret` protocol automatically. | **History Read** | Raw, processed, and at-time historical queries | | **Typed Returns** | All service responses return `public readonly` DTOs |

Documentation
-------------

[](#documentation)

Full documentation is available in [`docs/`](docs/index.md). Highlights:

SectionCovers**Getting started** — [Overview](docs/overview.md) · [Installation](docs/getting-started/installation.md) · [Quick start](docs/getting-started/quick-start.md) · [How laravel-opcua fits](docs/getting-started/how-laravel-opcua-fits.md) · [Upgrading](docs/getting-started/upgrading.md)Concepts, install, first connection**Configuration** — [Config file](docs/configuration/config-file.md) · [Connections](docs/configuration/connections.md) · [Environment variables](docs/configuration/environment-variables.md) · [Security](docs/configuration/security.md) · [Session manager](docs/configuration/session-manager.md) · [Publishing &amp; overriding](docs/configuration/publishing-overriding.md)`.env`, config file, named connections**Using the client** — [Facade vs injection](docs/using-the-client/facade-vs-injection.md) · [Named connections](docs/using-the-client/named-connections.md) · [Ad-hoc connections](docs/using-the-client/ad-hoc-connections.md) · [Connection lifecycle](docs/using-the-client/connection-lifecycle.md) · [Using builders](docs/using-the-client/using-builders.md)Facade, DI, lifecycle**Operations** — [Reading](docs/operations/reading.md) · [Writing](docs/operations/writing.md) · [Browsing](docs/operations/browsing.md) · [Method calls](docs/operations/method-calls.md) · [Subscriptions](docs/operations/subscriptions.md) · [History](docs/operations/history.md)Read/write, browse, subscribe, history**Session manager** — [Overview](docs/session-manager/overview.md) · [Starting the daemon](docs/session-manager/starting-the-daemon.md) · [Auto-publish](docs/session-manager/auto-publish.md) · [Production supervisor](docs/session-manager/production-supervisor.md) · [Monitoring](docs/session-manager/monitoring-the-daemon.md)Persistent sessions via daemon**Events** — [Overview](docs/events/overview.md) · [Connection events](docs/events/connection-events.md) · [Data events](docs/events/data-events.md) · [Alarm events](docs/events/alarm-events.md) · [Queued listeners](docs/events/queued-listeners.md)PSR-14 + Laravel listeners**Observability** — [Logging](docs/observability/logging.md) · [Caching](docs/observability/caching.md) · [Debugging](docs/observability/debugging.md) · [Telescope &amp; Pulse](docs/observability/telescope-and-pulse.md)Logs, cache, dev tools**Security** — [Policies &amp; modes](docs/security/policies-and-modes.md) · [Credentials](docs/security/credentials.md) · [Certificates](docs/security/certificates.md) · [Trust store](docs/security/trust-store.md)Security policies, certs, trust**Testing** — [Pest setup](docs/testing/pest-setup.md) · [Mocking the facade](docs/testing/mocking-the-facade.md) · [Using MockClient](docs/testing/using-mock-client.md) · [Integration tests](docs/testing/integration-tests.md)Unit + integration tests**Integrations** — [Octane &amp; FrankenPHP](docs/integrations/octane-and-frankenphp.md) · [Horizon &amp; queues](docs/integrations/horizon-and-queues.md) · [Broadcasting](docs/integrations/broadcasting.md) · [Livewire](docs/integrations/livewire.md) · [Notifications](docs/integrations/notifications.md) · [Filament](docs/integrations/filament.md)Laravel ecosystem**Reference** — [Facade methods](docs/reference/facade-methods.md) · [OpcuaManager API](docs/reference/opcua-manager-api.md) · [Artisan commands](docs/reference/artisan-commands.md) · [Exceptions](docs/reference/exceptions.md)Public API**Recipes** — [Persistent tag history](docs/recipes/persistent-tag-history.md) · [Alarm routing](docs/recipes/alarm-routing.md) · [Livewire dashboard](docs/recipes/livewire-realtime-dashboard.md) · [Multi-plant tenant](docs/recipes/multi-plant-tenant.md) · [Companion specs](docs/recipes/using-companion-specs.md) · [Dev with Sail](docs/recipes/dev-with-sail.md) · [Production deployment](docs/recipes/production-deployment.md)Task-oriented walkthroughsTesting
-------

[](#testing)

146+ unit tests with **99%+ code coverage**. Integration tests run against [uanetstandard-test-suite](https://github.com/php-opcua/uanetstandard-test-suite) — a Docker-based OPC UA environment built on the OPC Foundation's UA-.NETStandard reference implementation — in both direct and managed (daemon) modes.

```
./vendor/bin/pest tests/Unit/                              # unit only
./vendor/bin/pest tests/Integration/ --group=integration   # integration only
./vendor/bin/pest                                          # everything
```

Ecosystem
---------

[](#ecosystem)

PackageDescription[opcua-client](https://github.com/php-opcua/opcua-client)Pure PHP OPC UA client[opcua-cli](https://github.com/php-opcua/opcua-cli)CLI tool — browse, read, write, watch, discover endpoints, manage certificates, generate code from NodeSet2.xml[opcua-session-manager](https://github.com/php-opcua/opcua-session-manager)Daemon-based session persistence across PHP requests. Keeps OPC UA connections alive between short-lived PHP processes via a ReactPHP daemon and Unix sockets. Separate package by design — see [ROADMAP.md](ROADMAP.md#session-manager-integration-here) for rationale.[opcua-client-nodeset](https://github.com/php-opcua/opcua-client-nodeset)Pre-generated PHP types from 51 OPC Foundation companion specifications (DI, Robotics, Machinery, MachineTool, ISA-95, CNC, MTConnect, and more). 807 PHP files — NodeId constants, enums, typed DTOs, codecs, registrars with automatic dependency resolution. Just `composer require` and `loadGeneratedTypes()`.[laravel-opcua](https://github.com/php-opcua/laravel-opcua)Laravel integration — service provider, facade, config (this package)[uanetstandard-test-suite](https://github.com/php-opcua/uanetstandard-test-suite)Docker-based OPC UA test servers (UA-.NETStandard) for integration testingCommunity
---------

[](#community)

Have questions, ideas, or want to share what you've built? Join the [GitHub Discussions](https://github.com/php-opcua/laravel-opcua/discussions).

**Connected a PLC, SCADA system, or OPC UA server?** We're building a community-driven list of tested hardware and software. Share your experience in [Tested Hardware &amp; Software](https://github.com/php-opcua/laravel-opcua/discussions/categories/tested-hardware-software) — even a one-liner like "Siemens S7-1500, works fine" helps other users know what to expect.

Contributing
------------

[](#contributing)

Contributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).

AI-Ready
--------

[](#ai-ready)

This package ships with machine-readable documentation designed for AI coding assistants (Claude, Cursor, Copilot, ChatGPT, and others). Feed these files to your AI so it knows how to use the library correctly:

FilePurpose[`llms.txt`](llms.txt)Compact project summary — architecture, Facade, configuration, session manager. Optimized for LLM context windows with minimal token usage.[`llms-full.txt`](llms-full.txt)Comprehensive technical reference — every config key, method, DTO, event, trust store, managed client. For deep dives and complex questions.[`llms-skills.md`](llms-skills.md)Task-oriented recipes — step-by-step instructions for common tasks (install, read, write, browse, named connections, session manager, security, testing, events). Written so an AI can generate correct, production-ready code from a user's intent.**How to use:** copy the files you need into your project's AI configuration directory. The files are located in `vendor/php-opcua/laravel-opcua/` after `composer install`.

- **Claude Code**: reference per-session with `--add-file vendor/php-opcua/laravel-opcua/llms-skills.md`
- **Cursor**: copy into your project's rules directory — `cp vendor/php-opcua/laravel-opcua/llms-skills.md .cursor/rules/laravel-opcua.md`
- **GitHub Copilot**: copy or append the content into your project's `.github/copilot-instructions.md` file (create the file and directory if they don't exist). Copilot reads this file automatically for project-specific context
- **Other tools**: paste the content into your system prompt, project knowledge base, or context configuration

Versioning
----------

[](#versioning)

This package follows the same version numbering as [`php-opcua/opcua-client`](https://github.com/php-opcua/opcua-client). Each release of `laravel-opcua` is aligned with the corresponding release of the client library to ensure full compatibility.

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md).

License
-------

[](#license)

[MIT](LICENSE)

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance97

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~7 days

Total

11

Last Release

29d ago

Major Versions

v1.1.0 → v2.0.02026-03-20

v2.0.0 → v3.0.02026-03-23

v3.0.0 → v4.0.02026-04-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/fb72ba5d2c05eec08d9556c0007f17a7d657d5187de1025a4a0525ace4ac8000?d=identicon)[GianfriAur](/maintainers/GianfriAur)

---

Top Contributors

[![GianfriAur](https://avatars.githubusercontent.com/u/16904504?v=4)](https://github.com/GianfriAur "GianfriAur (23 commits)")

---

Tags

laravellaravel-packageopc-uaopc-ua-client

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/gianfriaur-opcua-laravel-client/health.svg)

```
[![Health](https://phpackages.com/badges/gianfriaur-opcua-laravel-client/health.svg)](https://phpackages.com/packages/gianfriaur-opcua-laravel-client)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

9782.1M162](/packages/laravel-ai)[laravel/sail

Docker files for running a basic Laravel application.

1.9k199.2M1.2k](/packages/laravel-sail)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.1M337](/packages/psalm-plugin-laravel)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

721160.4k12](/packages/tallstackui-tallstackui)[spatie/laravel-export

Create a static site bundle from a Laravel app

672139.5k6](/packages/spatie-laravel-export)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

76518.2M120](/packages/laravel-mcp)

PHPackages © 2026

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