Local development environment for Windows, macOS, and Linux that manages Apache, PHP, MySQL/MariaDB, SSL, mail catching, Redis, Node, Cloudflare tunnels and DNS for
.local/.testdomains. An alternative to MAMP PRO, XAMPP, WampServer and Laragon.
- π₯οΈ Cross-platform - Windows (NSIS + portable), macOS (DMG + ZIP, Apple Silicon), Linux (AppImage)
- π§© Plugin daemon - Apache, PHP, MySQL, MariaDB, SSL (mkcert), Mailpit, Redis, Node, Caddy, Cloudflare and Hosts editor loaded as isolated
.NET 9plugin DLLs - π Per-site PHP - each site can pin its own PHP version, INI overrides (memory, timeouts, upload limits, Xdebug, OPcache, extensions) and Apache Fcgid timeouts
- π MAMP PRO migration - importer reads MAMP PRO's SQLite database, recreates vhosts, copies SSL certs and migrates databases (verified on 17 sites + 66 databases)
- ποΈ Three interfaces - Electron GUI,
wdcCLI and REST API with Bearer-token auth - π€ MCP server - 67 tools for Claude Code or any MCP client: sites, databases, services, SSL, plugins, backups, Cloudflare tunnels, deployments. Every tool call is logged and shown in the GUI's MCP β Activity tab (24h timeline, top tools, p50/p95/p99 latency, CSV export). See
src/daemon/NKS.WebDevConsole.Daemon/Mcp/README.mdfor the operator guide. - βοΈ Cloudflare - tunnels, DNS records and routes via
cloudflared - π Elevated on Windows - one UAC prompt at launch, no per-operation prompts for hosts-file edits
- π¦ Self-contained daemon - .NET 9 published with
--self-contained, no separate runtime install needed - π§ͺ Type checking - strict TypeScript on the frontend,
nullable enableon the backend, 595+ xUnit tests
- Windows 10 / 11 (x64), administrator rights for hosts-file editing
- macOS 14+ (Apple Silicon, arm64)
- Linux: any glibc 2.28+ distribution (Ubuntu 22.04+, Debian 12+, Fedora 38+)
| Tool | Version | Notes |
|---|---|---|
| .NET SDK | 9.0+ | macOS: brew install dotnet@9 |
| Node.js | 20 LTS+ | Tested with 22 (CI) and 23.x |
| Python | 3.11+ | Optional, only for running the catalog-api locally |
| Git | any |
Download the latest installer from GitHub Releases:
- Windows:
NKS.WebDev.Console-<version>-setup-x64.exe(NSIS) or*-portable-x64.exe - macOS:
NKS.WebDev.Console-<version>-mac-arm64.dmgor*.zip - Linux:
NKS.WebDev.Console-<version>-linux-x86_64.AppImage
git clone https://github.com/nks-hub/webdev-console.git
cd webdev-console
# 1. Build the .NET solution (daemon + plugin SDK + tests)
dotnet build WebDevConsole.sln -c Release
# 2. Install frontend dependencies (~150 MB Electron binary on first run)
cd src/frontend
npm install
# 3. Build the platform installer
npm run dist # Windows (NSIS + portable)
npm run dist:mac # macOS (DMG + ZIP)
npm run dist:linux # Linux (AppImage)Output lands in src/frontend/release/.
Start the daemon + Electron in development:
# Terminal 1 β daemon
dotnet run --project src/daemon/NKS.WebDevConsole.Daemon
# Terminal 2 β Electron with hot-reload
cd src/frontend && npm run devOn Windows, run.cmd from the repo root does both (supports --no-build, --daemon-only, --frontend-only).
Create your first site:
wdc site create --name my-app --php 8.3 --domain my-app.local --ssl
wdc service start apacheOpen https://my-app.local/. The site is served from ~/wdc/sites/my-app/ with PHP 8.3 through Apache + mod_fcgid and a mkcert-signed SSL certificate.
The wdc binary (System.CommandLine) is published alongside the daemon:
wdc site list # list all sites
wdc site create --name my-app --php 8.3 \
--domain my-app.local --ssl # create + provision SSL
wdc service start apache
wdc database list
wdc binaries catalog # available PHP / Apache / MySQL versions
wdc doctor # 13 health checks
wdc --json site list # machine-readable output for scriptsAll write commands have HttpRequestException handling; list commands emit TSV when piped.
The daemon writes its listening port + fresh Bearer token at startup:
| OS | Port file |
|---|---|
| Windows | %TEMP%\nks-wdc-daemon.port |
| macOS | $TMPDIR/nks-wdc-daemon.port |
| Linux | /tmp/nks-wdc-daemon.port |
Format: line 1 = port (e.g. 5000), line 2 = base64 token. The token rotates on every restart.
PORT=$(sed -n 1p $TMPDIR/nks-wdc-daemon.port)
TOKEN=$(sed -n 2p $TMPDIR/nks-wdc-daemon.port)
curl -H "Authorization: Bearer $TOKEN" http://localhost:$PORT/api/status
# β {"status":"running","version":"0.2.3","plugins":13,"uptime":215437}OpenAPI spec is exposed at /openapi/v1.json.
cd services/mcp-server
npm install && npm run build
claude mcp add --scope user nks-wdc node "$(pwd)/dist/index.js"| Module | Tools | Examples |
|---|---|---|
| sites | 6 | list, get, create, delete, get_metrics, get_access_log |
| services | 3 | list, start, stop |
| system | 3 | status, system_info, recent_activity |
| databases | 6 | list, create, drop, tables, query, execute |
| ssl | 4 | list_certs, install_ca, generate_cert, revoke_cert |
| php | 2 | set_default, toggle_extension |
| binaries | 5 | list_catalog, list_installed, install, uninstall, refresh |
| plugins | 5 | list, get, enable, disable, info |
| backup | 3 | create, list, restore |
| settings | 2 | get, update |
| cloudflare | 9 | tunnels, dns, routes, β¦ |
Destructive tools (drop_database, delete_site, revoke_cert, restore_backup, execute) require confirm: "YES".
wdc migrate mamp --port 3308 # dry-run
wdc migrate mamp --port 3308 --apply # migrateReads %APPDATA%\Appsolute\MAMPPRO\userdb\mamp.db and rebuilds sites + databases in WDC.
webdev-console/
βββ src/
β βββ daemon/ # C# .NET 9
β β βββ NKS.WebDevConsole.Daemon # ASP.NET Core REST service
β β βββ NKS.WebDevConsole.Core # shared services + models
β β βββ NKS.WebDevConsole.Cli # `wdc` CLI (System.CommandLine)
β β βββ NKS.WebDevConsole.Plugin.SDK # plugin contract
β βββ frontend/ # Electron 34 + Vue 3 + Element Plus + Tailwind v4
βββ services/
β βββ catalog-api/ # FastAPI sidecar (binary + version catalog)
β βββ mcp-server/ # TypeScript stdio MCP server (67 tools, Phase 8 audit log)
βββ tests/ # xUnit tests (Daemon + Core)
βββ scripts/ # build helpers
βββ .github/workflows/ # CI matrix β Windows, macOS, Linux
NKS WebDev Console ships as four co-operating public repositories:
| Repo | Purpose |
|---|---|
nks-hub/webdev-console |
This repo: daemon, CLI, Electron frontend, Plugin SDK |
nks-hub/webdev-console-plugins |
13 official plugins (Apache, PHP, MySQL, β¦) |
nks-hub/webdev-console-binaries |
Versioned runtime binaries (PHP, Apache, Nginx, Caddy, β¦) |
nks-hub/wdc-catalog-api |
FastAPI catalog + config-sync service |
A single v* tag push to this repo triggers Build & Release (Win/macOS/Linux installers), Publish Plugin SDK (GitHub Packages NuGet), Defender Submission and Release Security Scan in parallel.
dotnet test WebDevConsole.sln # 595+ tests (daemon + core)
cd services/catalog-api && pytest # FastAPI sidecar tests
cd services/mcp-server && node e2e-test.mjs # MCP smoke tests (27 assertions)git tag v0.2.3
git push --tagsGitHub Actions builds all three platforms and uploads to Releases. macOS code-signing uses CSC_LINK + CSC_KEY_PASSWORD secrets when present; notarization requires APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID.
| OS | Daemon RID | Output |
|---|---|---|
windows-2022 |
win-x64 |
*-setup-x64.exe (NSIS) + *-portable-x64.exe |
macos-14 |
osx-arm64 |
*-mac-arm64.dmg + *-mac-arm64.zip |
ubuntu-24.04 |
linux-x64 |
*.AppImage |
Contributions are welcome! For major changes, please open an issue first. Keep dotnet test and the frontend build green; CI runs the matrix build for all three platforms.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: description') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π§ Email: dev@nks-hub.cz
- π Bug reports: GitHub Issues
MIT License β see LICENSE for details.
Made with β€οΈ by NKS Hub