Skip to main content

Find the service behind a failure

Trace requests, background work, and sandbox execution to the right logs and understand automatic knowledge-index repair.

4 min read

Use service ownership to narrow an incident before changing containers. The packaged stack combines the application and knowledge databases in db; source Compose can run knowledge-db separately. Confirm your actual layout with tale status or your orchestrator's service inventory.

Choose the first logs

SymptomStart withCheck next
Public URL or TLS failsproxyDNS, certificate state, public ports, upstream reachability.
App shell fails to loadplatform, then proxyWeb health, static assets, and the selected deployment version.
Shell loads, but sign-in or data requests failbackend-apiAPI health, database access, request errors, and proxy routing.
Jobs, scheduled automations, or ingestion stop progressingbackend-workerQueue state, job errors, credentials, and required stores.
Reads or writes fail across the applicationdb or the external application databaseConnectivity, disk space, locks, and database logs.
Files cannot be uploaded or downloadedbackend-api, then object-store or the external bucketThe resolved organization connection, credentials, public endpoint, and browser CORS.
A harness cannot start or reach its modelsandbox, sandbox-llm-gatewaySession creation, gateway authentication, model availability, and runtime image.
Sandboxed network access or page rendering failssandbox-egress, sandboxTarget hostname, allowed ports, egress policy, and session logs.
Video transcript retrieval failsbackend-worker, bgutil-providerVideo access, extractor errors, configured proxy, and browser-session status.

Use logical service names with tale logs <service>. For your own Compose stack, use docker compose logs --tail=200 <service>; generated container names may include a project, colour, and replica number.

Follow an interactive chat request

  1. The browser reaches proxy. Web assets go to platform; application and authentication requests go to backend-api.
  2. The API checks the session and organization, resolves the chosen model and credential, and executes the interactive turn. It stores progress in the application database.
  3. The browser reads turn progress through the thread's stream endpoint. /events carries invalidation hints for refreshed data; it is not the token payload stream.
  4. Knowledge tools access the requesting organization's knowledge connection. Original files are read through its storage configuration.
  5. A turn using a coding harness needs a sandbox session and the model gateway. Queued tasks, workflow agent jobs, and REST chat turns can also depend on workers.

A worker outage therefore has a different scope from an API outage, but it is not safe to declare all chat or agent work unaffected. Check the entry point and execution type that failed. Preserve the original error before retrying a turn that might spend tokens or perform an external action.

Understand the sandbox dependencies

sandbox is a spawner with access to the host's Docker daemon. It creates temporary containers from the pinned sandbox-runtime image and mounts their workspaces. Those sessions use an isolated network: outbound web requests pass through sandbox-egress, while model calls use the gateway's scoped session access.

The runtime also supplies Chromium and Playwright for page rendering and document generation. A healthy web UI does not prove that this execution plane works. Check image availability, workspace mounts, the shared sandbox token, and gateway credentials before diagnosing an individual script.

The egress service blocks private and metadata destinations and can enforce a hostname allowlist. An unavailable egress path can cause refusals or network failures; the precise error depends on the operation. Hardening describes the policy, and Run Compose yourself lists required capabilities and mounts.

Recognize knowledge-index repair

A damaged BM25 index can cause ingestion failures even when the underlying document tables remain readable. The backend checks knowledge indexes with pdb.verify_index; an advisory lock coordinates repair attempts for a database. Organization-specific databases are checked when they are first used.

ResultBackend behaviorOperator response
HealthyContinue normal work.No repair is needed.
Damaged index at or below KNOWLEDGE_INDEX_REPAIR_INLINE_MAX_BYTESRebuild inline and verify again; the default limit is 1 GiB.Allow for slower startup and inspect the final result.
Larger damaged indexSchedule a concurrent background rebuild; affected indexing can wait with an index-rebuilding reason.Watch worker progress and the final verification.
Repair fails or verification cannot establish healthRecord the failure; affected corpus operations can remain unavailable.Inspect the exact cause, database permissions, and storage health before attempting manual repair.

Repair events can produce knowledge_index_repaired, knowledge_index_rebuild_scheduled, or knowledge_index_repair_failed audit entries and administrator notifications. A failed rebuild is not proof that source documents are lost, and a successful rebuild does not replace a database backup.

KNOWLEDGE_INDEX_REPAIR_DISABLED=1 disables the automatic check; it is not a fix for corruption. Repeated damage after restarts warrants investigating the database shutdown path and storage. Prefer normal stops with the configured grace period over forced kills. Troubleshooting gives the read-only index check and recovery precautions.

© 2026 Tale by Ruler GmbH — ISO 27001 & SOC 2 certified.

Tale is MIT licensed — free to use, modify, and distribute.