Documentation Index
Fetch the complete documentation index at: https://mintlify.com/bio-xyz/BioAgents/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Queue Dashboard provides a web UI for monitoring and managing BullMQ job queues. Built with Bull Board, it offers real-time insights into job processing.Access
URL:https://api.bioagents.ai/admin/queues
Authentication: HTTP Basic Auth
- Username: Set via
ADMIN_USERNAME(default:admin) - Password: Set via
ADMIN_PASSWORD(required in production)
Features
Queue Monitoring
- Real-time status: View active, waiting, completed, and failed jobs
- Job counts: See queue depths and processing rates
- Performance metrics: Monitor job processing times
- Queue health: Check for stalled or stuck jobs
Monitored Queues
- chat - Standard chat requests
- deep-research - Deep research jobs
- paper-generation - LaTeX paper generation
- file-process - File upload processing (if enabled)
Job Management
- Inspect jobs: View job data, results, and error logs
- Retry failed jobs: Manually retry jobs that failed
- Clean queues: Remove old completed/failed jobs
- Pause/Resume: Control queue processing
Setup
Enable Job Queue
In your.env file:
Production Requirements
Using the Dashboard
Access the Dashboard
- Navigate to
https://api.bioagents.ai/admin/queues - Enter admin credentials when prompted
- Select a queue from the dropdown
View Job Details
- Click on any job in the list
- View job data, progress, and results
- Check error logs for failed jobs
- View processing timeline
Retry Failed Jobs
- Navigate to “Failed” tab
- Select a failed job
- Click “Retry” button
- Job moves to “Waiting” queue
Clean Old Jobs
- Navigate to queue settings
- Select job states to clean (completed/failed)
- Set retention period
- Click “Clean” button
Queue States
Job States
| State | Description |
|---|---|
| waiting | Job queued, awaiting processing |
| active | Job currently being processed |
| completed | Job finished successfully |
| failed | Job failed with error |
| delayed | Job scheduled for future processing |
| paused | Queue is paused |
State Transitions
Monitoring Examples
Check Queue Health
Healthy Queue:- Active: 2-3 jobs
- Waiting: < 10 jobs
- Failed: 0 jobs
- Completed: Growing steadily
- Active: 0 jobs (worker down)
- Waiting: 100+ jobs (backlog)
- Failed: Many jobs (errors)
- Completed: Not growing (stalled)
Monitor Deep Research
Deep research jobs are long-running (30s - 5min). Expected behavior:- Job appears in “Waiting”
- Moves to “Active” when worker picks it up
- Progress updates every 5-10 seconds
- Moves to “Completed” with final result
Monitor Paper Generation
Paper generation jobs take 1-3 minutes. Check:- Job data: conversationId, userId, paperId
- Progress: 0% → 100%
- Result: PDF URL and LaTeX URL
- Errors: LaTeX compilation failures
Security
Authentication
Basic Auth is enforced in production:Access Control
- Dashboard access is admin-only
- No user data filtering (admins see all jobs)
- Job data may contain sensitive information
- Use strong passwords in production
Disable in Production
If you don’t want to expose the dashboard in production:Configuration
Environment Variables
Queue Options
Queues are configured insrc/services/queue/queues.ts:
Troubleshooting
Dashboard Not Loading
Symptom: Cannot access/admin/queues
Causes:
- Job queue not enabled (
USE_JOB_QUEUE=false) - Redis not connected
- Missing admin password in production
Jobs Stuck in Active
Symptom: Jobs stay in “active” state indefinitely Causes:- Worker crashed during processing
- Long-running job (deep research can take 5 min)
- Worker not running
Failed Jobs Accumulating
Symptom: Many jobs in “failed” state Causes:- External service down (OpenScholar, Edison)
- Configuration error (missing API keys)
- Invalid job data
- Check failed job error messages in dashboard
- Fix underlying issue (API keys, service availability)
- Retry failed jobs
- Clean old failed jobs after fixing
High Queue Depth
Symptom: 100+ jobs in “waiting” state Causes:- Worker processing too slowly
- Traffic spike
- Not enough workers