Troubleshooting
Common issues and solutions for GridWork HQ.
Troubleshooting
Common issues and their solutions, organized by symptom.
Pipeline Server Not Connecting
Symptom: Dashboard shows "Pipeline server unreachable"
- Verify the server is running:
curl http://localhost:8750/health - Check
PIPELINE_SERVER_TOKENmatches in both.env.localandpipeline-server/.env - Check
PIPELINE_SERVER_PORTmatches (default: 8750) - If using Tailscale, verify the funnel is active:
tailscale funnel status
Cannot Log In (Auth Loop)
Symptom: Redirected back to the login page after GitHub auth
- Verify
NEXTAUTH_SECRETis set (generate withopenssl rand -base64 32) - Verify
NEXTAUTH_URLmatches your actual URL (http://localhost:3000for local) - Verify the GitHub OAuth callback URL matches exactly:
http://localhost:3000/api/auth/callback/github - Clear browser cookies and try again
- On Vercel: do NOT set
NEXTAUTH_URL— Vercel handles this automatically
Pipelines Start But Produce No Output
Symptom: Pipeline jobs start but nothing appears
- Verify
ANTHROPIC_API_KEYis set inpipeline-server/.env - Verify Claude Code CLI is installed:
claude --version - Check pipeline server logs for errors
- Verify the knowledge vault path is correct:
KNOWLEDGE_DIRinpipeline-server/.env
Notion API Errors
Symptom: Pipelines fail with "Could not find database" or 401 errors
- Verify
NOTION_API_KEYis correct - Verify both databases are shared with your integration (Section 4.4 of the setup guide)
- Verify database IDs are correct (32 hex chars, no dashes)
"KNOWLEDGE_DIR not set" on Startup
Symptom: Pipeline server refuses to boot
Ensure all required env vars are set in pipeline-server/.env:
KNOWLEDGE_DIR=/Users/yourname/agency-workspace/knowledge
HQ_URL=http://localhost:3000
PIPELINE_SERVER_TOKEN=your-token-here
ANTHROPIC_API_KEY=sk-ant-...Crons Not Firing
Symptom: Scheduled jobs do not run
- Check the job is
enabled: trueincron-config.json - Restart the pipeline server after config changes
- Check if current time falls within quiet hours (
quiet_start/quiet_end) - Verify via:
curl http://localhost:8750/crons/health -H "Authorization: Bearer TOKEN"
Database Errors (SQLite)
Symptom: Dashboard shows errors reading/writing data
- Verify the
./data/directory exists and is writable - Run
bun run migrateto apply pending schema changes - If the database file is corrupted, delete
./data/gridwork-hq.dband restart — it will be recreated
Build Failures (TypeScript)
Symptom: npm run build fails with type errors
npx tsc --noEmit # See exact errors
npm run lint # Check for lint issuesCommon causes: missing environment variable types, stale imports after brand config changes.
Telegram Notifications Not Sending
Symptom: Cron jobs complete but no Telegram messages
- Verify
TELEGRAM_BOT_TOKENandTELEGRAM_CHAT_IDinpipeline-server/.env - Get your chat ID: message @userinfobot on Telegram
- Test manually:
curl -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
-d "chat_id=<ID>&text=test"Out of Memory
Symptom: Node.js crashes with heap allocation errors during pipeline runs
# Increase Node.js heap size
export NODE_OPTIONS="--max-old-space-size=4096"
bun run devOr add to your LaunchAgent/systemd config.
502 Bad Gateway (VPS)
Symptom: Nginx returns 502
- Check the app is running:
pm2 statusorsystemctl status agency-pipeline - Verify the port matches Nginx config (3000 for dashboard, 8750 for pipeline server)
- Check Nginx logs:
sudo tail -f /var/log/nginx/error.log
SSL Certificate Renewal Fails (VPS)
# Test renewal
sudo certbot renew --dry-run
# If it fails, check Nginx and port 80
sudo ufw status
sudo systemctl status nginxSlow Dashboard Performance (VPS)
- Ensure you ran
npm run build(not justnpm run devin production) - Check RAM — upgrade to 4 GB+ if needed
- Add swap space if running low on memory:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab