---
title: "Troubleshooting"
description: "Diagnosing and resolving common issues with Fabro"
---

## `fabro doctor`

The `fabro doctor` command validates your installation:

```bash
fabro doctor            # Local config checks + live server diagnostics
fabro doctor --verbose  # Show detailed output for each check
fabro doctor --server https://fabro.example.com:3000/api/v1
```

It checks:
- Local user config and legacy `~/.fabro/.env` warnings
- Server-reported LLM provider connectivity
- GitHub App, sandbox, and Brave Search credentials
- Server authentication and crypto configuration

## Common issues

**"No API key configured"** — Set at least one provider key with `fabro provider login` or `fabro secret set`, or export it in the server process environment. Run `fabro doctor` to verify connectivity.

**Stall watchdog timeouts** — If runs are cancelled unexpectedly, the agent may be stuck or the LLM provider may be slow. Check `FABRO_LOG=debug` output for `Agent.LlmRetry` events. Increase `stall_timeout` in the graph if needed, or add [fallback providers](/core-concepts/models) to handle outages.

**Sandbox creation failures** — For Docker: ensure the Docker daemon is running and the configured image exists. For Daytona: verify `DAYTONA_API_KEY` is set and the `gh` CLI is authenticated. For Exe: verify your SSH keys are configured for `exe.dev` and that `ssh exe.dev` connects successfully.

**Port already in use** — Change the port with `fabro server start --port 3001` or stop the conflicting process.

**SSE streams disconnecting** — If using a reverse proxy, ensure buffering is disabled and the connection timeout is long enough for workflow runs. See the [reverse proxy example](/administration/deployment#binding-and-tls).

**Run config validation errors** — Use `fabro preflight` to validate without executing:

```bash
fabro preflight run.toml
```
