zilleali/mikrotik-laravel
A Laravel package for managing MikroTik RouterOS routers from PHP. Connect via the RouterOS API to run commands and automate common tasks such as hotspot and PPPoE user management, interface monitoring, and queue configuration, with Laravel-friendly configuration and service provider integration.
Release summary: Two changes of substance are buried in dependabot noise — (1) FleetManager multi-router management + router scoping fixes (PR #70), and (2) a security-driven bump of league/commonmark to 2.10.0. The remainder is routine dependency maintenance, notably laravel/framework 12.62 → 12.69.3, guzzle 7.15.2, spatie/ssh 1.13.2, flysystem 3.36.0.
Architecture fit: The package is a thin Laravel service layer over RouterOS (API/SSH via spatie/ssh + guzzle), so it fits cleanly as an infrastructure adapter inside a bounded context (e.g. a "network provisioning" module). FleetManager is the architecturally meaningful change: it matches the actual problem shape — most estates are N routers, not one — and previously that meant hand-rolled client instantiation per device or config hacks. That's a net win in glue-code reduction. The caveat is that this release promotes the package from device driver to fleet orchestrator, which is where scope creep and tight coupling usually begin. Consume FleetManager as a registry/selector only; keep orchestration policy (which router, when, in what order) in our domain layer.
Integration feasibility: Low-to-moderate. No migrations or config-publish changes are declared; adoption is composer install plus credential configuration. Two items need verification before commit: whether FleetManager introduces new config keys or storage for the router inventory, and whether the scoping fixes alter existing single-router query behavior.
Technical risk:
spatie/ssh bumped; the package runs shell commands. Confirm timeouts, host-key verification, and that command construction is bounded by our own inputs.Key questions:
Stack fit: Laravel 12 on PHP 8.2+ is our baseline, so no platform uplift. Conventions are idiomatic Laravel (service provider, publishable config, facades), so friction is low. The one environmental requirement: run device management over an out-of-band management network, not the primary data path — that's a hard prerequisite given the SSH dependency.
Migration path: Greenfield adoption is straightforward. For an app already on v1.7.x, treat v1.8.0 as "minor version, major behavior check": pin to a branch, run the full router-touching suite, and diff read-path outputs before/after.
Sequencing:
RouterGateway) so the large portion of the package we don't use, and future breaking changes, stay behind one seam.composer.json and require human review of dependency-bot commits in both the package and our own lockfile.Compatibility: PHP 8.2+ / Laravel 12.x per the bump trail. If we run Laravel 11, verify the package's composer.json constraint before scheduling — that file, not the dependency PRs, is authoritative. No deprecations or DB changes are declared.
Maintenance: Low on our side if the wrapper stays thin. The real cost is dependency churn — multiple bot bumps per release window with no stated feature-level test evidence. Budget a recurring monthly task to review the package diff and bot PRs; do not auto-merge.
Support: Single-maintainer OSS plus automation, so bus factor is the primary risk. Mitigation: the wrapper interface lets us fork or vendor the FleetManager piece; keep a short written record of exactly what we depend on and why, and value the package as convenience rather than as unique capability.
Scaling: RouterOS calls are per-device and slow (seconds per command). FleetManager implies sequential or pooled calls. Beyond a handful of routers, run fleet operations in queued jobs with per-router isolation and backoff — never in a web request. Ask about concurrency primitives before building anything that fans out fleet-wide, and require an explicit confirmation step plus rate limiting for bulk "apply to all" operations; one bug there is a site-wide outage.
Failure modes to design for:
Ramp-up: Modest. A mid-level Laravel developer is productive on single-router CRUD within a day. FleetManager and the scoping model need one focused knowledge-share plus documented wrapper conventions; call it 1–2 days. The caveat: until we write down what "scoping" now means in our codebase, it stays tribal knowledge.
Recommendation: Adopt v1.8.0 for multi-router needs, behind a wrapper, gated on a 2–3 day spike that explicitly resolves the scoping-behavior question. Do not upgrade an existing v1.7.x integration until that diff is complete.
How can I help you explore Laravel packages today?