WYSIWYG markdown file editor with folder browser, multi-instance configuration, Publish to Web, and companion host agent for native filesystem access.
Specification: widgetcontextprotocol.com | Part of the Penrith Beacon WCP widget suite.
WCP 2.1.0 certified. Full theme reception (both URL forms), orchestration-aware state, Publish to Web (WCP-compliant SPA), WCP export.
| Component | Default size | Description |
|---|---|---|
| Markdown Explorer | 12×12 | Main widget — WYSIWYG editor with resizable file tree sidebar |
| Settings | 12×12 | Configure root folder, theme (built-ins + WCPT import), companion agent status |
| About | 12×12 | OCI image reference, version, publisher, agent installer download |
docker run -d \
--name wcp-widget-markdown-editor \
-p 127.0.0.1:3748:3748 \
-v markdown_workspace:/workspace \
-e CONTAINER_NAME=wcp-widget-markdown-editor \
-e WIDGET_PORT=3748 \
--add-host host.docker.internal:host-gateway \
--restart unless-stopped \
docker.io/penrithbeacon/wcp-widget-markdown-editor:latest
services:
wcp-widget-markdown-editor:
image: docker.io/penrithbeacon/wcp-widget-markdown-editor:latest
container_name: wcp-widget-markdown-editor
ports:
- "127.0.0.1:3748:3748"
volumes:
- markdown_workspace:/workspace
environment:
- WIDGET_PORT=3748
- CONTAINER_NAME=wcp-widget-markdown-editor
- AGENT_PORT=3749
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
markdown_workspace:
driver: local
The widget UI loads, but file browsing requires the companion agent. Configure the agent first for full functionality.
The wcp-agent-markdown-editor companion agent provides host filesystem access — browse your local drives from within the widget.
GET /widget/agent/installer) or from GitHub Releases.pkg installer — the agent starts automatically at login on 127.0.0.1:3749host.docker.internal:3749The installer includes Uninstall WCP Markdown Editor Agent.app in /Applications/ for clean removal.
| Header | Required | Description |
|---|---|---|
Wcp-Instance-Id | Yes | Unique card instance identifier |
Wcp-Dashboard-Id | Yes | Dashboard installation identifier |
Wcp-Version | Yes | WCP protocol version of the requesting dashboard |
Wcp-Widget-Id | Yes | Widget identifier within the dashboard |
Wcp-Orchestration-Id | No | Active orchestration identifier |
Wcp-Application-Id | No | Active application identifier |
| Endpoint | Description |
|---|---|
GET /wcp | Container Directory — WCP two-tier discovery |
GET /widget/wcp | Widget Manifest with runtime publish status |
GET /widget/ | Markdown Explorer component |
GET /widget/settings/ | Settings component |
GET /widget/about/ | About component |
GET /widget/index | Widget Index |
GET /widget/health | Health check |
GET /widget/icon.svg | Widget icon |
GET /widget/api/guids | Component UUIDs |
GET /widget/logs | WCP logs protocol |
POST /widget/configure | Save per-instance config: { root, theme } |
GET /widget/api/root/validate | Validate root path + agent reachability |
GET /widget/api/files/list | List files/dirs via agent |
GET /widget/api/files/read | Read file via agent |
POST /widget/api/files/save | Write file via agent |
POST /widget/api/files/mkdir | Create directory via agent |
POST /widget/api/files/rename | Rename via agent: { old, new } |
POST /widget/api/files/delete | Delete via agent |
GET /widget/api/agent/status | Agent reachability check |
GET /widget/api/agent/browse | Proxy: agent directory listing |
GET /widget/api/agent/drives | Proxy: agent volumes/drives |
GET /widget/api/themes | Active theme + custom theme list |
POST /widget/api/themes/import | Import themes from .wcpt |
DELETE /widget/api/themes/<id> | Delete a custom theme |
POST /widget/publish | Publish document as WCP-compliant SPA |
DELETE /widget/publish | Remove published SPA |
GET /widget/api/publish/status | Published SPA state + metadata |
GET /widget/export.wcp | Download as .wcp package |
GET /widget/agent/installer | Companion agent .pkg installer |
GET / | Serves published SPA |
| Property | Value |
|---|---|
| WCP Version | 2.1.0 |
| Widget Version | 1.1.4 |
| Render mode | iframe |
| Auth | None |
| Default card size | 12×12 |
| Multi-instance | Yes |
| Property | Value |
|---|---|
| Base image | python:3.12-slim |
| Platforms | linux/amd64, linux/arm64 |
| Port | 3748 |
| Framework | Flask 3.0.3 + Flask-CORS 4.0.1 |
| Persistent storage | markdown_workspace volume at /workspace |
| Tag | Description |
|---|---|
latest | Most recent stable release |
1.1.4 | Path tooltip on truncated path label; Copy Path button with 3-second success state |
1.1.3 | Filename shown in Explorer path display; viewer clears on folder nav and Up |
1.1.2 | Search bar persisted across file refresh |
beta | Current beta release |
1.1.0-beta | Beta — theme card, WCP URL compliance, WCP-compliant SPA, GFM tables, agent-only model |
1.1.0-wcp2.1.0 | Pinned build — same code as 1.1.0-beta |
1.0.0-wcp2.1.0 | Initial release |
title attribute kept in sync on every folder/file navigation).wcpt files via checkbox modal with Select All / Deselect Allwcp:theme-apply to window.top, updating the entire dashboard (podium, stave tabs, all widgets)?com.doc.widgetcontextprotocol=<base64> (query string) and #wcp-theme=<base64> (hash) formsPOST /widget/publish generates HTML with baked-in active theme CSS vars and inline URL reception snippet; full var(--wcp-color-*) typographyutf-8-sig with latin-1 fallback, eliminating � replacement characters in files with non-ASCII contentUninstall WCP Markdown Editor Agent.app bundled in agent .pkg for clean one-click removal.md path, published timestamp, View and Unpublish actions/wcp now includes type: "directory"; /widget/wcp now includes uuid and container fieldswindow.confirm() with a custom inline modal; confirm() is silently blocked in cross-origin iframes by Chromium/Electron 35; delete button now works correctlyos.scandir() + threaded=True, resolves blank sidecar caused by SMB cold-start latency exceeding browse timeout; (c) installer now shows a welcome screen with product name and version; (d) preinstall uses launchctl bootout + pkill to reliably stop any running agent before upgradeContent type
Image
Digest
sha256:4c77baa09…
Size
59.6 MB
Last updated
3 months ago
docker pull penrithbeacon/wcp-widget-markdown-editor