PHPackages                             emir/laravel-webartisan - 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. [CLI &amp; Console](/categories/cli)
4. /
5. emir/laravel-webartisan

ActiveLibrary[CLI &amp; Console](/categories/cli)

emir/laravel-webartisan
=======================

A beautiful browser-based terminal to run Laravel Artisan commands

v2.0.0(3mo ago)554374MITPHPPHP ^8.2CI passing

Since Aug 28Pushed 3mo ago4 watchersCompare

[ Source](https://github.com/emir/laravel-webartisan)[ Packagist](https://packagist.org/packages/emir/laravel-webartisan)[ Docs](https://github.com/emir/laravel-webartisan)[ RSS](/packages/emir-laravel-webartisan/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (4)Used By (0)

Laravel Webartisan
==================

[](#laravel-webartisan)

[![Tests](https://github.com/emir/laravel-webartisan/actions/workflows/tests.yml/badge.svg)](https://github.com/emir/laravel-webartisan/actions/workflows/tests.yml)[![Latest Version on Packagist](https://camo.githubusercontent.com/d6b8f027d59e1d54cd4a2c2c8e765e2997ce9e4dbb726b3c667122d85a63f11d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f656d69722f6c61726176656c2d7765626172746973616e2e737667)](https://packagist.org/packages/emir/laravel-webartisan)[![Total Downloads](https://camo.githubusercontent.com/e988b75a5f21441b799cbca85eb4e252066d49ff8e8cafcac47444ca1023f953/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f656d69722f6c61726176656c2d7765626172746973616e2e737667)](https://packagist.org/packages/emir/laravel-webartisan)[![License](https://camo.githubusercontent.com/af01dc0de53e288187efcaf60a7b7a8ce1858b688f0221f0197c944cbffdc305/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f656d69722f6c61726176656c2d7765626172746973616e2e737667)](https://packagist.org/packages/emir/laravel-webartisan)

A beautiful, modern browser-based terminal for running **Laravel Artisan** commands. Zero dependencies on the frontend, just works.

Features
--------

[](#features)

- Run any Artisan command from your browsers
- **Tab completion** for command names
- **Command history** with up/down arrow navigation
- **4 built-in themes**: Dark, Light, Monokai, Dracula
- **Security**: Environment restriction, Gate authorization, command allow/block lists
- **Wildcard patterns** for command filtering (`migrate:*`, `db:*`)
- **Artisan install command** for quick setup
- **Zero configuration** needed - works out of the box
- Supports **Laravel 10, 11, and 12**

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

[](#requirements)

- PHP 8.2+
- Laravel 10.x, 11.x, or 12.x

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

[](#installation)

```
composer require emir/laravel-webartisan --dev
```

The package uses **Laravel's auto-discovery**, so the service provider is registered automatically.

Run the install command to publish config and assets:

```
php artisan webartisan:install
```

That's it! Visit `/webartisan` in your browser.

### Manual Publishing

[](#manual-publishing)

If you prefer to publish resources individually:

```
# Config file
php artisan vendor:publish --tag=webartisan-config

# Frontend assets
php artisan vendor:publish --tag=webartisan-assets

# Blade views (for customization)
php artisan vendor:publish --tag=webartisan-views
```

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

[](#configuration)

After publishing, the config file is located at `config/webartisan.php`:

```
return [
    // Master switch
    'enabled' => env('WEBARTISAN_ENABLED', true),

    // Only available in these environments
    'enabled_environments' => ['local'],

    // URL prefix (accessible at /webartisan)
    'route_prefix' => env('WEBARTISAN_PREFIX', 'webartisan'),

    // Restrict to a specific domain
    'domain' => env('WEBARTISAN_DOMAIN', null),

    // Route middleware
    'middleware' => ['web'],

    // Gate-based authorization (see Security section)
    'gate' => null,

    // Only allow these commands (empty = all except blocked)
    'allowed_commands' => [],

    // Always block these commands
    'blocked_commands' => [
        'down', 'up', 'env', 'serve', 'tinker',
        'key:generate', 'migrate:fresh', 'migrate:reset',
        'db:wipe', 'db:seed', ...
    ],

    // Terminal theme: 'dark', 'light', 'monokai', 'dracula'
    'theme' => env('WEBARTISAN_THEME', 'dark'),
];
```

Usage
-----

[](#usage)

### Terminal Commands

[](#terminal-commands)

CommandDescription`help`Show available terminal commands`list`List all artisan commands with descriptions`clear`Clear the terminal screen`exit` / `quit`Leave webartisanType any Artisan command directly:

```
❯ route:list
❯ migrate:status
❯ make:model Post --migration --factory
❯ config:show database

```

### Keyboard Shortcuts

[](#keyboard-shortcuts)

ShortcutAction`Tab`Autocomplete command names`Up` / `Down`Navigate command history`Ctrl+L`Clear terminalThemes
------

[](#themes)

Set the theme in your config or `.env` file:

```
WEBARTISAN_THEME=dracula
```

Available themes: `dark` (default), `light`, `monokai`, `dracula`.

Security
--------

[](#security)

Webartisan is designed for **development use only**. Multiple security layers are built in:

### 1. Environment Restriction (Default)

[](#1-environment-restriction-default)

By default, Webartisan is only available in the `local` environment:

```
'enabled_environments' => ['local'],
```

### 2. Master Switch

[](#2-master-switch)

Disable completely via environment variable:

```
WEBARTISAN_ENABLED=false
```

### 3. Gate Authorization

[](#3-gate-authorization)

For fine-grained access control, define a gate in your `AppServiceProvider`:

```
use Illuminate\Support\Facades\Gate;

Gate::define('viewWebartisan', function ($user) {
    return in_array($user->email, [
        'admin@example.com',
    ]);
});
```

Then enable it in the config:

```
'gate' => 'viewWebartisan',
'middleware' => ['web', 'auth'], // Add auth middleware
```

### 4. Custom Authorization

[](#4-custom-authorization)

Use the `Webartisan::auth()` method in your `AppServiceProvider`:

```
use Emir\Webartisan\Webartisan;

Webartisan::auth(function ($request) {
    return $request->user()?->isAdmin() ?? false;
});
```

### 5. Command Allow/Block Lists

[](#5-command-allowblock-lists)

```
// Only allow specific commands
'allowed_commands' => ['route:list', 'migrate:status', 'queue:*'],

// Block dangerous commands (supports wildcards)
'blocked_commands' => ['db:*', 'migrate:fresh', 'tinker'],
```

### 6. Domain Restriction

[](#6-domain-restriction)

Restrict to an internal domain:

```
WEBARTISAN_DOMAIN=admin.myapp.test
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

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

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the project
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

Credits
-------

[](#credits)

- [Emir Karşıyakalı](https://github.com/emir)
- Inspired by [samdark/yii2-webshell](https://github.com/samdark/yii2-webshell)
- Built with [jQuery Terminal](https://terminal.jcubic.pl/)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

###  Health Score

53

—

FairBetter than 97% of packages

Maintenance82

Actively maintained with recent releases

Popularity26

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity78

Established project with proven stability

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

Total

2

Last Release

92d ago

Major Versions

1.0.0 → v2.0.02026-02-16

PHP version history (2 changes)1.0.0PHP &gt;=5.4.0

v2.0.0PHP ^8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1097170?v=4)[Emir Karşıyakalı](/maintainers/emir)[@emir](https://github.com/emir)

---

Top Contributors

[![emir](https://avatars.githubusercontent.com/u/1097170?v=4)](https://github.com/emir "emir (6 commits)")

---

Tags

artisanartisan-commandsbrowserconsoledeveloper-toolsdevtoolslaravellaravel-artisanlaravel-packagephpterminalweb-terminalconsoleterminalbrowserlaravelDevtoolsartisanwebartisan

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/emir-laravel-webartisan/health.svg)

```
[![Health](https://phpackages.com/badges/emir-laravel-webartisan/health.svg)](https://phpackages.com/packages/emir-laravel-webartisan)
```

###  Alternatives

[recca0120/terminal

run laravel artisan command in web application

878410.9k2](/packages/recca0120-terminal)[nunomaduro/laravel-console-menu

Laravel Console Menu is an output method for your Laravel/Laravel Zero commands.

815412.0k48](/packages/nunomaduro-laravel-console-menu)[nunomaduro/laravel-console-task

Laravel Console Task is a output method for your Laravel/Laravel Zero commands.

2582.1M11](/packages/nunomaduro-laravel-console-task)[nunomaduro/laravel-console-summary

A Beautiful Laravel Console Summary for your Laravel/Laravel Zero commands.

662.0M3](/packages/nunomaduro-laravel-console-summary)[nunomaduro/laravel-console-dusk

Laravel Console Dusk allows the usage of Laravel Dusk in Laravel/Laravel Zero artisan commands.

16255.4k7](/packages/nunomaduro-laravel-console-dusk)[rahul900day/laravel-console-spinner

Laravel Console Spinner is a spinner output for Laravel command line.

76125.4k1](/packages/rahul900day-laravel-console-spinner)

PHPackages © 2026

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