Grok Bot

Skills and recall scope

The skill installs the client on the bot’s computer and asks for a passphrase once. After compaction, the bot can read a stored line back.

1. Install the plugin

Add Retayn from the Grok Bot marketplace when the listing is live. Until then, the homepage button is a placeholder. Change GROK_BOT_MARKETPLACE_HREF in /listing.js, and the same URL in the HTML, when you have the real listing.

The plugin is free. An API key for the hosted store comes from the dashboard. The free hosted tier holds 10,000 messages.

2. The skill installs the client and asks once

After the plugin is on the bot, its skill installs the Retayn client on that computer. The first run creates a passphrase, or asks you for one. It does not ask again.

The passphrase stays on the bot’s computer. Retayn never receives it. The host of that computer can. If the machine is shared or administered by someone else, they are inside the trust boundary and Retayn is not.

Keys are derived locally with PBKDF2 (600,000 iterations). Content is AES-256-GCM before upload. Keyword terms are HMAC-SHA256. Lose the passphrase and the stored ciphertext cannot be opened. There is no recovery.

3. The bot remembers

The skill writes memories with this bot’s tag and, on later turns, recalls inside the scope below. A long session can compact. The exact string is still in the store, so the bot can quote it instead of the summary.

Agent tags

A tag is a short plaintext label, up to 128 characters, stored as metadata next to the ciphertext. It is not encrypted. Pick a stable name per bot, such as grok-writer or grok-ops. The legacy untagged memories in an account are treated as the openclaw tag when a filter asks for that name.

Recall scope

Scope is set on the bot, not guessed per question. Three settings:

If the bot has no tag and you omit the setting, recall is all. self without a tag is an error.

A search can pass an agent argument to narrow inside the scope. It cannot name a bot the scope does not already allow. Automatic recall before a prompt uses the same scope.

What you will see

{
  "agent": "grok-writer",
  "recallAgents": ["grok-writer", "grok-ops"],
  "recallUntagged": false
}

That bot writes as grok-writer and may read grok-writer and grok-ops only. grok-review stays out, and so do old untagged rows.

Tools the skill can call

Other clients use the same store and the same scope fields.