#How to create new agents?

28 messages Ā· Page 1 of 1 (latest)

serene carbon
#

I need help with setting up more agents with separate workspaces

nimble kelpBOT
#

Let me verify the exact docs path and the agent workspace config before I answer, I don't want to hand you made-up keys.

#

Yep, that’s supported.

Fastest path is:

openclaw --version
openclaw agents add work --workspace ~/.openclaw/workspace-work
openclaw agents add ops --workspace ~/.openclaw/workspace-ops
openclaw agents list --bindings

Each agent gets its own:

  • workspace
  • auth profiles
  • sessions
  • persona files (AGENTS.md, SOUL.md, etc.)
#

Then bind chats/accounts to the right agent, for example:

openclaw agents bind --agent work --bind telegram:ops
openclaw agents bind --agent ops --bind discord:default

Then restart:

openclaw gateway restart

A few important bits:

  • Don’t reuse the same agentDir across agents.
  • Separate workspace does not mean hard sandbox by itself, it’s just the default cwd. If you need real isolation, also configure sandboxing.
serene carbon
#

How to configure an OpenClaw agent to listen in a specific forum channel and have specific context per each sub-channel in the forum?

#

In the Discord I mean

nimble kelpBOT
#

I’m checking the exact Discord/forum routing behavior first, because thread inheritance and per-thread context are easy to get subtly wrong.

#

Yes, for Discord forums the usual pattern is:

  1. bind the agent to the forum parent channel
  2. let each forum post/thread keep its own session context automatically

A forum post in Discord is just a thread under the forum parent, and OpenClaw routes thread messages with parent-channel inheritance. So if you bind the parent forum channel, all child threads land on that agent, but each thread still gets its own isolated session.

Minimal shape

{
  agents: {
    list: [
      {
        id: "forum-helper",
        workspace: "~/.openclaw/workspace-forum-helper",
#
      },
    ],
  },

  bindings: [
    {
      agentId: "forum-helper",
      match: {
        channel: "discord",
        peer: { kind: "channel", id: "FORUM_PARENT_CHANNEL_ID" },
      },
    },
  ],

  channels: {
#
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "GUILD_ID": {
          channels: {
            "FORUM_PARENT_CHANNEL_ID": {
              enabled: true,
              requireMention: false,
              systemPrompt: "You help with topic X in this forum.",
              includeThreadStarter: true
            },
          },
        },
      },
    },
#
  },
}

What that gives you

  • One agent for that forum
  • Separate context per thread/post
  • Shared forum-wide context from the agent workspace / systemPrompt
  • Per-thread context from the thread history, and the thread starter if includeThreadStarter is on (default is effectively yes)

Important nuance

If by ā€œspecific context per each sub-channelā€ you mean a different static prompt/config per forum thread, Discord does not have a Telegram-style per-topic config block.

So the usual options are:

#
  • shared forum context + separate thread history ← simplest, usually enough
  • put thread-specific instructions in the thread starter post
  • for special threads, add a direct binding to that thread ID. Direct thread binding beats parent-forum binding.

Also, if you’re editing config manually, use enabled, not legacy allow.

Docs:

If you want, paste your openclaw --version plus whether you want:

  • one agent for the whole forum, or
  • different agents for different forum posts

and I’ll turn that into an exact config for your server.

#

Yep, I meant Discord forums there šŸ™‚

In Discord:

  • the forum itself = the parent channel
  • each post inside the forum = a Discord thread
  • OpenClaw can route all posts in that forum to one agent by binding the parent forum channel ID
  • each post/thread still gets separate context automatically

So for Discord specifically, the setup is:

  • allow that guild/forum under channels.discord.guilds
  • bind the agent to the forum parent channel id
  • keep includeThreadStarter: true if you want the original post to act as context

If you want, I can write you a real Discord-only config snippet if you paste:

#
  • Guild ID
  • Forum channel ID
  • whether replies should require mention or not
serene carbon
#

How to allow it to read my messages without requiring me to ping the bot?

nimble kelpBOT
#

Set requireMention: false for that Discord guild or channel.

Whole server

{
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "GUILD_ID": {
          requireMention: false
        }
      }
    }
  }
}
#

Just one channel / forum

{
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "GUILD_ID": {
          channels: {
            "CHANNEL_ID": {
              enabled: true,
              requireMention: false
            }
          }
        }
      }
#

If you want, I can turn this into the exact config for your Discord forum/channel IDs.

serene carbon
#

How to set the default model on the agent to lmstudio/openai/gpt-oss-20b?

nimble kelpBOT
#

I’m checking the exact config path/CLI for per-agent model selection, because model config has a couple of valid shapes and I don’t want to give you the wrong one.

#

If you want to set it as the global default, easiest is:

openclaw models set lmstudio/openai/gpt-oss-20b

That writes agents.defaults.model.primary.

If you want it on one specific agent, set that agent’s model override instead:

openclaw config get agents.list
openclaw config set agents.list[INDEX].model.primary "lmstudio/openai/gpt-oss-20b"

Or in config:

#
{
  agents: {
    list: [
      {
        id: "my-agent",
        model: {
          primary: "lmstudio/openai/gpt-oss-20b"
        }
      }
    ]
  }
}

Two gotchas:

serene carbon
#

When will support for Groq Compound be added?

nimble kelpBOT
#

I’m checking whether Groq Compound is already partially supported or just not wired up yet, so I don’t accidentally give you a fake timeline.

#

I don’t see a published ETA for Groq Compound specifically.

What I could verify:

  • OpenClaw already has a Groq provider and docs for normal Groq model usage.
  • I didn’t find docs or code mentioning Groq Compound by name.
  • So right now I’d treat it as not officially supported / no announced timeline.

One nuance: OpenClaw talks to Groq through the OpenAI-compatible API, so if Groq exposes Compound as a normal model on that surface, it might work with little or no OpenClaw-specific work. But if Compound needs Groq-specific orchestration semantics, then yeah, explicit support would need to be added.

Best next step if you need it soon:

Groq docs: