Simple password-protected ClawQ web GUI.
- Password-protected web dashboard with persistent auth cookie
- Sidebar navigation for
Repos,Memory, andStatus - Repo sync overview with branch/upstream/dirty indicators
- Repo Hooker with commit detection every 5 seconds and Signal notifications
- Memory Hooker with dedicated Signal target and test-send action
- Per-repo Signal target overrides plus global default target
- Memory save controls: manual
Save(commit+push) and daily autosave at 23:00 - System widgets for cron jobs, resource usage, mapping, STT, and runtime health
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
CLAWQ_PASSWORD="your-password" uvicorn app.main:app --host 0.0.0.0 --port 8080CLAWQ_PASSWORD is required. Open http://localhost:8080 and log in with that value.
Optional hardening for HTTPS deployments:
CLAWQ_COOKIE_SECURE=true
CLAWQ_COOKIE_SECRET="long-random-secret"Optional repository root override:
CLAWQ_REPOS_ROOT="/root/git"
# README in Memory defaults to /root/workspaces/README.md
# Optional override:
# CLAWQ_README_PATH="/root/workspaces/README.md"Hooker notifications are always active.
Repo Hookerwatches all discovered repos and detects new commits byHEADchanges.Memory Hookerwatches the repository that contains the Memory README (/root/workspaces/README.mdby default).- Scan interval is 5 seconds.
- Notifications are delivered through OpenClaw (
openclaw message send --channel signal ...). - Notification texts are Signal-friendly formatted (bold headers, compact diff summary, commit link).
Target routing:
- Default target is the OpenClaw primary Signal contact (
channels.signal.allowFrom[0], fallbackchannels.signal.account). - Repo Hooker supports per-repo overrides in the table dropdown (
Defaultmeans main contact). - Memory Hooker has its own dropdown target.
- Group options in dropdowns include readable group names (derived from OpenClaw session metadata) plus a short group id.
Test buttons:
Testsends a real Signal test notification to the currently selected target.- If a target is empty/invalid in UI state, the backend falls back to the default main contact.
Memory save controls:
- In Memory sync strip,
Savecommits and pushes the memory repository directly. - Autosave mode supports
Nieor1x täglich (23:00). - Daily autosave runs once per day during the 23:00 hour (server local time).
Auth cookie is long-lived (20 years) and effectively permanent unless password/secret changes or logout clears it.
/dashboard (auth required)/api/statusJSON status (auth required)/api/repo-hookerrepo commit watcher snapshot (auth required)/api/memory-hookermemory repo commit watcher snapshot (auth required)/api/notify-targetsget/update Signal notification targets (auth required)/api/notify-targets/repoupdate per-repo target override (auth required)/api/notify-targets/testsend test notification to selected target (auth required)/api/memory-save-configget/set memory save mode (auth required)/api/memory-savecommit+push memory repository now (auth required)/healthbasic liveness/loginlogin form
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
sudo cp deployment/systemd/clawq-webgui.service /etc/systemd/system/clawq-webgui.service
sudo cp deployment/systemd/clawq-webgui.env.example /etc/default/clawq-webgui
sudo nano /etc/default/clawq-webgui
sudo systemctl daemon-reload
sudo systemctl enable --now clawq-webgui
sudo systemctl status clawq-webgui