Skip to content

feat: Worker Registration System - #7

Merged
davidminin merged 2 commits into
mainfrom
feat/worker-registration
Apr 19, 2026
Merged

feat: Worker Registration System#7
davidminin merged 2 commits into
mainfrom
feat/worker-registration

Conversation

@davidminin

Copy link
Copy Markdown
Owner

Worker Registration System 🖥️

ClickUp task: 86e0yp09t

Allow local machines to register as workers for n8n task dispatch. Workers connect to the portal, send heartbeats, and receive tasks via HTTP.

What's included

Portal (6 files)

  • lib/workers.ts — In-memory worker registry with heartbeat tracking (60s timeout), LRU-based task dispatch, API key auth
  • api/workers/route.tsGET (list workers + summary) / POST (register or dispatch task)
  • api/workers/[id]/route.tsGET / PATCH (heartbeat, status update) / DELETE (remove)
  • (dashboard)/workers/page.tsx — Live worker dashboard with 10s auto-refresh, status cards (🟢 idle / 🟡 busy / 🔴 offline), capabilities badges, quick-start guide
  • Updated Sidebar.tsx — Workers 🖥️ nav item
  • Updated config.tsworkerApiKey from env

Standalone Worker Agent (4 files)

  • worker/src/index.ts — Node.js agent: auto-register with portal, 30s heartbeat loop, HTTP server on :9800 for task dispatch, graceful shutdown with auto-deregister
  • worker/package.json@teamflow/worker with tsx
  • worker/tsconfig.json — ES2022, NodeNext
  • worker/.env.example — Configuration reference

Architecture

n8n workflow
  → POST /api/workers { action: "dispatch", task: {...} }
  → Portal picks least-recently-used idle worker
  → POST worker:9800/tasks { taskId, type, payload }
  → Worker executes + reports back via PATCH /api/workers/:id

How to test

# 1. Set WORKER_API_KEY in portal .env
# 2. Start portal
cd apps/portal && npm run dev

# 3. In another terminal, start worker
cd worker && PORTAL_URL=http://localhost:3001 WORKER_API_KEY=secret npx tsx src/index.ts

# 4. Check /workers page — worker should appear as 🟢 idle

Next up

  • n8n task-dispatch workflow template (follow-up commit)
  • Slack Bot Integration (backlog)

- Add in-memory worker registry with heartbeat tracking
- Add POST/GET /api/workers (register + list + dispatch)
- Add GET/PATCH/DELETE /api/workers/[id] (status, heartbeat, remove)
- Add /workers portal page with live status, auto-refresh
- Add standalone worker agent (worker/src/index.ts)
- Add Workers nav item to sidebar
- API key auth between portal and workers
@davidminin
davidminin merged commit 2cbf257 into main Apr 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant