Skip to content

Troubleshooting

Start with Doctor whenever Bestie behaves unexpectedly. It checks local runtime paths, configuration, secret presence, and enabled capability diagnostics without printing secret values.

Terminal window
bestie doctor

Check whether the installer linked Bestie into your user-local bin directory:

Terminal window
ls ~/.local/bin/bestie

If it exists, make sure ~/.local/bin is on your PATH.

Run onboarding again:

Terminal window
bestie onboard

If you are setting up offline or the provider is temporarily unavailable:

Terminal window
bestie onboard --skip-provider-test

Doctor can repair safe local permissions:

Terminal window
bestie doctor --fix

--fix does not overwrite config, prompts, or secrets.

The provider endpoint was contacted but did not return before the timeout.

Try:

  • Run the request again.
  • Use a faster model.
  • Increase llm.timeoutMs.
{
"llm": {
"timeoutMs": 120000
}
}

Check:

  • the active LLM profile’s baseUrl
  • local network access
  • DNS
  • VPN/proxy settings
  • provider status

Check:

  • the API key value in .bestie/.env
  • the env var name in the active LLM profile’s apiKeyEnv
  • provider account access

Do not paste API keys into issues, logs, screenshots, or chat.

Confirm the selected model ref is supported by the configured provider profile. Use bestie llm test --model <provider/model> when you need a focused provider check.

bestie channels telegram says Telegram is not enabled

Section titled “bestie channels telegram says Telegram is not enabled”

Run setup:

Terminal window
bestie channels telegram setup

Or check .bestie/config.json:

{
"channels": {
"telegram": {
"enabled": true,
"botTokenEnv": "BESTIE_TELEGRAM_BOT_TOKEN",
"ownerUserId": "123456789"
}
}
}

Check:

  • BESTIE_TELEGRAM_BOT_TOKEN exists in .bestie/.env.
  • ownerUserId matches your Telegram user id.
  • You are messaging the bot from the owner account.
  • bestie channels telegram is running.

Run:

Terminal window
bestie doctor
bestie doctor --telegram-connect

--telegram-connect performs an explicit network check against Telegram getMe.

That is expected. Telegram MVP is owner-only by default.

Check attachment config:

  • downloadPolicy
  • maxBytes
  • parseMaxBytes
  • allowedMimeTypes
  • visionPolicy
  • transcriptionPolicy

Text, PDF, and DOCX attachments can get bounded text previews. Vision and transcription require explicit opt-in config.

Voice messages download but do not transcribe

Section titled “Voice messages download but do not transcribe”

Run Doctor:

Terminal window
bestie doctor

Check that these exist:

.bestie/tools/whisper-bin/whisper-cli
.bestie/tools/local-whisper-transcribe.sh
.bestie/models/ggml-small.bin

Also make sure ffmpeg is installed and available on PATH.

Use ggml-small.bin or better. ggml-tiny.bin is faster but often too inaccurate for Vietnamese voice chat.

Make sure local whisper args include Vietnamese language selection:

{
"args": ["{modelPath}", "{audioPath}", "-l", "vi"]
}

Check memory status:

Terminal window
bestie memory status
bestie memory list

If memory is paused:

Terminal window
bestie memory resume

If memory.writePolicy is ask, proposed memories may be waiting for approval:

Terminal window
bestie memory pending

Inspect and edit or forget the memory:

Terminal window
bestie memory inspect 1
bestie memory edit 1 "Updated memory text."
bestie memory forget 1

Export first if needed:

Terminal window
bestie memory export
bestie memory clear --yes

Bestie requires local tool classification before read-only MCP calls.

Check server config:

Terminal window
bestie mcp list
bestie mcp show <server-name>

Classify a read-only tool:

Terminal window
bestie mcp classify <server-name> <tool-name> --category read

That is expected for tools outside the default read-only path. Use --ask to force a one-time approval prompt for a read call:

Terminal window
bestie mcp call <server-name> <tool-name> --read --ask --json '{"path":"README.md"}'

Stop and treat it as a bug. Do not share the output publicly; remove the secret from any copied material and rotate it when exposure is plausible. Bestie should redact secret-like values from logs, Doctor reports, and channel summaries.

For local development, Doctor safe fixes can recreate folders and initialize SQLite:

Terminal window
bestie doctor --fix

Avoid deleting .bestie/ unless you intentionally want to remove config, memory, logs, and local state.