uninstall-manifest-plugin
Uninstall the Manifest observability plugin from OpenClaw and reset to a local model provider. Use when the user says "/uninstall-manifest-plugin", "uninstall manifest", "remove manifest plugin", "reset openclaw to local", or wants to stop using Manifest routing and go back to direct provider access. Detects installed API keys and sets the best available model as default.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install mnfst-manifest-uninstall-manifest-plugin
Repository
Skill path: skills/uninstall-manifest-plugin
Uninstall the Manifest observability plugin from OpenClaw and reset to a local model provider. Use when the user says "/uninstall-manifest-plugin", "uninstall manifest", "remove manifest plugin", "reset openclaw to local", or wants to stop using Manifest routing and go back to direct provider access. Detects installed API keys and sets the best available model as default.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack, Backend, Integration.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: mnfst.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install uninstall-manifest-plugin into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/mnfst/manifest before adding uninstall-manifest-plugin to shared team environments
- Use uninstall-manifest-plugin for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: uninstall-manifest-plugin
description: Uninstall the Manifest observability plugin from OpenClaw and reset to a local model provider. Use when the user says "/uninstall-manifest-plugin", "uninstall manifest", "remove manifest plugin", "reset openclaw to local", or wants to stop using Manifest routing and go back to direct provider access. Detects installed API keys and sets the best available model as default.
---
# Uninstall Manifest Plugin
Reverse everything `openclaw plugins install manifest` did: remove the manifest provider, clean up auth profiles, delete local data, and set the default model to the best available provider.
## Workflow
### 1. Run the uninstall script
Execute the bundled script to perform the full cleanup:
```bash
bash skills/uninstall-manifest-plugin/scripts/uninstall_manifest.sh
```
The script removes the plugin, provider config, auth profiles, and local data, then detects available providers and restarts the gateway. Use `--dry-run` to preview changes without modifying anything.
### 2. Set the default model
Read the script output for `OUTPUT_PROVIDER` and `OUTPUT_MODEL` lines. If a provider was detected, update both the primary model and the allowlist in `~/.openclaw/openclaw.json`:
```bash
# Set detected model as primary and in the allowlist
jq --arg model "<OUTPUT_MODEL>" '
.agents.defaults.model.primary = $model
' ~/.openclaw/openclaw.json > /tmp/oc.json \
&& mv /tmp/oc.json ~/.openclaw/openclaw.json
```
**Provider priority** (first match wins):
| Provider | Env var | Default model |
|----------|---------|---------------|
| Anthropic | `ANTHROPIC_API_KEY` | `anthropic/claude-sonnet-4-6` |
| OpenAI | `OPENAI_API_KEY` | `openai/gpt-4o` |
| Google | `GOOGLE_API_KEY` or `GEMINI_API_KEY` | `google/gemini-2.5-pro` |
| DeepSeek | `DEEPSEEK_API_KEY` | `deepseek/deepseek-r1` |
| Groq | `GROQ_API_KEY` | `groq/llama-4-scout-17b` |
Config providers take precedence over env vars. If multiple exist, ask the user which to use as default.
### 3. Show status table
After running the script, show the diagnostic table:
```bash
bash skills/manifest-status/scripts/manifest_status.sh
```
Output the table exactly as printed. No extra commentary.
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### scripts/uninstall_manifest.sh
```bash
#!/usr/bin/env bash
# Uninstall the Manifest plugin from OpenClaw and reset to a local model provider.
# Usage: bash uninstall_manifest.sh [--dry-run]
set -euo pipefail
OPENCLAW_DIR="${HOME}/.openclaw"
CONFIG_FILE="${OPENCLAW_DIR}/openclaw.json"
MANIFEST_DIR="${OPENCLAW_DIR}/manifest"
EXTENSIONS_DIR="${OPENCLAW_DIR}/extensions/manifest"
AGENTS_DIR="${OPENCLAW_DIR}/agents"
DRY_RUN=false
for arg in "$@"; do
case "$arg" in
--dry-run) DRY_RUN=true ;;
esac
done
log() { echo "[uninstall-manifest] $*"; }
warn() { echo "[uninstall-manifest] WARNING: $*" >&2; }
# --- Pre-flight checks ---
if ! command -v jq &>/dev/null; then
echo "ERROR: jq is required. Install with: sudo apt install jq / brew install jq" >&2
exit 1
fi
if [[ ! -f "$CONFIG_FILE" ]]; then
echo "ERROR: OpenClaw config not found at $CONFIG_FILE" >&2
exit 1
fi
# --- Step 1: Run openclaw plugins uninstall + remove extension directory ---
log "Uninstalling manifest plugin via openclaw CLI..."
if $DRY_RUN; then
log "[dry-run] Would run: echo y | openclaw plugins uninstall manifest"
[[ -d "$EXTENSIONS_DIR" ]] && log "[dry-run] Would remove: $EXTENSIONS_DIR"
else
if command -v openclaw &>/dev/null; then
echo "y" | openclaw plugins uninstall manifest 2>/dev/null || warn "openclaw CLI uninstall failed; continuing with manual cleanup"
else
warn "openclaw CLI not found; performing manual cleanup only"
fi
# Always remove the extension directory — the CLI may skip it or fail on the prompt
if [[ -d "$EXTENSIONS_DIR" ]]; then
rm -rf "$EXTENSIONS_DIR"
log "Removed extension directory $EXTENSIONS_DIR"
fi
fi
# --- Step 2: Clean manifest provider from openclaw.json ---
log "Removing manifest provider from config..."
TEMP_CONFIG=$(mktemp)
trap 'rm -f "$TEMP_CONFIG"' EXIT
jq '
# Remove manifest from models.providers
(if .models?.providers?.manifest then del(.models.providers.manifest) else . end)
|
# Remove "manifest/auto" from agents.defaults.models (object or array format)
(if .agents?.defaults?.models then
if (.agents.defaults.models | type) == "object" then
.agents.defaults.models |= with_entries(select(.key != "manifest/auto"))
else
.agents.defaults.models = [.agents.defaults.models[] | select(. != "manifest/auto")]
end
else . end)
|
# Reset primary model if it was manifest/auto
(if .agents?.defaults?.model?.primary == "manifest/auto" then
.agents.defaults.model.primary = ""
else . end)
|
# Remove manifest plugin entry
(if .plugins?.entries?.manifest then del(.plugins.entries.manifest) else . end)
|
# Remove manifest install record
(if .plugins?.installs?.manifest then del(.plugins.installs.manifest) else . end)
' "$CONFIG_FILE" > "$TEMP_CONFIG"
if $DRY_RUN; then
log "[dry-run] Config changes:"
diff <(jq --sort-keys . "$CONFIG_FILE") <(jq --sort-keys . "$TEMP_CONFIG") || true
else
cp "$TEMP_CONFIG" "$CONFIG_FILE"
chmod 600 "$CONFIG_FILE"
log "Updated $CONFIG_FILE"
fi
# --- Step 3: Remove manifest auth profiles from all agents ---
if [[ -d "$AGENTS_DIR" ]]; then
log "Cleaning manifest auth profiles from agents..."
find "$AGENTS_DIR" -name "auth-profiles.json" -type f | while read -r profile_file; do
if jq -e '.profiles["manifest:default"]' "$profile_file" &>/dev/null; then
if $DRY_RUN; then
log "[dry-run] Would remove manifest:default from $profile_file"
else
jq 'del(.profiles["manifest:default"])' "$profile_file" > "${profile_file}.tmp"
mv "${profile_file}.tmp" "$profile_file"
chmod 600 "$profile_file"
log "Cleaned $profile_file"
fi
fi
done
fi
# --- Step 4: Remove local manifest data ---
if [[ -d "$MANIFEST_DIR" ]]; then
log "Removing local manifest data at $MANIFEST_DIR..."
if $DRY_RUN; then
log "[dry-run] Would remove: $MANIFEST_DIR"
else
rm -rf "$MANIFEST_DIR"
log "Removed $MANIFEST_DIR"
fi
fi
# --- Step 5: Detect installed API keys and suggest default model ---
log ""
log "=== Detecting installed providers ==="
DETECTED_PROVIDER=""
DETECTED_MODEL=""
# Read remaining providers from config
PROVIDERS=$(jq -r '.models.providers // {} | keys[]' "$CONFIG_FILE" 2>/dev/null || true)
# Also check common environment variables
detect_from_env() {
local name="$1" env_var="$2" model="$3"
if [[ -n "${!env_var:-}" ]]; then
log " Found $name (via \$$env_var)"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="$name"
DETECTED_MODEL="$model"
fi
fi
}
# Check config providers first (higher priority)
for provider in $PROVIDERS; do
case "$provider" in
anthropic|Anthropic)
log " Found Anthropic provider in config"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="anthropic"
DETECTED_MODEL="anthropic/claude-sonnet-4-6"
fi
;;
openai|OpenAI)
log " Found OpenAI provider in config"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="openai"
DETECTED_MODEL="openai/gpt-4o"
fi
;;
google|Google|gemini|Gemini)
log " Found Google provider in config"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="google"
DETECTED_MODEL="google/gemini-2.5-pro"
fi
;;
deepseek|DeepSeek)
log " Found DeepSeek provider in config"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="deepseek"
DETECTED_MODEL="deepseek/deepseek-r1"
fi
;;
groq|Groq)
log " Found Groq provider in config"
if [[ -z "$DETECTED_PROVIDER" ]]; then
DETECTED_PROVIDER="groq"
DETECTED_MODEL="groq/llama-4-scout-17b"
fi
;;
*)
log " Found provider: $provider"
;;
esac
done
# Fallback: check environment variables
detect_from_env "Anthropic" "ANTHROPIC_API_KEY" "anthropic/claude-sonnet-4-6"
detect_from_env "OpenAI" "OPENAI_API_KEY" "openai/gpt-4o"
detect_from_env "Google" "GOOGLE_API_KEY" "google/gemini-2.5-pro"
detect_from_env "Google" "GEMINI_API_KEY" "google/gemini-2.5-pro"
detect_from_env "DeepSeek" "DEEPSEEK_API_KEY" "deepseek/deepseek-r1"
detect_from_env "Groq" "GROQ_API_KEY" "groq/llama-4-scout-17b"
log ""
if [[ -n "$DETECTED_PROVIDER" ]]; then
log "Recommended default model: $DETECTED_MODEL"
log ""
log "OUTPUT_PROVIDER=$DETECTED_PROVIDER"
log "OUTPUT_MODEL=$DETECTED_MODEL"
else
log "No API keys detected. Configure a provider manually in $CONFIG_FILE"
log ""
log "OUTPUT_PROVIDER=none"
log "OUTPUT_MODEL=none"
fi
# --- Step 6: Restart the gateway ---
log "Restarting OpenClaw gateway..."
if $DRY_RUN; then
log "[dry-run] Would run: openclaw gateway restart"
else
if command -v openclaw &>/dev/null; then
openclaw gateway restart 2>/dev/null && log "Gateway restarted" || warn "Gateway restart failed"
else
warn "openclaw CLI not found; restart the gateway manually with: openclaw gateway restart"
fi
fi
log ""
log "Manifest plugin uninstall complete."
```