Common issues and solutions for TinyAGI.
If you see:
Error: This script requires bash 4.0 or higher (you have 3.2.57)
macOS ships with bash 3.2 by default. Install a newer version:
# Install bash 5.x via Homebrew
brew install bash
# Add to your PATH (add this to ~/.zshrc or ~/.bash_profile)
export PATH="/opt/homebrew/bin:$PATH"
# Or run directly with the new bash
tinyagi start# Clear npm cache and reinstall
rm -rf node_modules package-lock.json
npm cache clean --force
PUPPETEER_SKIP_DOWNLOAD=true npm install# Check logs
tinyagi logs whatsapp
# Reset WhatsApp authentication
tinyagi channels reset whatsapp
tinyagi restartCommon causes:
- QR code expired (scan within 60 seconds)
- Session files corrupted
- Multiple WhatsApp Web sessions active
Solution:
- Delete session:
rm -rf .tinyagi/whatsapp-session/ - Restart:
tinyagi restart - Scan new QR code immediately
# Check logs
tinyagi logs discord
# Update Discord bot token
tinyagi setupChecklist:
- ✅ Bot token is correct
- ✅ "Message Content Intent" is enabled in Discord Developer Portal
- ✅ Bot has permissions to read/send messages
- ✅ Bot is added to your server
# Check logs
tinyagi logs telegram
# Update Telegram bot token
tinyagi setupCommon issues:
- Bot token is invalid or revoked
- Bot wasn't started (send
/startto your bot first) - Bot removed from group
# Attach to tmux to see the QR code
tmux attach -t tinyagiThe QR code appears in the WhatsApp pane. If it's not visible:
- Check if WhatsApp is enabled:
cat .tinyagi/settings.json | jq '.channels.enabled' - Check WhatsApp process:
pgrep -f whatsapp-client.ts - View logs:
tail -f .tinyagi/logs/whatsapp.log
# Check queue processor status
tinyagi status
# Check queue status via API
curl http://localhost:3777/api/queue/status | jq
# View queue logs
tinyagi logs queueChecklist:
- ✅ Queue processor is running
- ✅ Claude Code CLI is installed:
claude --version - ✅ No dead messages:
curl http://localhost:3777/api/queue/dead | jq
Messages stuck in processing state are automatically recovered after 10
minutes. To force recovery:
# Restart TinyAGI (triggers stale message recovery on startup)
tinyagi restart# Check responses via API
curl http://localhost:3777/api/responses | jq
# Check channel client logs
tinyagi logs discord
tinyagi logs telegram
tinyagi logs whatsappIf tinyagi model or tinyagi provider doesn't seem to change the model your agents use:
-
Check what agents actually run with:
tinyagi model # or tinyagi providerBoth show the global default and per-agent breakdown. If an agent still shows the old model, the change didn't propagate.
-
Agents override the global default. When agents exist in
settings.json, each agent's ownprovider/modelfields are used — the globalmodelssection is only a fallback when no agents are configured. -
Use
--modelwith provider switches.tinyagi provider <name>(without--model) only changes the global default and does not update agents. Add--modelto propagate:tinyagi provider openai --model gpt-5.3-codex
-
Override a single agent: Use
tinyagi agent providerfor per-agent control:tinyagi agent provider coder anthropic --model opus
-
Verify settings file is valid JSON:
jq . .tinyagi/settings.json
If you see "Agent 'xyz' not found":
-
Check agent exists:
tinyagi agent list
-
Verify agent ID is lowercase and matches exactly:
cat .tinyagi/settings.json | jq '.agents'
-
Check settings file is valid JSON:
cat .tinyagi/settings.json | jq
If messages go to the wrong agent:
-
Check routing prefix: Must be
@agent_idwith space after- ✅ Correct:
@coder fix the bug - ❌ Wrong:
@coderfix the bug(no space) - ❌ Wrong:
@ coder fix the bug(space before agent_id)
- ✅ Correct:
-
Verify agent exists:
tinyagi agent show coder
-
Check logs:
tail -f .tinyagi/logs/queue.log | grep "Routing"
If @agent /reset doesn't work:
-
Check reset flag exists:
ls ~/tinyagi-workspace/{agent_id}/reset_flag -
Send a new message to trigger reset (flag is checked before each message)
-
Remember: Reset is one-time only
- First message after reset: Fresh conversation
- Subsequent messages: Continues conversation
If agent can't execute (error: command not found):
For Anthropic agents:
# Check Claude CLI is installed
claude --version
# Install if missing
# Visit: https://claude.com/claude-codeFor OpenAI agents:
# Check Codex CLI is installed
codex --version
# Authenticate if needed
codex loginIf agents aren't being created:
-
Check workspace path:
cat .tinyagi/settings.json | jq '.workspace.path'
-
Verify workspace exists:
ls ~/tinyagi-workspace/ -
Check permissions:
ls -la ~/tinyagi-workspace/ -
Manually create if needed:
mkdir -p ~/tinyagi-workspace
If new agents don't have .claude/, heartbeat.md, or AGENTS.md:
-
Check templates exist:
ls -la ~/.tinyagi/{.claude,heartbeat.md,AGENTS.md} -
Run setup to create templates:
tinyagi setup
-
Manually copy if needed:
cp -r .claude ~/.tinyagi/ cp heartbeat.md ~/.tinyagi/ cp AGENTS.md ~/.tinyagi/
If you see "Could not fetch latest version":
-
Check internet connection:
curl -I https://api.github.com
-
Check GitHub API rate limit:
curl https://api.github.com/rate_limit
-
Disable update checks:
export TINYAGI_SKIP_UPDATE_CHECK=1 tinyagi start
If bundle download fails during update:
-
Check release exists:
- Visit: https://github.com/TinyAGI/tinyagi/releases
- Verify bundle file is attached
-
Manual update:
# Download bundle manually wget https://github.com/TinyAGI/tinyagi/releases/latest/download/tinyagi-bundle.tar.gz # Extract to temp directory mkdir temp-update tar -xzf tinyagi-bundle.tar.gz -C temp-update # Backup current installation cp -r ~/tinyagi ~/.tinyagi/backups/manual-backup-$(date +%Y%m%d) # Replace files cp -r temp-update/tinyagi/* ~/tinyagi/
If update breaks TinyAGI:
# Find your backup
ls ~/.tinyagi/backups/
# Restore from backup
BACKUP_DIR=$(ls -t ~/.tinyagi/backups/ | head -1)
cp -r ~/.tinyagi/backups/$BACKUP_DIR/* $HOME/tinyagi/
# Restart
tinyagi restart# Check which process is using CPU
top -o cpu | grep -E 'claude|codex|node'Common causes:
- Long-running AI tasks
- Stuck message processing
- Too many concurrent operations
Solutions:
- Wait for current task to complete
- Restart:
tinyagi restart - Reduce heartbeat frequency in settings
# Check memory usage
ps aux | grep -E 'claude|codex|node' | awk '{print $4, $11}'Solutions:
- Restart TinyAGI:
tinyagi restart - Reset conversations:
tinyagi reset - Clear old sessions:
rm -rf .tinyagi/whatsapp-session/.wwebjs_*
-
Check queue depth:
curl http://localhost:3777/api/queue/status | jq -
Monitor AI response time:
tail -f .tinyagi/logs/queue.log | grep "Response ready"
# Set log level (in queue-processor.ts or channel clients)
export DEBUG=tinyagi:*
# Restart with debug logs
tinyagi restartFind errors:
grep -i error .tinyagi/logs/*.logTrack message routing:
grep "Routing" .tinyagi/logs/queue.logMonitor agent activity:
tail -f .tinyagi/logs/queue.log | grep "agent:"Check heartbeat timing:
grep "Heartbeat" .tinyagi/logs/heartbeat.log-
Check status:
tinyagi status
-
View all logs:
tinyagi logs all
-
Restart from scratch:
tinyagi stop rm -f .tinyagi/tinyagi.db tinyagi start
-
Report issue:
- GitHub Issues: https://github.com/TinyAGI/tinyagi/issues
- Include logs and error messages
- Describe steps to reproduce
Quick reference for common recovery scenarios:
# Full reset (preserves settings)
tinyagi stop
rm -f .tinyagi/tinyagi.db
rm -rf .tinyagi/channels/*
rm -rf .tinyagi/whatsapp-session/*
tinyagi start
# Complete reinstall
cd ~/tinyagi
./scripts/uninstall.sh
cd ..
rm -rf tinyagi
curl -fsSL https://raw.githubusercontent.com/TinyAGI/tinyagi/main/scripts/remote-install.sh | bash
# Reset single agent
tinyagi agent reset coder
tinyagi restart