3D Stage
The Three.js scene now runs directly inside the Next app.
Idle
No current crawler activity and no waiting queue backlog.
Left-drag to orbit, right-drag to pan, scroll or double-click to zoom. Regular polling is poller-driven off shared PostgreSQL state, not backend-triggered every cycle. Redis here is the Celery broker queue used by the poller. Queue items: 0. Worker events: 0. Crawler events: 0.
Legend
What the colors and shapes mean.
Yellow boxes: queue or scheduler items waiting to be worked.
Blue spheres: worker picked up or polling.
Amber spheres: worker retrying.
Red spheres: worker failed before crawler.
Orange diamonds: crawler activity.
Flow
How backend, poller, and crawler fit together, including one-way vs two-way links.
Backend
Two-way flow
PostgreSQL
Two-way: backend reads and writes the main Feedbagel data model in Postgres.
PostgreSQL
Two-way flow
Poller scheduler / worker
Two-way: poller reads due feeds and entries from Postgres, then writes polling/crawl results back. This is the normal background handoff.
Scheduler
One-way flow
Redis queue
Scheduler enqueues Celery jobs into Redis.
Redis queue
One-way flow
Poller worker
Worker pulls jobs out of the queue.
Poller worker
Two-way flow
Crawler service
Two-way: worker sends crawl requests, crawler returns extracted feed/article data.
Crawler service
One-way flow
Backend / DB
Results then get persisted downstream.
Backend does real work too: API routes, admin, feed/search logic, and direct DB writes. It does not just front the poller. Normal recurring polling is poller-driven from shared Postgres state. Backend/admin can still influence that state through flags like force-crawl and poll-now flows.
Camera
Move or jump
Live Activity
polling
No recent activity
Services
Loading remote services...
Queued
Nothing waiting in Redis right now.
Worker
No recent worker task events.
Crawler
No recent crawler events.