Troubleshooting¶
Common issues and solutions when using Shuttle.
Connection Issues¶
"Connection refused" or timeout¶
Symptom: ssh_execute returns a connection error.
Checklist:
- Verify the node is reachable:
shuttle node test <name> - Check host/port are correct:
shuttle node list - Ensure SSH is running on the remote server
- Check firewall rules allow port 22 (or your custom port)
- If using a jump host, verify the jump host itself is reachable first
"Authentication failed"¶
Symptom: Connection succeeds but authentication is rejected.
Solutions:
- Password auth: Re-add the node with the correct password:
shuttle node edit <name> - Key auth: Ensure the private key matches an authorized key on the server
- Key format: Shuttle supports OpenSSH format keys. Convert PuTTY keys with
ssh-keygen -i
Jump host not working¶
Symptom: Direct connection works but jump host connection fails.
Checklist:
- Verify the jump host node exists and is active:
shuttle node list - Test the jump host directly:
shuttle node test <jump-host-name> - Ensure the jump host can reach the target host on the target port
MCP Issues¶
AI assistant can't find Shuttle tools¶
Symptom: AI says it doesn't have SSH tools available.
For stdio mode:
Verify your .mcp.json:
Ensure uvx shuttle-mcp works in your terminal. If not, install with pip install shuttle-mcp.
For service (HTTP) mode:
- Start the service:
shuttle serve - Verify MCP endpoint responds:
curl http://localhost:9876/mcp/ - Configure your AI client:
Commands blocked unexpectedly¶
Symptom: ssh_execute returns "BLOCKED" for a command you expect to work.
Solutions:
- Check security rules: open
http://localhost:9876→ Rules page - Look for regex patterns that match your command too broadly
- Use the Rule Tester (Rules page → Test button) to see which rule matches
- Adjust or delete the overly broad rule
CONFIRM token flow¶
Symptom: Command returns "requires confirmation" with a token.
This is expected for commands matching confirm-level rules (e.g., sudo, rm -rf). The AI should:
- Show the user the command and ask for confirmation
- Re-call
ssh_executewith theconfirm_tokenparameter
Web Panel Issues¶
Can't access Web UI¶
Symptom: Browser shows connection error at http://localhost:9876.
Checklist:
- Ensure
shuttle serveis running (not justshuttlewhich is stdio-only) - Check the port isn't in use:
lsof -i :9876 - If binding to a remote server, use
--host 0.0.0.0
Token authentication fails¶
Symptom: Login page rejects your token.
The API token is displayed when you run shuttle serve:
Shuttle service starting at http://127.0.0.1:9876
API token: do5nLwx1-TOxsyNQZpeQx7TkXh3M8VFEZZT4WNcQZOE
The token is stored in ~/.shuttle/web_token. You can read it directly:
Database Issues¶
Resetting the database¶
To start fresh, delete the database file:
The database and default security rules are recreated automatically on next startup.
Using PostgreSQL¶
For production deployments, switch to PostgreSQL:
Performance¶
Slow command execution¶
Possible causes:
- Connection pool exhausted: Increase
SHUTTLE_POOL_MAX_TOTAL(default: 50) - Slow SSH handshake: Shuttle reuses connections. First command to a node is slower
- Network latency: Check with
shuttle node test <name>which reports latency
High memory usage¶
- Reduce
SHUTTLE_POOL_MAX_TOTALto limit open SSH connections - Set
SHUTTLE_POOL_IDLE_TIMEOUTto close idle connections sooner (default: 300s) - Old command logs accumulate. Set
cleanup_command_logs_daysin Settings
Getting Help¶
- GitHub Issues — Bug reports and feature requests
- Documentation — Full documentation