-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
WRIT_PUBLIC_URL is wrong. The coordinator derives the WebSocket URL it hands
back from that value, so if it says localhost while the agent is on another
machine — or names the wrong port — the agent dials somewhere that is not there
and nothing explains why.
curl -s https://writ.example.com/api/fleet/connect-info \
-H "Authorization: Bearer <token>" | grep ws_urlThat is the URL your agent will actually use. Fix WRIT_PUBLIC_URL in .env
and restart the coordinator.
Two workers cannot share one WRIT_HOME. Either stop the other one, or give
this agent its own directory:
WRIT_HOME=~/.writ-second writ-agent-fleetwrit-agent-fleet is configured entirely by environment. It has no config
file and no config subcommand — that belongs to the separate desktop
writ-agent binary. Pass WRIT_COORDINATOR_URL in the environment.
The agent repository has no release for your platform yet. Build from source:
cargo build --release --no-default-features --features local,fleet,openai --bin writ-agent-fleetCheck free capacity in Fleet. An agent advertises a bounded number of slots from its resource governor, not raw CPU count. If they are all busy, work queues.
Expected on a Docker install. A container has no host process table and no browser runtime, so it cannot launch an agent on your machine. Use the one-line installer instead.
The agent has to launch a real browser, which takes a few seconds cold. If it
never arrives, check the agent log for CDP screencast started. If the session
opened but no frames flow, the agent is likely on a build that predates the
recorder fix — rebuild it.
Fixed in current builds; it was a screencast/context resolution mismatch that scaled every coordinate. Rebuild your agent if you are on an older binary.
DOC_EXTRACT_URL is unreachable from your agents. The failure is silent by
design — an agent with no extractor skips non-HTML content and reports success.
curl -s https://writ.example.com/api/fleet/connect-info \
-H "Authorization: Bearer <token>" | grep doc_extractIf agents are on other machines, the loopback default cannot work. See Documents and OCR.
Any required secret that is missing, blank or under 32 characters stops the
boot. Run ./scripts/gen-env.sh, or fill the named variable by hand. This is
deliberate — see Security model.
ALLOWED_HOSTS does not include the hostname you used. Visiting via
127.0.0.1 when the allowlist says localhost is enough to trigger it. Add
both if you use both.
By design. Remove WEB_CONCURRENCY / WORKERS / UVICORN_WORKERS, or set them
to 1. Scale with agents. See
Production deployment.
Expected in production. Set WRIT_EXPOSE_OPENAPI=true to re-enable.
Check WRIT_FILES_DIR is set. Without it, screenshots and uploads are
base64-encoded into SQLite instead of written to disk. Then review the retention
windows in Configuration.
Exactly what it says. The MCP endpoint checks that scope specifically — add it to the key alongside the resource scopes.
Logs first:
docker compose logs -f coordinator
docker compose logs -f doc-extract
tail -f ~/.writ/agent.logThen open an issue or ask in Discussions. For a security problem, use private reporting instead.
usewrit/writ · AGPL-3.0-only · Issues · Discussions · Report a vulnerability
Getting started
Using it
Integrations
Operations
Reference