Skip to main content

Profile Commands Reference

This page covers all commands related to Clawbot profiles. For general CLI commands, see CLI Commands Reference.

clawbot profile

clawbot profile <subcommand>

Top-level command for managing profiles. Running clawbot profile without a subcommand shows help.

SubcommandDescription
listList all profiles.
useSet the active (default) profile.
createCreate a new profile.
deleteDelete a profile.
showShow details about a profile.
aliasRegenerate the shell alias for a profile.
renameRename a profile.
exportExport a profile to a tar.gz archive.
importImport a profile from a tar.gz archive.
installInstall a profile distribution from a git URL or local directory. See Profile Distributions.
updateRe-pull a distribution-managed profile and re-apply its bundle.
infoShow distribution metadata for a profile (origin URL, commit, last update).

clawbot profile list

clawbot profile list

Lists all profiles. The currently active profile is marked with *.

Example:

$ clawbot profile list
default
* work
dev
personal

No options.

clawbot profile use

clawbot profile use <name>

Sets <name> as the active profile. All subsequent clawbot commands (without -p) will use this profile.

ArgumentDescription
<name>Profile name to activate. Use default to return to the base profile.

Example:

clawbot profile use work
clawbot profile use default

clawbot profile create

clawbot profile create <name> [options]

Creates a new profile.

Argument / OptionDescription
<name>Name for the new profile. Must be a valid directory name (alphanumeric, hyphens, underscores).
--cloneCopy config.yaml, .env, and SOUL.md from the current profile.
--clone-allCopy everything (config, memories, skills, sessions, state) from the current profile.
--clone-from <profile>Clone from a specific profile instead of the current one. Used with --clone or --clone-all.
--no-aliasSkip wrapper script creation.
--description "<text>"One- or two-sentence description of what this profile is good at. Used by the kanban orchestrator to route tasks based on role instead of profile name alone. Skip and add later via clawbot profile describe. Persisted in <profile_dir>/profile.yaml.

Creating a profile does not make that profile directory the default project/workspace directory for terminal commands. If you want a profile to start in a specific project, set terminal.cwd in that profile's config.yaml.

Examples:

# Blank profile — needs full setup
clawbot profile create mybot

# Clone config only from current profile
clawbot profile create work --clone

# Clone everything from current profile
clawbot profile create backup --clone-all

# Clone config from a specific profile
clawbot profile create work2 --clone --clone-from work

clawbot profile describe

clawbot profile describe [<name>] [options]

Read or set a profile's description. The description is consumed by the kanban orchestrator to route tasks based on what each profile is good at, rather than guessing from the profile name alone. Persisted in <profile_dir>/profile.yaml so it survives reboots and is shared with the gateway.

With no flags, prints the current description (or (no description set for '<name>') if empty).

Argument / OptionDescription
<name>Profile to describe. Required unless --all --auto is used.
--text "<text>"Set the description to this exact text (user-authored). Overwrites any existing description.
--autoAuto-generate a 1-2 sentence description via the auxiliary LLM, based on the profile's installed skills, configured model, and name. Configure the model under auxiliary.profile_describer in config.yaml. Auto-generated descriptions are marked description_auto: true so the dashboard can flag them for review.
--overwriteWith --auto, replace user-authored descriptions too (default: skip profiles whose description was set explicitly).
--allWith --auto, sweep every profile missing a description.

Examples:

# Read the current description
clawbot profile describe researcher

# Set it explicitly
clawbot profile describe researcher --text "Reads source code and writes findings."

# Let the LLM generate one
clawbot profile describe researcher --auto

# Fill in descriptions for every profile that doesn't have one
clawbot profile describe --all --auto

clawbot profile delete

clawbot profile delete <name> [options]

Deletes a profile and removes its shell alias.

Argument / OptionDescription
<name>Profile to delete.
--yes, -ySkip confirmation prompt.

Example:

clawbot profile delete mybot
clawbot profile delete mybot --yes
warning

This permanently deletes the profile's entire directory including all config, memories, sessions, and skills. Cannot delete the currently active profile.

clawbot profile show

clawbot profile show <name>

Displays details about a profile including its home directory, configured model, gateway status, skills count, and configuration file status.

This shows the profile's Clawbot home directory, not the terminal working directory. Terminal commands start from terminal.cwd (or the launch directory on the local backend when cwd: ".").

ArgumentDescription
<name>Profile to inspect.

Example:

$ clawbot profile show work
Profile: work
Path: ~/.clawbot/profiles/work
Model: anthropic/claude-sonnet-4 (anthropic)
Gateway: stopped
Skills: 12
.env: exists
SOUL.md: exists
Alias: ~/.local/bin/work

clawbot profile alias

clawbot profile alias <name> [options]

Regenerates the shell alias script at ~/.local/bin/<name>. Useful if the alias was accidentally deleted or if you need to update it after moving your Clawbot installation.

Argument / OptionDescription
<name>Profile to create/update the alias for.
--removeRemove the wrapper script instead of creating it.
--name <alias>Custom alias name (default: profile name).

Example:

clawbot profile alias work
# Creates/updates ~/.local/bin/work

clawbot profile alias work --name mywork
# Creates ~/.local/bin/mywork

clawbot profile alias work --remove
# Removes the wrapper script

clawbot profile rename

clawbot profile rename <old-name> <new-name>

Renames a profile. Updates the directory and shell alias.

ArgumentDescription
<old-name>Current profile name.
<new-name>New profile name.

Example:

clawbot profile rename mybot assistant
# ~/.clawbot/profiles/mybot → ~/.clawbot/profiles/assistant
# ~/.local/bin/mybot → ~/.local/bin/assistant

clawbot profile export

clawbot profile export <name> [options]

Exports a profile as a compressed tar.gz archive.

Argument / OptionDescription
<name>Profile to export.
-o, --output <path>Output file path (default: <name>.tar.gz).

Example:

clawbot profile export work
# Creates work.tar.gz in the current directory

clawbot profile export work -o ./work-2026-03-29.tar.gz

clawbot profile import

clawbot profile import <archive> [options]

Imports a profile from a tar.gz archive.

Argument / OptionDescription
<archive>Path to the tar.gz archive to import.
--name <name>Name for the imported profile (default: inferred from archive).

Example:

clawbot profile import ./work-2026-03-29.tar.gz
# Infers profile name from the archive

clawbot profile import ./work-2026-03-29.tar.gz --name work-restored

Distribution commands

tip

New to distributions? Start with the Profile Distributions user guide — it covers the why, when, and how with full examples. The sections below are a dry CLI reference for when you know what you want.

Distributions turn a profile into a shareable, versioned artifact published as a git repository. A recipient installs the distribution with a single command and can update it in place later without touching their local memories, sessions, or credentials.

auth.json and .env are never part of a distribution — they stay on the installing user's machine.

The recipient's user data (memories, sessions, auth, their own edits to .env) is always preserved across the initial install and subsequent updates.

info

clawbot profile export / import are still the right commands for local backup and restore of a profile on your own machine. Distribution (install / update / info) is a separate concept: ship a profile via git so someone else can install it.

clawbot profile install

clawbot profile install <source> [--name <name>] [--alias] [--force] [--yes]

Installs a profile distribution from a git URL or a local directory.

OptionDescription
<source>Git URL (github.com/user/repo, https://..., git@..., ssh://, git://) or a local directory containing distribution.yaml at its root.
--name NAMEOverride the profile name from the manifest.
--aliasAlso create a shell wrapper (e.g. telemetryclawbot -p telemetry).
--forceOverwrite an existing profile of the same name. User data is still preserved.
-y, --yesSkip the manifest-preview confirmation prompt.

The installer shows the manifest, lists required env vars, and warns about cron jobs before asking for confirmation. Required env vars go into a .env.EXAMPLE file you copy to .env and fill in.

Examples:

# Install from a GitHub repo (shorthand)
clawbot profile install github.com/kyle/telemetry-distribution --alias

# Install from a full HTTPS git URL
clawbot profile install https://github.com/kyle/telemetry-distribution.git

# Install from SSH
clawbot profile install git@github.com:kyle/telemetry-distribution.git

# Install from a local directory during development
clawbot profile install ./telemetry/

clawbot profile update

clawbot profile update <name> [--force-config] [--yes]

Re-clones the distribution from its recorded source and applies updates. Distribution-owned files (SOUL.md, skills/, cron/, mcp.json) are overwritten; user data (memories, sessions, auth, .env) is never touched.

config.yaml is preserved by default to keep your local overrides. Pass --force-config to reset it to the distribution's shipped config.

clawbot profile info

clawbot profile info <name>

Prints the profile's distribution manifest — name, version, required Clawbot version, author, env var requirements, the source URL/path, and the Installed: timestamp recorded when the distribution was last install-ed or update-d. Useful for checking what a shared profile needs before installing it, and for spotting "this profile was installed 6 months ago and hasn't been updated."

clawbot profile list also shows the distribution name and version in a Distribution column, and clawbot profile show <name> / delete <name> surface the source URL so you can tell at a glance which profiles came from a git repo vs. were created locally.

Private distributions

A private git repository works as a distribution source with no extra configuration — the install shells out to your normal git binary, so whatever authentication your shell is already set up for (SSH key, git credential helper, GitHub CLI's stored HTTPS credentials) applies transparently.

# Uses your SSH key, the same as any other `git clone`
clawbot profile install git@github.com:your-org/internal-assistant.git

# Uses your git credential helper
clawbot profile install https://github.com/your-org/internal-assistant.git

If a clone prompts for credentials interactively in your terminal during install, that prompt flows through. Set up your auth the way you'd normally use git clone against the same repo first, then install.

Distribution manifest (distribution.yaml)

Every distribution has a distribution.yaml at the root of its repository:

name: telemetry
version: 0.1.0
description: "Compliance monitoring harness"
clawbot_requires: ">=0.12.0"
author: Aayush Soam <thakurrajeevsoam@gmail.com> (https://github.com/aayushsoam)
license: "MIT"
env_requires:
- name: OPENAI_API_KEY
description: "OpenAI API key"
required: true
- name: GRAPHITI_MCP_URL
description: "Memory graph URL"
required: false
default: "http://127.0.0.1:8000/sse"
distribution_owned: # optional; defaults to SOUL.md, config.yaml,
# mcp.json, skills/, cron/, distribution.yaml
- SOUL.md
- skills/compliance/
- cron/

clawbot_requires supports >=, <=, ==, !=, >, <, or a bare version (treated as >=). Install fails with a clear error if the current Clawbot version doesn't satisfy the spec.

distribution_owned is optional. If set, only those paths are replaced on update; anything else in the profile stays user-owned. If omitted, the defaults above apply.

Publishing a distribution

Authoring a distribution is just a git push:

  1. In your profile directory, create distribution.yaml with at least name and version.
  2. Initialize a git repo (or use an existing one) and push to GitHub / GitLab / any host Clawbot can clone from.
  3. Tell recipients to run clawbot profile install <your-repo-url>.

Use git tags for versioned releases — recipients who clone HEAD get your latest state, and you can always bump version: in the manifest.

clawbot -p / clawbot --profile

clawbot -p <name> <command> [options]
clawbot --profile <name> <command> [options]

Global flag to run any Clawbot command under a specific profile without changing the sticky default. This overrides the active profile for the duration of the command.

OptionDescription
-p <name>, --profile <name>Profile to use for this command.

Examples:

clawbot -p work chat -q "Check the server status"
clawbot --profile dev gateway start
clawbot -p personal skills list
clawbot -p work config edit

clawbot completion

clawbot completion <shell>

Generates shell completion scripts. Includes completions for profile names and profile subcommands.

ArgumentDescription
<shell>Shell to generate completions for: bash, zsh, or fish.

Examples:

# Install completions
clawbot completion bash >> ~/.bashrc
clawbot completion zsh >> ~/.zshrc
clawbot completion fish > ~/.config/fish/completions/clawbot.fish

# Reload shell
source ~/.bashrc

After installation, tab completion works for:

  • clawbot profile <TAB> — subcommands (list, use, create, etc.)
  • clawbot profile use <TAB> — profile names
  • clawbot -p <TAB> — profile names

See also