WP Admin Workspaces
v0.1.0 · first release

One WordPress.
A different admin for everyone.

WP Admin Workspaces replaces wp-admin with a configurable, React-based admin workspace — driven by a single workspace.json file.

A writer, a developer, a client, and a site manager don't need the same dashboard. Declare which screens exist, how navigation is structured, the branding, and the keyboard shortcuts. Swap the file, swap the experience. Same data, same plugins, same REST API underneath.

Get started View on GitHub WordPress 7.0+, or 6.7+ with the Gutenberg plugin

What it does

The admin, as configuration

Every surface of the admin is declared in JSON and rendered by a design-system-neutral kernel. No forking wp-admin, no rebuilding screens by hand.

Configurable screens & menu

An id-keyed map of screens plus an engine-agnostic menu tree. Add, hide, rename, reorder, or restrict any screen from one file.

Swappable engines

Three engines ship: a flagship sidebar layout, a mobile-first single pane, and a windowed desktop compositor. The renderer is a manifest choice.

Capability-aware

Four-layer capability gating with OR-semantic permissions and trust tiers. Navigation prunes screens a user can't reach — automatically.

Cascade resolver

Six origins (core → engine → plugin → site → role → user) merge like theme.json — declare only the deltas. Per-role and per-user workspaces fall out of the same mechanism.

REST-only, built on WPDS

Every screen reads and writes through the WordPress REST API and renders with the WordPress Design System. Anything the API can't do yet falls back to the native screen in an iframe.

Branding, theming & commands

DTCG token overrides, theme.json-shaped styling, a Cmd/Ctrl+K command palette, and bindable keyboard shortcuts — all declarative.

How it works

Three artifacts, three jobs

Apps and engines ship their own manifests; the install only declares decisions. The runtime reads this shape directly — there's no intermediate build step.

app.json

What an app is

ARIA role, requested platform services, capability floor, config schema, slots, and DataView baseline. Ships with the app's code.

engine.json

What an engine provides

Region templates, chrome modes, slots, the menu renderer, a default region tree, and default styles. Ships with the engine's code.

workspace.json

The install decisions

Which engine, which screens, the menu tree, commands, branding, and token overrides. This is the one file you author.

The whole config

A workspace is a delta

Drop an workspace.json at wp-content/workspace.json. Like theme.json over core's defaults, you declare only what changes — everything else falls through from the baseline.

  • Pick the mobile-first engine with one key.
  • Rename Posts → “Stories” without touching PHP.
  • Gate the screen on a capability; nav prunes the rest.
  • Visit /wp-admin/ — the workspace replaces classic wp-admin at the URL level.
wp-content/workspace.json
{
  "$schema": "…/docs/schemas/workspace.json",
  "version": 3,
  "$wpds": "6.9",
  "name": "writers-room",
  "engine": "core:single-pane",
  "default-screen": "posts",
  "screens": {
    "posts": {
      "label": "Stories",
      "icon": "post",
      "path": "/posts",
      "app": "core:posts",
      "config": { "postType": "post" },
      "permissions": {
        "capabilities": [ "edit_posts" ]
      }
    }
  }
}

Rendering

Bundled engines

The engine is the renderer — the chrome, the layout, the navigation idiom. Choosing one is a single line in the workspace. Engines are pluggable; the kernel itself is design-system-neutral.

EngineIdiom
core:defaultFlagship — dark chrome, expandable tree sidebar, elevated cards.
core:single-paneMobile-first — appbar plus a collapsible navigation drawer.
core:desktopWindowed — compositor, dock, and draggable / resizable window frames.

Shipped workspaces: wp-admin-default (mirrors stock wp-admin), single-pane-demo, and desktop-demo.

Get started

Install in a few minutes

The plugin ships the wp-admin-default baseline. With no workspace.json present, wp-admin stays classic and untouched — the file is both the trigger and the configuration.

On WordPress 6.7–6.9 only: activate the Gutenberg plugin first (it supplies a private-API allowlist those versions lack). WordPress 7.0+ ships it in core — no extra plugin needed.

Install WP Admin Workspaces: upload wp-admin-workspaces.zip via Plugins → Add New → Upload Plugin, or build from source with npm install && npm run build.

Turn the workspace on: copy a starter template to wp-content/workspace.json, e.g. cp workspaces/single-pane-demo.json wp-content/workspace.json — then edit it down to your deltas.

Visit /wp-admin/. Press Cmd/Ctrl + K for the command palette. A Classic wp-admin escape hatch stays in the admin bar.

Make the admin fit the person using it.

Grab the source, copy a starter workspace, and reshape wp-admin with one file.