|
1 | 1 | --- |
2 | 2 | name: manifest |
3 | | -description: Install and configure the Manifest observability plugin for OpenClaw agents. Use when the user wants to set up Manifest telemetry, connect an agent to Manifest, configure an API key or endpoint, troubleshoot plugin connection issues, or check if the Manifest plugin is running. |
4 | | -metadata: {"openclaw":{"requires":{"bins":["openclaw"]}}} |
| 3 | +description: Set up and use Manifest — the open-source LLM router and observability plugin for OpenClaw. Use when the user asks to install Manifest, set up cost tracking, configure LLM routing, monitor agent costs/tokens, understand what Manifest does, check Manifest status, troubleshoot the plugin, or wants to reduce OpenClaw costs. Also triggers on "manifest setup", "install manifest", "how much am I spending", "track my costs", "route to cheaper models", "manifest dashboard", "manifest help". |
5 | 4 | --- |
6 | 5 |
|
7 | | -# Manifest Setup |
| 6 | +# Manifest — LLM Router & Observability for OpenClaw |
8 | 7 |
|
9 | | -Follow these steps **in order**. Do not skip ahead. |
| 8 | +Manifest is an OpenClaw plugin that: |
10 | 9 |
|
11 | | -## Step 1 — Stop the gateway |
| 10 | +- **Routes every request** to the most cost-effective model via a 23-dimension scoring algorithm (<2ms latency) |
| 11 | +- **Tracks costs and tokens** in a real-time dashboard |
| 12 | +- **Sets limits** with email alerts and hard spending caps |
12 | 13 |
|
13 | | -Stop the gateway first to avoid hot-reload issues during configuration. |
| 14 | +## Setup (Cloud — default) |
14 | 15 |
|
15 | | -Show the user the command below and ask for confirmation before running it. |
| 16 | +Three commands, no coding: |
16 | 17 |
|
17 | 18 | ```bash |
18 | | -openclaw gateway stop |
| 19 | +openclaw plugins install manifest |
| 20 | +openclaw config set plugins.entries.manifest.config.apiKey "mnfst_YOUR_KEY" |
| 21 | +openclaw gateway restart |
19 | 22 | ``` |
20 | 23 |
|
21 | | -## Step 2 — Install the plugin |
| 24 | +Get the API key at [app.manifest.build](https://app.manifest.build) → create an account → create an agent → copy the `mnfst_*` key. |
| 25 | + |
| 26 | +After restart, the plugin auto-configures: |
| 27 | + |
| 28 | +- Registers `manifest/auto` as the default model |
| 29 | +- Injects the `manifest` provider into `~/.openclaw/openclaw.json` |
| 30 | +- Starts exporting OTLP telemetry to `app.manifest.build` |
| 31 | +- Exposes three agent tools: `manifest_usage`, `manifest_costs`, `manifest_health` |
| 32 | + |
| 33 | +Dashboard at [app.manifest.build](https://app.manifest.build). Telemetry arrives within 10-30 seconds (batched OTLP export). |
22 | 34 |
|
23 | | -Show the user the command below and ask for confirmation before running it. |
| 35 | +### Verify connection |
| 36 | + |
| 37 | +```bash |
| 38 | +openclaw manifest |
| 39 | +``` |
| 40 | + |
| 41 | +Shows: mode, endpoint reachability, auth validity, agent name. |
| 42 | + |
| 43 | +## Setup (Local — offline alternative) |
| 44 | + |
| 45 | +Use local mode only when data must never leave the machine. |
24 | 46 |
|
25 | 47 | ```bash |
26 | 48 | openclaw plugins install manifest |
| 49 | +openclaw config set plugins.entries.manifest.config.mode local |
| 50 | +openclaw gateway restart |
27 | 51 | ``` |
28 | 52 |
|
29 | | -If it fails, check that OpenClaw is installed and the CLI is available in the PATH. |
| 53 | +Dashboard opens at **http://127.0.0.1:2099**. Data stored locally in `~/.openclaw/manifest/manifest.db`. No account or API key needed. |
30 | 54 |
|
31 | | -## Step 3 — Get an API key |
| 55 | +To expose over Tailscale: `tailscale serve --bg 2099` |
32 | 56 |
|
33 | | -Ask the user: |
| 57 | +## What Manifest Answers |
34 | 58 |
|
35 | | -> To connect your agent, you need a Manifest API key. Here's how to get one: |
36 | | -> |
37 | | -> 1. Go to **https://app.manifest.build** and create an account (or sign in) |
38 | | -> 2. Once logged in, click **"Connect Agent"** to create a new agent |
39 | | -> 3. Copy the API key that starts with `mnfst_` |
40 | | -> 4. Paste it here |
| 59 | +Manifest answers these questions about your OpenClaw agents — via the dashboard or directly in-conversation via agent tools: |
41 | 60 |
|
42 | | -Wait for a key starting with `mnfst_`. If the key doesn't match, tell the user the format looks incorrect and ask them to try again. |
| 61 | +**Spending & budget** |
43 | 62 |
|
44 | | -> **Note:** Your API key will be stored in `~/.openclaw/openclaw.json` under `plugins.entries.manifest.config.apiKey`. It persists on disk until you remove it. |
| 63 | +- How much have I spent today / this week / this month? |
| 64 | +- What's my cost breakdown by model? |
| 65 | +- Which model consumes the biggest share of my budget? |
| 66 | +- Am I approaching my spending limit? |
45 | 67 |
|
46 | | -## Step 4 — Configure the plugin |
| 68 | +**Token consumption** |
47 | 69 |
|
48 | | -Show the user the command below and ask for confirmation before running it. |
| 70 | +- How many tokens has my agent used (input vs. output)? |
| 71 | +- What's my token trend compared to the previous period? |
| 72 | +- How much cache am I reading vs. writing? |
49 | 73 |
|
50 | | -```bash |
51 | | -openclaw config set plugins.entries.manifest.config.apiKey "USER_API_KEY" |
52 | | -``` |
| 74 | +**Activity & performance** |
53 | 75 |
|
54 | | -Replace `USER_API_KEY` with the actual key the user provided. |
| 76 | +- How many LLM calls has my agent made? |
| 77 | +- How long do LLM calls take (latency)? |
| 78 | +- Are there errors or rate limits occurring? What are the error messages? |
| 79 | +- Which skills/tools are running and how often? |
55 | 80 |
|
56 | | -Ask the user if they have a custom endpoint. If not, the default (`https://app.manifest.build/api/v1/otlp`) is used automatically. If they do: |
| 81 | +**Routing intelligence** |
57 | 82 |
|
58 | | -Show the user the command below and ask for confirmation before running it. |
| 83 | +- What routing tier (simple/standard/complex/reasoning) was each request assigned? |
| 84 | +- Why was a specific tier chosen? |
| 85 | +- What model pricing is available across all providers? |
59 | 86 |
|
60 | | -```bash |
61 | | -openclaw config set plugins.entries.manifest.config.endpoint "USER_ENDPOINT" |
62 | | -``` |
| 87 | +**Connectivity** |
| 88 | + |
| 89 | +- Is Manifest connected and healthy? |
| 90 | +- Is telemetry flowing correctly? |
| 91 | + |
| 92 | +## Agent Tools |
| 93 | + |
| 94 | +Three tools are available to the agent in-conversation: |
63 | 95 |
|
64 | | -## Step 5 — Start the gateway |
| 96 | +| Tool | Trigger phrases | What it returns | |
| 97 | +| ----------------- | ----------------------------------------------- | --------------------------------------------------------------------------- | |
| 98 | +| `manifest_usage` | "how many tokens", "token usage", "consumption" | Total, input, output, cache-read tokens + action count for today/week/month | |
| 99 | +| `manifest_costs` | "how much spent", "costs", "money burned" | Cost breakdown by model in USD for today/week/month | |
| 100 | +| `manifest_health` | "is monitoring working", "connectivity test" | Endpoint reachable, auth valid, agent name, status | |
65 | 101 |
|
66 | | -Show the user the command below and ask for confirmation before running it. |
| 102 | +Each accepts a `period` parameter: `"today"`, `"week"`, or `"month"`. |
| 103 | + |
| 104 | +## LLM Routing |
| 105 | + |
| 106 | +When the model is set to `manifest/auto`, the router scores each conversation across 23 dimensions and assigns one of 4 tiers: |
| 107 | + |
| 108 | +| Tier | Use case | Examples | |
| 109 | +| ------------- | --------------------------------------- | ------------------------------------------------------- | |
| 110 | +| **Simple** | Greetings, confirmations, short lookups | "hi", "yes", "what time is it" | |
| 111 | +| **Standard** | General tasks, balanced quality/cost | "summarize this", "write a test" | |
| 112 | +| **Complex** | Multi-step reasoning, nuanced analysis | "compare these architectures", "debug this stack trace" | |
| 113 | +| **Reasoning** | Formal logic, proofs, critical planning | "prove this theorem", "design a migration strategy" | |
| 114 | + |
| 115 | +Each tier maps to a model. Default models are auto-assigned per provider, but overridable in the dashboard under **Routing**. |
| 116 | + |
| 117 | +Short-circuit rules: |
| 118 | + |
| 119 | +- Messages <50 chars with no tools → **Simple** |
| 120 | +- Formal logic keywords → **Reasoning** |
| 121 | +- Tools present → floor at **Standard** |
| 122 | +- Context >50k tokens → floor at **Complex** |
| 123 | + |
| 124 | +## Dashboard Pages |
| 125 | + |
| 126 | +| Page | What it shows | |
| 127 | +| ---------------- | ----------------------------------------------------------------------------- | |
| 128 | +| **Workspace** | All connected agents as cards with sparkline activity charts | |
| 129 | +| **Overview** | Per-agent cost, tokens, messages with trend badges and time-series charts | |
| 130 | +| **Messages** | Full paginated message log with filters (status, model, cost range) | |
| 131 | +| **Routing** | 4-tier model config, provider connections, enable/disable routing | |
| 132 | +| **Limits** | Email alerts and hard spending caps (tokens or cost, per hour/day/week/month) | |
| 133 | +| **Settings** | Agent rename, delete, OTLP key management | |
| 134 | +| **Model Prices** | Sortable table of 300+ model prices across all providers | |
| 135 | + |
| 136 | +## Supported Providers |
| 137 | + |
| 138 | +Anthropic, OpenAI, Google Gemini, DeepSeek, xAI, Mistral AI, Qwen, MiniMax, Kimi, Amazon Nova, Z.ai, OpenRouter, Ollama. 300+ models total. |
| 139 | + |
| 140 | +## Uninstall |
67 | 141 |
|
68 | 142 | ```bash |
| 143 | +openclaw plugins uninstall manifest |
69 | 144 | openclaw gateway restart |
70 | 145 | ``` |
71 | 146 |
|
72 | | -## Step 6 — Verify |
| 147 | +This removes the plugin, provider config, and auth profiles. Set a new default model after uninstalling. |
73 | 148 |
|
74 | | -Wait 3 seconds for the gateway to fully start, then check the logs: |
| 149 | +## Troubleshooting |
75 | 150 |
|
76 | | -```bash |
77 | | -grep "manifest" ~/.openclaw/logs/gateway.log | tail -5 |
78 | | -``` |
| 151 | +**Telemetry not appearing**: The gateway batches OTLP data every 10-30 seconds. Wait, then check `openclaw manifest` for connection status. |
79 | 152 |
|
80 | | -Look for: |
| 153 | +**Auth errors in cloud mode**: Verify the API key starts with `mnfst_` and matches the key in the dashboard under Settings → Agent setup. |
81 | 154 |
|
82 | | -``` |
83 | | -[manifest] Observability pipeline active |
84 | | -``` |
| 155 | +**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>`. |
85 | 156 |
|
86 | | -If it appears, tell the user setup is complete. If not, check the error messages and troubleshoot. |
| 157 | +**Plugin conflicts**: Manifest conflicts with the built-in `diagnostics-otel` plugin. Disable it before enabling Manifest. |
87 | 158 |
|
88 | | -## Troubleshooting |
| 159 | +**After backend restart**: Always restart the gateway too (`openclaw gateway restart`) — the OTLP pipeline doesn't auto-reconnect. |
| 160 | + |
| 161 | +## Privacy |
89 | 162 |
|
90 | | -- **"Missing apiKey"**: Re-run step 4. |
91 | | -- **"Invalid apiKey format"**: The key must start with `mnfst_`. |
92 | | -- **Connection refused**: The endpoint is unreachable. Check the URL or ask if they self-host. |
93 | | -- **Duplicate OTel registration**: Disable the conflicting built-in plugin: `openclaw plugins disable diagnostics-otel` |
| 163 | +- **Cloud mode**: Only OpenTelemetry metadata (model, tokens, latency) is sent. Message content is never collected. The proxy physically cannot read prompts. |
| 164 | +- **Local mode**: All data stays on your machine. |
| 165 | +- **Product analytics**: Anonymous usage stats (opt out: `MANIFEST_TELEMETRY_OPTOUT=1` or `"telemetryOptOut": true` in `~/.openclaw/manifest/config.json`). |
0 commit comments