PHPackages                             mykolavoitovych/artisan-runner - 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. mykolavoitovych/artisan-runner

ActiveLibrary

mykolavoitovych/artisan-runner
==============================

Run Artisan commands via the web with Nova authentication and real-time output

1.2.1(1mo ago)097↓50%MITBladePHP ^8.4

Since Mar 19Pushed 1mo agoCompare

[ Source](https://github.com/MykolaVoitovych/artisan-runner)[ Packagist](https://packagist.org/packages/mykolavoitovych/artisan-runner)[ RSS](/packages/mykolavoitovych-artisan-runner/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (3)Versions (3)Used By (0)

Artisan Runner
==============

[](#artisan-runner)

A Laravel package that lets you run Artisan commands through a web UI. Commands are executed via the queue, with real-time output streamed to an xterm.js terminal. Includes command history, forbidden command protection, and configurable authentication.

Features
--------

[](#features)

- Run any Artisan command from the browser
- Real-time output in an xterm.js terminal (ANSI colour support)
- Commands execute as queued jobs — the HTTP request returns immediately
- Full command history with status, exit code, duration, and who ran it
- Configurable middleware, forbidden commands list (exact match and wildcard patterns)
- Configurable authentication guard (`nova`, `web`, `sanctum`, or none)
- Re-run any previous command in one click

Requirements
------------

[](#requirements)

- PHP 8.4+
- Laravel 12+
- A running queue worker

Installation
------------

[](#installation)

```
composer require vantage/artisan-runner
```

Run the migration:

```
php artisan migrate
```

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag=artisan-runner-config
```

This creates `config/artisan-runner.php` with the following options:

KeyDefaultDescription`enabled``true`Enable or disable all routes`route_prefix``'artisan-runner'`URL prefix for all routes`middleware``['web']`Middleware applied to all routes`guard``null`Auth guard (`'nova'`, `'web'`, `'sanctum'`, or `null`)`forbidden_commands`see belowCommands blocked from running via the UI`process_timeout``300`Max seconds a command may run### Environment variables

[](#environment-variables)

VariableDefaultDescription`ARTISAN_RUNNER_ENABLED``true`Enable or disable all routes`ARTISAN_RUNNER_PREFIX``artisan-runner`URL prefix for all routes`ARTISAN_RUNNER_TIMEOUT``300`Max seconds a command may runAuthentication
--------------

[](#authentication)

Set `guard` to any Laravel authentication guard:

```
'guard' => 'nova',  // Laravel Nova
'guard' => 'web',   // default web guard
'guard' => null,    // no authentication
```

### Nova integration

[](#nova-integration)

Set both `middleware` and `guard` for full Nova integration:

```
'middleware' => ['nova-web'],
'guard'      => 'nova',
```

Usage
-----

[](#usage)

Navigate to `/artisan-runner` (or your configured prefix).

Type a command name (without `php artisan`) and click **Run Command**. Autocomplete is available for all registered commands.

```
cache:clear
migrate --force
queue:restart
config:cache

```

Each command opens a dedicated terminal page. Output is polled every 300 ms and rendered with full ANSI colour support.

The history list shows all previous runs with status, exit code, duration, and who ran it. Use **Re-run** to dispatch the same command again, or **Delete** to remove the log entry.

Forbidden Commands
------------------

[](#forbidden-commands)

Commands matching an entry in `forbidden_commands` are rejected before dispatch. Entries support exact matches and `fnmatch()` wildcard patterns:

```
'forbidden_commands' => [
    'migrate:fresh',   // exact match
    'db:*',           // blocks db:wipe, db:seed, etc.
],
```

The forbidden list is displayed below the command input.

Queue
-----

[](#queue)

Commands run as queued jobs. Make sure a worker is running:

```
php artisan queue:work
```

Each job has a single attempt and respects `process_timeout`. If the worker is stopped mid-run, the terminal displays the error and marks the command as **Failed**.

Limitations
-----------

[](#limitations)

Commands run in a separate worker process, so commands that modify in-memory state (e.g. `config:cache`, `route:cache`, `view:clear`) will update files on disk but won't affect already-running workers. If you use **Laravel Octane**, run `octane:reload` after such commands for changes to take effect.

Publishing Views
----------------

[](#publishing-views)

```
php artisan vendor:publish --tag=artisan-runner-views
```

Views will be copied to `resources/views/vendor/artisan-runner/`.

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance90

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

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 ~0 days

Total

2

Last Release

52d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/755a72f1ee600cca61aabdb9c4582e3c82986d620b6f20774bf03accfa67502b?d=identicon)[MykolaVoitovych](/maintainers/MykolaVoitovych)

---

Top Contributors

[![MykolaVoitovych](https://avatars.githubusercontent.com/u/84436767?v=4)](https://github.com/MykolaVoitovych "MykolaVoitovych (8 commits)")

### Embed Badge

![Health badge](/badges/mykolavoitovych-artisan-runner/health.svg)

```
[![Health](https://phpackages.com/badges/mykolavoitovych-artisan-runner/health.svg)](https://phpackages.com/packages/mykolavoitovych-artisan-runner)
```

###  Alternatives

[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k39.1M32.1k](/packages/orchestra-testbench)[orchestra/workbench

Workbench Companion for Laravel Packages Development

8017.0M43](/packages/orchestra-workbench)[anourvalar/eloquent-serialize

Laravel Query Builder (Eloquent) serialization

11320.2M21](/packages/anourvalar-eloquent-serialize)[sbine/route-viewer

A Laravel Nova tool to view your registered routes.

57215.9k](/packages/sbine-route-viewer)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3691.5k](/packages/codewithdennis-larament)[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

14720.0k](/packages/markwalet-nova-modal-response)

PHPackages © 2026

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