HomeBrowseUpload
← Back to registry
// Skill profile

Manifest — LLM Router & Observability for OpenClaw

name: manifest

by brunobuddy · published 2026-03-22

邮件处理开发工具加密货币
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:brunobuddy/brunobuddy-manifest-build
View on GitHub
// Full documentation

---

name: manifest

description: Smart LLM Router for OpenClaw. Save up to 70% by routing every request to the right model. No coding required.

metadata: {"openclaw":{"requires":{"bins":["openclaw"],"env":["MANIFEST_API_KEY"],"config":["plugins.entries.manifest.config.apiKey"]},"primaryEnv":"MANIFEST_API_KEY","homepage":"https://github.com/mnfst/manifest"}}

---

# Manifest — LLM Router & Observability for OpenClaw

Manifest is an OpenClaw plugin that:

  • **Routes every request** to the most cost-effective model via a 23-dimension scoring algorithm (<2ms latency)
  • **Tracks costs and tokens** in a real-time dashboard
  • **Sets limits** with email alerts and hard spending caps
  • Source: [github.com/mnfst/manifest](https://github.com/mnfst/manifest) — MIT licensed. Homepage: [manifest.build](https://manifest.build)

    Setup (Cloud — default)

    Three commands, no coding:

    openclaw plugins install manifest
    openclaw config set plugins.entries.manifest.config.apiKey "mnfst_YOUR_KEY"
    openclaw gateway restart

    Get the API key at [app.manifest.build](https://app.manifest.build) → create an account → create an agent → copy the `mnfst_*` key.

    After restart, the plugin auto-configures:

  • Adds `manifest/auto` to the model allowlist (does not change your current default)
  • Injects the `manifest` provider into `~/.openclaw/openclaw.json`
  • Starts exporting OTLP telemetry to `app.manifest.build`
  • Exposes three agent tools: `manifest_usage`, `manifest_costs`, `manifest_health`
  • Dashboard at [app.manifest.build](https://app.manifest.build). Telemetry arrives within 10-30 seconds (batched OTLP export).

    Verify connection

    openclaw manifest

    Shows: mode, endpoint reachability, auth validity, agent name.

    Configuration Changes

    On plugin registration, Manifest writes to these files:

    | File | Change | Reversible |

    | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------- |

    | `~/.openclaw/openclaw.json` | Adds `models.providers.manifest` provider entry; adds `manifest/auto` to `agents.defaults.models` allowlist | Yes — `openclaw plugins uninstall manifest` |

    | `~/.openclaw/agents/*/agent/auth-profiles.json` | Adds `manifest:default` auth profile | Yes — uninstall removes it |

    | `~/.openclaw/manifest/config.json` | Stores auto-generated API key (local mode only, file mode 0600) | Yes — delete `~/.openclaw/manifest/` |

    | `~/.openclaw/manifest/manifest.db` | SQLite database (local mode only) | Yes — delete the file |

    No other files are modified. The plugin does not change your current default model.

    Install Provenance

    `openclaw plugins install manifest` installs the [`manifest`](https://www.npmjs.com/package/manifest) npm package.

  • **Source**: [github.com/mnfst/manifest](https://github.com/mnfst/manifest) (`packages/openclaw-plugin/`)
  • **License**: MIT
  • **Author**: MNFST Inc.
  • Verify before installing:

    npm view manifest repository.url
    npm view manifest dist.integrity

    Setup (Local — offline alternative)

    Use local mode only when data must never leave the machine.

    openclaw plugins install manifest
    openclaw config set plugins.entries.manifest.config.mode local
    openclaw gateway restart

    Dashboard opens at **http://127.0.0.1:2099**. Data stored locally in `~/.openclaw/manifest/manifest.db`. No account or API key needed.

    To expose over Tailscale (requires Tailscale on both devices, only accessible within your Tailnet): `tailscale serve --bg 2099`

    What Manifest Answers

    Manifest answers these questions about your OpenClaw agents — via the dashboard or directly in-conversation via agent tools:

    **Spending & budget**

  • How much have I spent today / this week / this month?
  • What's my cost breakdown by model?
  • Which model consumes the biggest share of my budget?
  • Am I approaching my spending limit?
  • **Token consumption**

  • How many tokens has my agent used (input vs. output)?
  • What's my token trend compared to the previous period?
  • How much cache am I reading vs. writing?
  • **Activity & performance**

  • How many LLM calls has my agent made?
  • How long do LLM calls take (latency)?
  • Are there errors or rate limits occurring? What are the error messages?
  • Which skills/tools are running and how often?
  • **Routing intelligence**

  • What routing tier (simple/standard/complex/reasoning) was each request assigned?
  • Why was a specific tier chosen?
  • What model pricing is available across all providers?
  • **Connectivity**

  • Is Manifest connected and healthy?
  • Is telemetry flowing correctly?
  • Agent Tools

    Three tools are available to the agent in-conversation:

    | Tool | Trigger phrases | What it returns |

    | ----------------- | ----------------------------------------------- | --------------------------------------------------------------------------- |

    | `manifest_usage` | "how many tokens", "token usage", "consumption" | Total, input, output, cache-read tokens + action count for today/week/month |

    | `manifest_costs` | "how much spent", "costs", "money burned" | Cost breakdown by model in USD for today/week/month |

    | `manifest_health` | "is monitoring working", "connectivity test" | Endpoint reachable, auth valid, agent name, status |

    Each accepts a `period` parameter: `"today"`, `"week"`, or `"month"`.

    All three tools are read-only — they query the agent's own usage data and never send message content.

    LLM Routing

    When the model is set to `manifest/auto`, the router scores each conversation across 23 dimensions and assigns one of 4 tiers:

    | Tier | Use case | Examples |

    | ------------- | --------------------------------------- | ------------------------------------------------------- |

    | **Simple** | Greetings, confirmations, short lookups | "hi", "yes", "what time is it" |

    | **Standard** | General tasks, balanced quality/cost | "summarize this", "write a test" |

    | **Complex** | Multi-step reasoning, nuanced analysis | "compare these architectures", "debug this stack trace" |

    | **Reasoning** | Formal logic, proofs, critical planning | "prove this theorem", "design a migration strategy" |

    Each tier maps to a model. Default models are auto-assigned per provider, but overridable in the dashboard under **Routing**.

    Short-circuit rules:

  • Messages <50 chars with no tools → **Simple**
  • Formal logic keywords → **Reasoning**
  • Tools present → floor at **Standard**
  • Context >50k tokens → floor at **Complex**
  • Dashboard Pages

    | Page | What it shows |

    | ---------------- | ----------------------------------------------------------------------------- |

    | **Workspace** | All connected agents as cards with sparkline activity charts |

    | **Overview** | Per-agent cost, tokens, messages with trend badges and time-series charts |

    | **Messages** | Full paginated message log with filters (status, model, cost range) |

    | **Routing** | 4-tier model config, provider connections, enable/disable routing |

    | **Limits** | Email alerts and hard spending caps (tokens or cost, per hour/day/week/month) |

    | **Settings** | Agent rename, delete, OTLP key management |

    | **Model Prices** | Sortable table of 300+ model prices across all providers |

    Supported Providers

    Anthropic, OpenAI, Google Gemini, DeepSeek, xAI, Mistral AI, Qwen, MiniMax, Kimi, Amazon Nova, Z.ai, OpenRouter, Ollama. 300+ models total.

    Uninstall

    openclaw plugins uninstall manifest
    openclaw gateway restart

    This removes the plugin, provider config, and auth profiles. After uninstalling, `manifest/auto` is no longer available. If any agent uses it, switch to another model.

    Troubleshooting

    **Telemetry not appearing**: The gateway batches OTLP data every 10-30 seconds. Wait, then check `openclaw manifest` for connection status.

    **Auth errors in cloud mode**: Verify the API key starts with `mnfst_` and matches the key in the dashboard under Settings → Agent setup.

    **Port conflict in local mode**: If port 2099 is busy, the plugin checks if the existing process is Manifest and reuses it. To change the port: `openclaw config set plugins.entries.manifest.config.port <PORT>`.

    **Plugin conflicts**: Manifest conflicts with the built-in `diagnostics-otel` plugin. Disable it before enabling Manifest.

    **After backend restart**: Always restart the gateway too (`openclaw gateway restart`) — the OTLP pipeline doesn't auto-reconnect.

    Privacy

    External Endpoints

    | Endpoint | When | Data Sent |

    | ----------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------- |

    | `{endpoint}/v1/traces` | Every LLM call (batched 10-30s) | OTLP spans (see fields below) |

    | `{endpoint}/v1/metrics` | Every 10-30s | Counters: request count, token totals, tool call counts — grouped by model/provider |

    | `{endpoint}/api/v1/routing/resolve` | Only when model is `manifest/auto` | Last 10 non-system/non-developer messages (`{role, content}` only) |

    | `https://eu.i.posthog.com` | On plugin register | Hashed machine ID, OS, Node version, plugin version, mode. No PII. Opt out: `MANIFEST_TELEMETRY_OPTOUT=1` |

    OTLP Span Fields

    Exhaustive list of attributes sent per span:

  • `openclaw.session.key` — opaque session identifier
  • `openclaw.message.channel` — message channel name
  • `gen_ai.request.model` — model name (e.g. "claude-sonnet-4-20250514")
  • `gen_ai.system` — provider name (e.g. "anthropic")
  • `gen_ai.usage.input_tokens` — integer
  • `gen_ai.usage.output_tokens` — integer
  • `gen_ai.usage.cache_read_input_tokens` — integer
  • `gen_ai.usage.cache_creation_input_tokens` — integer
  • `openclaw.agent.name` — agent identifier
  • `tool.name` — tool name string
  • `tool.success` — boolean
  • `manifest.routing.tier` — routing tier (if routed)
  • `manifest.routing.reason` — routing reason (if routed)
  • Error status: agent errors truncated to 500 chars; tool errors include `event.error.message` untruncated
  • **Not collected**: user prompts, assistant responses, tool input/output arguments, file contents, or any message body.

    Routing Data

  • Only active when model is `manifest/auto`
  • Excludes messages with `role: "system"` or `role: "developer"`
  • Sends only `{role, content}` — all other message properties are stripped (`routing.ts:77`)
  • 3-second timeout, non-blocking
  • To avoid sending content: disable routing in the dashboard or set a fixed model
  • Credential Storage

  • **Cloud mode**: API key stored in `~/.openclaw/openclaw.json` under `plugins.entries.manifest.config.apiKey` (managed by OpenClaw's standard plugin config)
  • **Local mode**: auto-generated key stored in `~/.openclaw/manifest/config.json` with file mode `0600`
  • Local Mode

    All data stays on your machine. No external calls except optional PostHog analytics (opt out with `MANIFEST_TELEMETRY_OPTOUT=1`).

    // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band