HoffDesk Master Roadmap
Last Updated: 2026-04-25 13:59 UTC
Owner: Matt (Director)
Agents: Wadsworth π | Socrates π§ | Daedalus π¨
π― Active Projects Overview
| Project | Status | Lead | Priority |
|---|---|---|---|
| HoffDesk Web Platform | π‘ In Progress | All | P0 |
| ββ Blog Module | β Phase 3 Complete | Socrates/Daedalus | - |
| ββ Family Dashboard | π‘ Phase 1.5 In Progress | Daedalus/Socrates | - |
| ββ Starlette Host Routing | π‘ Deployed (needs restart) | Socrates | - |
| Project Icarus | π’ Staging Setup Complete | Socrates/Daedalus | P1 |
| Stock Market Daily Brief | βΈοΈ Blocked (awaiting input) | Wadsworth β Socrates | P2 |
| Structured Logging | π’ Phase 1-2 Active | Wadsworth | P3 |
| Appliance Productization | π‘ Icarus active | Future | P4 |
β COMPLETED β Last 30 Days
Infrastructure & Security
- β
Cloudflare Tunnel configured (
*.hoffdesk.comβ Beelink) - β Radicale CalDAV server (port 5232, Tailscale-bound)
- β Session-based auth (cookies for humans, Bearer for machines)
- β Role-based access (admin vs family)
- β UFW firewall (Tailscale-only SSH)
- β Backup strategy (daily 7 AM β Gaming PC via Tailscale)
- β Auth circuit breaker (3 failures β alert + silence)
Blog Module (Phase 1-3 Complete)
- β 13 API routes + 36 tests passing
- β 7 Jinja2 templates + CSS (Daedalus)
- β Content pipeline v2 (Magic Wand + Struggle)
- β Admin panel with session auth
- β RSS, sitemap, image upload
- β
Deployed to
notes.hoffdesk.com
Dashboard (Phase 1)
- β Dashboard HTML/CSS (Daedalus)
- β Jinja2 conversion (base.html.j2 + index.html.j2)
- β Login page for Aundrea
- β
/family/events/removedendpoint (Bearer token) - β Recently removed events widget
Domain Architecture
- β
notes.hoffdesk.comβ blog (port 8000) - β
family.hoffdesk.comβ dashboard (port 8000 via Host routing) - β
api.hoffdesk.comβ JSON API - β
cal.hoffdesk.comβ Radicale - β
hook.hoffdesk.comβ webhooks - β Starlette Host-based routing code (main_v2.py)
- β Cloudflare config updated (single port)
Agent Configuration
- β Multi-model architecture (Wadsworth/Socrates/Daedalus)
- β
Daedalus model:
minimax-m2.7:cloudβdeepseek-v4:cloud(just updated) - β
Socrates model:
kimi-k2.6:cloud - β Inter-agent protocol (sessions_send/spawn, shared/ directory)
Automation
- β Email pipeline v2 (smart classification)
- β Email Worker v3 deployed (Cloudflare Email Routing β hook.hoffdesk.com)
- β Conflict detection (calendar overlap scanning)
- β Location cache + Hermes integration (travel time alerts)
- β Heartbeat checks (30-min + daily)
- β
Cron jobs:
heartbeat:check,heartbeat:daily,family:daily-brief
π§ IN PROGRESS β Current Sprint (Apr 24-25)
π΄ CRITICAL: Starlette Host Routing Rollout
Status: Code complete, service NOT switched
| Task | Status | Owner | Blocker |
|---|---|---|---|
main_v2.py with Host() routing |
β Complete | Socrates | - |
hoffdesk.com apex DNS |
β FIXED | Daedalus | - |
| systemd service update | β FIXED | Matt | - |
Import error (Path in auth/router.py) |
β FIXED | Wadsworth | - |
| Service restart & verify | β³ NEEDS RESTART | Matt | sudo access |
Files:
- Code: workspace-socrates/hoffdesk-api/main_v2.py
- Service: /etc/systemd/system/hoffdesk-api.service
- Config: ~/.cloudflared/config.yml
π’ Project Icarus β Staging Environment
Status: Environment initialized, awaiting hard fork
| Component | Status | Details |
|---|---|---|
| Directory structure | β Created | services/icarus/ |
| Staging config | β Created | staging.env with isolated paths |
| Model gate | β Created | 3B restriction enforced |
| Telegram bot | β Created | @IcarusTestBot (t.me/IcarusTestBot) |
| Cloudflare route | β³ Pending | icarus-test.hoffdesk.com β port 8001 |
| Hard fork (copy) | β³ Pending | Socrates to copy from family_assistant/ |
| systemd service | β³ Pending | icarus-staging.service on port 8001 |
Director Mandates:
1. Hard fork only β Copy, do not extract or refactor production code
2. 3B models only on staging β Gaming PC via Tailscale, qwen2.5:3b/llama3.2:3b
3. Route priority β Specific icarus-test.hoffdesk.com before wildcard *.hoffdesk.com
Files:
- Config: services/icarus/staging.env
- README: services/icarus/README.md
- Model gate: services/icarus/model_gate.py
π‘ Dashboard Jinja2 Integration
Status: Templates ready, router needs update
| Task | Status | Owner | Blocker |
|---|---|---|---|
| Jinja2 templates delivered | β Complete | Daedalus | - |
| Dashboard router update | β³ PENDING | Socrates | Starlette routing deployment |
| Template path unification | π Planned | Socrates | After routing live |
Files:
- Templates: shared/project-docs/dashboard/templates/
- Handoff: shared/project-docs/dashboard/JINJA2-HANDOFF.md
π‘ Pipeline Phase 2 Frontend Wiring
Status: Templates exist, no backend routes
| Task | Status | Owner | Blocker |
|---|---|---|---|
| Phase 2 templates (4 files + CSS) | β Delivered | Daedalus | - |
| Backend route integration | β PENDING | Socrates | Host routing stable |
/admin/content/* endpoints |
π Planned | Socrates | - |
π BACKLOG β Prioritized
P1: Stock Market Daily Brief
Status: Spec complete, awaiting Director input
Owner: Wadsworth (spec) β Socrates (implementation)
| Task | Status | Blocker |
|---|---|---|
| Backend spec (yfinance + pandas-ta + phi4:14b) | β Complete | - |
| Frontend spec (Tailscale-only dark dashboard) | β Complete | - |
| Owned tickers + cost basis | βΈοΈ NEEDS INPUT | Matt |
| Watchlist tickers | βΈοΈ NEEDS INPUT | Matt |
| Delivery time preference | βΈοΈ NEEDS INPUT | Matt |
| Finnhub API key decision | βΈοΈ NEEDS INPUT | Matt |
| Implementation | π Not started | Above inputs |
Files:
- Backend: shared/api-specs/stock-brief/SPEC.md
- Frontend: shared/design-tokens/stock-brief/UX-SPEC.md
P2: Family Assistant v1.5
Status: Scoped, awaiting Phase 1 completion
Owner: Daedalus (UI) + Socrates (API)
| Feature | Status | Notes |
|---|---|---|
| Week View | π Planned | - |
| Conflict Panel | π Planned | - |
| Undo Toast | π Planned | - |
| Digest Card | π Planned | - |
| Smart scheduling suggestions | π Future | AI-assisted |
Files:
- Scope: shared/project-docs/family-assistant/v1.5/SCOPE.md
P3: Structured Logging
Status: Phase 1-2 active, Phase 3 deferred
Owner: Wadsworth
| Phase | Status | Description |
|---|---|---|
| Phase 1 | β Complete | JSON frontmatter format defined |
| Phase 2 | β Complete | Daily logs using structured format |
| Phase 3 | βΈοΈ Deferred | log_activity() helper, query CLI, duration analytics |
Trigger: After 7 days of usage or when query pain becomes acute.
Files:
- Spec: memory/LOGGING.md
P4: Blog Phase 4+ (Future)
- π Image generation pipeline (ComfyUI on Gaming PC)
- π HTMX dynamic loading for long post lists
- π Full-text search (FTS5 promotion)
- π Newsletter subscription flow
P5: Security & Maintenance
- π Weekly security audit (cron:
heartbeat:dailyMondays) - π OpenClaw version checks
- π Disk usage monitoring (currently 11%)
π KNOWN ISSUES & BLOCKERS
| Issue | Severity | Status | Notes |
|---|---|---|---|
| Service restart after import fix | π‘ Low | β³ PENDING | sudo systemctl restart hoffdesk-api needed |
| Socrates quarantine loop | π‘ Medium | β CLEARED | Cleared 2026-04-24, monitoring |
| Compaction Ghost Bug | π‘ Medium | Quarantined | Upstream OpenClaw issue β use @mentions in group chat |
| Google service account auth | π‘ Medium | BLOCKED | invalid_grant: account not found β needs Cloud Console check |
| Template fragmentation | π’ Low | Acknowledged | Dashboard vs blog templates in different dirs |
π KEY DOCUMENTS INDEX
Architecture & Planning
shared/project-docs/DOMAIN-ARCHITECTURE.mdβ Domain routing (single source of truth)shared/project-docs/sprint-brief-2026-04-24.mdβ Current sprintshared/project-docs/hoffdesk-web-project.mdβ Master project plan
Family Assistant (Appliance-Ready)
shared/project-docs/family-assistant/v1.5/SCOPE.mdβ v1.5 features (Undo, Conflicts, etc.)shared/project-docs/family-assistant-product-roadmap.mdβ Appliance productization proposalworkspace-daedalus/review/hoffdesk-agents-review.mdβ Full codebase reviewworkspace-daedalus/review/dha-and-family-review.mdβ DHA + Family review
Handoffs & Coordination
shared/project-docs/dashboard/JINJA2-HANDOFF.mdβ Dashboard β Socratesshared/project-docs/auth-handoff-daedalus.mdβ Auth migration notesworkspace-socrates/research/subdomain-routing-implementation.mdβ Starlette routing plan
Agent Status
workspace-socrates/QUARANTINE-2026-04-23.mdβ Socrates status (CLEARED)~/.openclaw/openclaw.jsonβ Agent configuration
π Appliance Architecture Principles
Direction: Build core product now, structure for future appliance deployment
| Principle | Current (Cloud) | Future (Appliance) | Status |
|---|---|---|---|
| LLM | Ollama Pro cloud + Gaming PC | Local 3B models (M4) | Configurable |
| Data | ~/.family_assistant/ |
DATA_DIR env var |
π§ Needed |
| Embeddings | nomic-embed-text on Gaming PC |
Same, localhost default | π§ Needed |
| IMAP | Primary | Primary (webhook optional) | π Planned |
| Radicale | Manual config | Bundled zero-setup | π Planned |
| Multi-tenancy | Single-family | Single-tenant by box | β Aligns |
| Auth | Session cookies | LAN-local / passwordless | β Aligns |
Refactoring Queue (Appliance-Ready)
| Task | Complexity | When |
|---|---|---|
| Remove Cloudflare webhook dependency | Medium | v1.5 |
| Default OLLAMA_EMBED_URL to localhost | Low | v1.5 |
| Add DATA_DIR env var | Low | v1.5 |
| Ollama model auto-download | Medium | Appliance phase |
| Bundle Radicale config | Low | Appliance phase |
Fix appointment_retry.txt |
Low | v1.5 |
| Refactor pipeline duplication | Medium | v1.5 |
Remove hermes.py dual paths |
Low | v1.5 |
π― NEXT ACTIONS (Priority Order)
Immediate (Today)
- [Matt] Restart
hoffdesk-api.service(sudo systemctl restart hoffdesk-api) - [Wadsworth/Matt] Verify endpoints after restart
This Week
- [Socrates] Wire dashboard Jinja2 templates to router
- [Socrates] Wire pipeline Phase 2 templates to backend routes
- [Socrates] Start appliance-ready refactors (DATA_DIR, localhost defaults)
- [Wadsworth] Stock brief β await Director inputs
Next Sprint
- [Daedalus] Family Assistant v1.5 UI (Undo, Conflicts) β appliance-ready tokens
- [Socrates]
/api/todayaggregate endpoint for dashboard - [Socrates] Remove webhook dependency, fix pipeline duplication
π Agent Workload
| Agent | Current Task | Queue | Status |
|---|---|---|---|
| Wadsworth π | DNS fix + coordination | Stock brief, logging Phase 3 | β Available |
| Socrates π§ | Host routing deployment | Dashboard wiring, pipeline wiring | β Cleared, ready |
| Daedalus π¨ | Stand by for URL audit | Family Assistant v1.5, Stock brief UI | β Ready (deepseek-v4:cloud active) |
This document is the single source of truth. Update it when tasks complete or priorities shift.