A Widget Context Protocol (WCP) widget that brings your GitHub repositories into any WCP-compatible dashboard. Browse all your repos with live metadata — language, visibility, last push time — without leaving your dashboard.
Specification: widgetcontextprotocol.com | Part of the Penrith Beacon WCP widget suite.
WCP 2.1.0 certified. Full theme reception, orchestration-aware state, Publish to Web, WCP export.
| Component | Default size | Description |
|---|---|---|
| Repositories | 12x6 | All repos sorted by last push, with metadata badges |
| Settings | 12x6 | Personal Access Token configuration |
| Help | 12x6 | Setup guide, FAQ, reference links |
docker run -d \
--name wcp-widget-github \
-p 3743:3743 \
-v gh-data:/app/data \
-v gh_published:/app/published \
-e CONTAINER_NAME=wcp-widget-github \
--restart unless-stopped \
docker.io/penrithbeacon/wcp-widget-github:latest
services:
github:
image: docker.io/penrithbeacon/wcp-widget-github:latest
container_name: wcp-widget-github
ports:
- "3743:3743"
volumes:
- gh-data:/app/data
- ./published:/app/published
environment:
- CONTAINER_NAME=wcp-widget-github
restart: unless-stopped
volumes:
gh-data:
Create a GitHub Personal Access Token at github.com/settings/tokens
with the repo scope (or public_repo for public repos only). Open the Settings component
and paste it in.
| 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 (for state scoping) |
Wcp-Application-Id | No | Active application identifier (for state scoping) |
| Endpoint | Description |
|---|---|
GET /wcp | Container Directory — WCP two-tier discovery |
GET /widget/wcp | Widget Manifest with runtime publish status |
OPTIONS /wcp | CORS preflight (all widget routes) |
GET /widget/ | Compact widget card (iframe) |
GET /widget/index | Widget Index — lists all controls |
GET /widget/health | Health check with container name |
GET /widget/icon.svg | Widget icon (SVG) |
GET /widget/api/guids | Component UUIDs for orchestration binding |
GET /widget/repos | Repositories component page |
GET /widget/settings | Settings component page |
GET /widget/help | Help component page |
POST /widget/configure | Save Personal Access Token |
GET /widget/api/config-status | Configuration status (token masked, account name) |
GET /widget/api/repos | Repository list (60s cache) |
GET /widget/export.wcp | Self-export as .wcp package |
POST /widget/publish | Accept SPA HTML for Publish to Web |
DELETE /widget/publish | Remove published SPA |
GET / | Serve published SPA (if present) |
| Property | Value |
|---|---|
| WCP Version | 2.1.0 |
| Widget Version | 1.4.0 |
| Render mode | iframe |
| Auth | None (token stored server-side) |
| Default card size | 12x6 |
| Multi-instance | Yes (per Instance-Id) |
| Property | Value |
|---|---|
| Base image | python:3.12-slim |
| Platforms | linux/amd64, linux/arm64 |
| Port | 3743 |
| Framework | Flask |
| Dependencies | Flask, requests |
| Persistent storage | Named volume for per-instance tokens |
| Tag | Description |
|---|---|
latest | Most recent stable release |
1.4.0-wcp2.1.0 | /widget/index directory page, audit compliance |
1.3.0-wcp2.1.0 | /widget/health returns container name |
1.2.0-wcp2.1.0 | WCP 2.1.0 upgrade, orchestration ID context |
1.1.0-wcp2.0.0 | Container block, manifest image source |
1.0.1-wcp1.4.0 | Server UUID, Container Directory, Wcp-Widget-Id |
1.0.0-wcp1.3.1 | Initial release |
Content type
Image
Digest
sha256:545633864…
Size
47.2 MB
Last updated
4 months ago
docker pull penrithbeacon/wcp-widget-github