#Errors

37 messages ยท Page 1 of 1 (latest)

mild tangle
#

After running openclaw doctor --deep Im getting the following errors which I want to fix
State integrity

  • 1/5 recent sessions are missing transcripts.
    followed with file paths which I wont share here.
    Please help me with fixing this message
dense locustBOT
#

That warning usually means sessions.json still has an entry for a session whose .jsonl transcript file is gone.

First, please check your version:

openclaw --version

Then, on the gateway host where the state dir lives, use the exact sessions.json path doctor printed and run:

openclaw sessions --store "/path/to/sessions.json"
openclaw sessions cleanup --store "/path/to/sessions.json" --dry-run

If the dry run looks right, clean the stale entry:

#

If you want, paste:

  • openclaw --version
  • the redacted output of the --dry-run

and I can sanity check it before you run the fix.

mild tangle
#

thanks thats fixed for now I also see this here:
Doctor warnings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ - channels.telegram: Telegram is in first-time setup mode. DMs use allowlist mode, so โ”‚
โ”‚ only sender IDs in channels.telegram.allowFrom are accepted. Group messages stay โ”‚
โ”‚ blocked until you add allowed chats under channels.telegram.groups (and optional โ”‚
โ”‚ sender IDs under channels.telegram.groupAllowFrom), or set โ”‚
โ”‚ channels.telegram.groupPolicy to "open" if you want broad group access.

dense locustBOT
#

Also, if you havenโ€™t already, paste openclaw --version when you get a sec.

That Telegram one is a warning, not a breakage. It means your bot is configured, but Telegram access is still locked down in first-run mode.

If you want DMs only

Set Telegram groups off:

{
  channels: {
    telegram: {
      botToken: "...",
      dmPolicy: "pairing", // or "allowlist"
      groupPolicy: "disabled",
    },
  },
#
}

If you want one or a few Telegram groups

This is the safer setup Iโ€™d recommend:

{
  channels: {
    telegram: {
      botToken: "...",
      dmPolicy: "pairing",
      allowFrom: ["123456789"], // your Telegram user ID
      groupPolicy: "allowlist",
      groups: {
#
        "-1001234567890": {
          requireMention: true,
        },
      },
    },
  },
}

A couple gotchas:

  • User IDs go in allowFrom / groupAllowFrom
  • Group chat IDs go in groups
  • For Telegram groups, the group id is usually a negative id like -100...
  • I would not use groupPolicy: "open" unless you really want broad access

Docs:

mild tangle
#

give me the full flow for dms only

dense locustBOT
#

Yep, for Telegram DMs only, this is the clean flow Iโ€™d use.

0. Check version first

openclaw --version

1. Configure Telegram for DMs only

Set groupPolicy: "disabled" so doctor stops warning about Telegram groups.

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "123:abc",
#
      dmPolicy: "pairing",
      groupPolicy: "disabled",
    },
  },
}

Notes:

  • leave groups unset
  • leave groupAllowFrom unset
  • dmPolicy: "pairing" is the easiest first setup for DMs only

2. Restart the gateway

openclaw gateway restart
#

3. DM the bot in Telegram

Send it any message.

Because dmPolicy is pairing, the first unknown sender gets a pairing code and the message is not processed yet.

4. Approve that DM sender

openclaw pairing list telegram
openclaw pairing approve telegram <CODE>

If you did not see the code in Telegram, pairing list will show pending requests.

5. Message the bot again

Now your DMs should work normally.

6. Re-run doctor

#
openclaw doctor --deep

That Telegram warning should be gone, because groups are explicitly disabled now.


Optional: better long-term setup for one owner

Once it works, you may want to switch from pairing to an explicit DM allowlist.

Find your Telegram user ID:

  1. DM the bot
  2. Run:
    openclaw logs --follow
    
#
  1. Look for from.id

Then use:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "123:abc",
      dmPolicy: "allowlist",
      allowFrom: ["123456789"],
      groupPolicy: "disabled",
    },
  },
}
mild tangle
#

where do I start wit step 1? Please give me excat infos

dense locustBOT
#

Yep, letโ€™s make step 1 super concrete.

Start here

A. Open a terminal on the machine where OpenClaw is running

First check which config file is actually in use:

openclaw gateway status

Look for the config path in the output.

Default path is usually:

#
~/.openclaw/openclaw.json

If gateway status shows a different config path, use that one instead.


B. Open the config file

If you use nano:

nano ~/.openclaw/openclaw.json

If the file does not exist yet, nano will create it.

#

C. Put this in the file for Telegram DMs only

If you are starting from scratch, paste this whole thing:

{
  channels: {
    telegram: {
      enabled: true,
      botToken: "PASTE_YOUR_TELEGRAM_BOT_TOKEN_HERE",
      dmPolicy: "pairing",
      groupPolicy: "disabled",
    },
  },
#
}

What each line means

  • enabled: true โ†’ turns Telegram on
  • botToken: "..." โ†’ your BotFather token
  • dmPolicy: "pairing" โ†’ first DM must be approved
  • groupPolicy: "disabled" โ†’ no Telegram groups, DMs only

D. If you already have other config in openclaw.json

Do not replace the whole file.

Just add this inside your existing channels: { ... } block:

#
telegram: {
  enabled: true,
  botToken: "PASTE_YOUR_TELEGRAM_BOT_TOKEN_HERE",
  dmPolicy: "pairing",
  groupPolicy: "disabled",
},

E. Save the file

In nano:

  • Ctrl + O โ†’ save
  • press Enter
  • Ctrl + X โ†’ exit
#

F. Then do the next command

openclaw gateway restart

After that:

openclaw doctor --deep

That Telegram warning should disappear.

If you want, paste your redacted channels block here and Iโ€™ll check if itโ€™s formatted correctly before you restart.

mild tangle
#

next thing is Memory search โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ โ”‚
โ”‚ Memory search provider is set to "ollama" but the API key was not found in the CLI โ”‚
โ”‚ environment. โ”‚
โ”‚ The running gateway reports memory embeddings are ready for the default agent. โ”‚
โ”‚ Verify: openclaw memory status --deep

dense locustBOT
#

This one is usually just a CLI vs gateway env mismatch.

OpenClaw is basically saying:

  • your running gateway can use Ollama embeddings
  • but the terminal where you ran openclaw doctor does not have OLLAMA_API_KEY set

For Ollama, that โ€œAPI keyโ€ is just a placeholder marker. It is not a real secret.

Exact fix

In the same terminal where you run openclaw commands:

export OLLAMA_API_KEY="ollama-local"
openclaw memory status --deep
#
openclaw doctor --deep

If you want it to persist

If you use bash:

echo 'export OLLAMA_API_KEY="ollama-local"' >> ~/.bashrc
source ~/.bashrc

If you use zsh:

#
echo 'export OLLAMA_API_KEY="ollama-local"' >> ~/.zshrc
source ~/.zshrc

Then verify again:

openclaw memory status --deep
openclaw doctor --deep

Important note

ollama-local is the normal placeholder value from the docs. Any non-empty value works, but Iโ€™d use that exact one.

Docs:

mild tangle
#

im running the embeddings locally

dense locustBOT
#

Got it. If โ€œlocallyโ€ means Ollama on your machine, then this is the annoying-but-normal part:

Ollama is local, but OpenClaw still expects the OLLAMA_API_KEY marker for CLI-side provider resolution.
It does not need to be a real secret.

So the fix is still:

export OLLAMA_API_KEY="ollama-local"
openclaw memory status --deep
openclaw doctor --deep

Because your doctor output already says:

the running gateway reports memory embeddings are ready

#

that means nothing is actually broken at runtime. The warning is just that your shell does not have the Ollama marker set.

Short version

  • Using Ollama locally โ†’ keep provider: "ollama" and set OLLAMA_API_KEY="ollama-local"
  • Using the true local backend (provider: "local", node-llama-cpp, GGUF file) โ†’ no API key marker needed

So unless you intentionally want to switch away from Ollama, Iโ€™d just set the marker and move on.

Docs:

If you want, I can also help you check whether your config currently says memorySearch.provider: "ollama" or memorySearch.provider: "local".

mild tangle
#

how can I enable dreams?

dense locustBOT
#

Yep, dreaming is off by default. To enable it, add this to your config:

Minimal config

Edit ~/.openclaw/openclaw.json and add:

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            enabled: true,
          },
        },
#
      },
    },
  },
}

If you want a custom schedule too

Default is daily at 03:00.

Example, every 6 hours:

{
  plugins: {
#
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            enabled: true,
            frequency: "0 */6 * * *",
          },
        },
      },
    },
  },
}

Where to put it

If your config already has a plugins block, just merge in:

#
"memory-core": {
  config: {
    dreaming: {
      enabled: true,
    },
  },
}

Do not create a second plugins block.

Then apply it

Usually config hot-reloads, but Iโ€™d do:

#
openclaw gateway restart

Verify

openclaw memory status --deep

You can also check:

/dreaming status

What it creates

When it runs, dreaming writes to: