PHPackages                             rudel/rudel - 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. rudel/rudel

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

rudel/rudel
===========

Request-selected WordPress overlay environments for sandboxes

v0.10.0(2mo ago)0611GPL-2.0-or-laterPHPPHP ^8.2CI passing

Since Mar 9Pushed 2mo agoCompare

[ Source](https://github.com/inline0/rudel)[ Packagist](https://packagist.org/packages/rudel/rudel)[ RSS](/packages/rudel-rudel/feed)WikiDiscussions main Synced 4w ago

READMEChangelog (10)Dependencies (16)Versions (40)Used By (0)

 [    ![Rudel](./.github/logo-light.svg)  ](https://rudel.dev)

 Request-selected WordPress overlay environments for sandboxes.

 [![CI](https://github.com/inline0/rudel/actions/workflows/ci.yml/badge.svg)](https://github.com/inline0/rudel/actions/workflows/ci.yml) [![license](https://camo.githubusercontent.com/fc7ef0bd4e7daa962ca0072e865f9970ee5441edb26f5fca76d6e7f0d3805a70/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d626c75652e737667)](https://github.com/inline0/rudel/blob/main/LICENSE)

---

What is Rudel?
--------------

[](#what-is-rudel)

Rudel is a WordPress plugin for running disposable overlay sandboxes inside one normal WordPress installation.

A sandbox is selected per request with a trusted header, Rudel cookie, or CLI environment variable. Once selected, Rudel switches WordPress to that sandbox's cloned database tables and copied active theme. Host WordPress core, plugins, uploads, and users remain shared by default.

Rudel does not require multisite. It does not use SQLite. Runtime metadata is stored only in host WordPress MySQL tables.

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

[](#requirements)

- PHP 8.2+
- WordPress 6.4+
- MySQL/MariaDB through the normal WordPress database connection
- write access to `wp-config.php` during initial runtime bootstrap installation

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

[](#quick-start)

```
composer require rudel/rudel
wp plugin activate rudel
wp rudel status
```

Create a sandbox:

```
wp rudel create --name=alpha --theme=twentytwentyfour
```

Run WP-CLI against a sandbox:

```
RUDEL_ENVIRONMENT=alpha-1234 wp option get siteurl
```

Route an HTTP request to a sandbox:

```
curl -H 'X-Rudel-Environment: alpha-1234' http://localhost:8000/
```

Runtime Model
-------------

[](#runtime-model)

Every Rudel environment is a sandbox overlay:

- Each sandbox has its own WordPress table prefix, for example `wp_a4nmv7_`.
- Each sandbox gets a copied active theme under `wp-content/rudel-environments/{id}/themes/{theme}`.
- Child themes keep their parent template relationship; Rudel copies the child and parent theme directories when the selected active theme is a child theme.
- Plugins and uploads are intentionally shared from the host WordPress installation.
- Users are intentionally shared for now through the normal WordPress users tables.
- Request selection controls whether WordPress uses host state or one sandbox's state.

The selected sandbox does not replace `WP_CONTENT_DIR`. Rudel overrides the active theme root for the selected theme and switches the WordPress table prefix before core finishes booting.

Runtime State
-------------

[](#runtime-state)

Rudel stores operational metadata in WordPress tables:

- `wp_rudel_environments`
- `wp_rudel_worktrees`

Those tables are the source of truth for sandbox identity, worktrees, lifecycle policy, snapshots, and cleanup metadata.

Sandbox site data lives in cloned WordPress tables using the sandbox prefix. Rudel metadata tables always live in the host WordPress database. There is no runtime JSON config and no per-sandbox SQLite database.

WP-CLI Surface
--------------

[](#wp-cli-surface)

- `wp rudel create`
- `wp rudel list`
- `wp rudel info`
- `wp rudel update`
- `wp rudel destroy`
- `wp rudel status`
- `wp rudel cleanup`
- `wp rudel logs`
- `wp rudel snapshot`
- `wp rudel restore`
- `wp rudel template save`
- `wp rudel template list`
- `wp rudel template delete`
- `wp rudel push`

Standalone Core Access
----------------------

[](#standalone-core-access)

Rudel's registry can be inspected outside a WordPress request with a direct MySQL connection. Standalone mode is for metadata and registry access: list environments, inspect worktrees, and read lifecycle state.

Operations that clone WordPress tables, copy themes, install the bootstrap, or execute live sandbox lifecycle still require WordPress because they depend on the active WordPress database connection and filesystem layout.

Development
-----------

[](#development)

```
composer install
npm install

composer cs
composer stan
composer test

bash tests/e2e/run-all.sh
npm --prefix docs run build
bash tests/run-all.sh
```

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

[](#documentation)

Full documentation lives at [rudel.dev](https://rudel.dev).

License
-------

[](#license)

GPL-2.0-or-later

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance87

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity49

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

Recently: every ~11 days

Total

37

Last Release

65d ago

PHP version history (2 changes)v0.1.0PHP &gt;=8.0

v0.8.0PHP ^8.2

### Community

Maintainers

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

---

Top Contributors

[![dnnsjsk](https://avatars.githubusercontent.com/u/73965001?v=4)](https://github.com/dnnsjsk "dnnsjsk (239 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/rudel-rudel/health.svg)

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

###  Alternatives

[phenx/php-font-lib

A library to read, parse, export and make subsets of different types of font files.

1.8k162.7M55](/packages/phenx-php-font-lib)

PHPackages © 2026

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