Prerequisites
Before installing Manifest, ensure you have:- OpenClaw — Version 0.5.0 or later with plugin support
- Node.js — Version 18.x or later (for npm package installation)
- Network access — For cloud mode, or port 2099 available for local mode
Installation methods
Manifest supports three installation modes:Cloud mode
Hosted dashboard at app.manifest.build with blind proxy architecture. Best for teams and multi-device access.
Local mode
Embedded server with SQLite database. All data stays on your machine. Best for privacy and offline use.
Dev mode
Connect to an external backend without API key auth. Best for plugin development and testing.
Cloud mode installation
Cloud mode sends only OpenTelemetry metadata (model, tokens, latency) to the hosted backend. Message content never leaves your machine.Create an account
Sign up at app.manifest.build to get your API key.The hosted platform provides:
- Multi-device dashboard access
- Multi-agent support with team collaboration
- Automatic model pricing updates
- Secure credential storage with AES-256-GCM encryption
Cloud mode uses Better Auth with email/password + 3 OAuth providers (Google, GitHub, Discord). Your session is valid for 30 days.
Install the plugin
Install Manifest from npm:This downloads the latest version from the npm registry and registers it with OpenClaw.What’s included:
manifestnpm package (~1.4 MB single-file bundle)- OpenTelemetry SDK (traces, metrics, logs)
- Smart routing engine with 23-dimension scoring
- Agent tools:
manifest_usage,manifest_costs,manifest_health - Embedded server (unused in cloud mode)
Configure your API key
Copy your API key from the dashboard (starts with Alternatively, set it via environment variable:The plugin reads configuration in this order:
mnfst_) and set it:~/.openclaw/openclaw.json(plugins.entries.manifest.config.apiKey)- Environment variable
MANIFEST_API_KEY
Restart the gateway
Apply configuration changes:Expected output:If you see errors, see the Troubleshooting section below.
Verify telemetry
Send a test message to your agent, then check the dashboard at app.manifest.build.You should see:
- New message in the Message Log
- Token count updated in Token Usage
- Cost added to Cost Tracking
- Agent activity in Overview
Telemetry is batched and exported every 5-30 seconds. New messages may take a moment to appear.
Local mode installation
Local mode runs an embedded NestJS server with SQLite database. All data stays on your machine — zero external dependencies.Install the plugin
Install Manifest from npm:The embedded server is included in the npm package:
dist/server.js— NestJS bootstrapdist/backend/— Compiled backend modulespublic/— Frontend dashboard assets (Vite build)
Configure local mode
Set the mode to Optional: Change the port or bind address:Default configuration:
local:mode: localport: 2099host: 127.0.0.1(localhost only)dbPath: ~/.openclaw/manifest/manifest.db(SQLite file)
Restart the gateway
Apply configuration changes:Expected output:The server starts automatically in the background. No separate process management needed.
Open the dashboard
Visit
http://127.0.0.1:2099 in your browser.What you’ll see:- Orange Dev badge in header (indicates local mode)
- Overview — Total tokens, costs, messages
- Token Usage — Input, output, cached tokens over time
- Cost Tracking — Spend per model with trend charts
- Message Log — Full conversation history with metadata
- Settings — API key rotation, agent rename, deletion
The dashboard is a SolidJS SPA served via NestJS
@nestjs/serve-static. API routes (/api/*, /otlp/*) are excluded from static file serving.Local mode internals
Under the hood, local mode:-
Generates an API key — Stored in
~/.openclaw/manifest/config.json -
Injects provider config — Writes
manifestprovider to~/.openclaw/openclaw.json -
Starts the embedded server — Runs in the same process as the OpenClaw gateway
- SQLite database at
~/.openclaw/manifest/manifest.db - TypeORM auto-runs migrations on startup
- Frontend served from
public/directory - OTLP endpoints at
/otlp/v1/traces,/otlp/v1/metrics,/otlp/v1/logs
- SQLite database at
-
Bypasses auth — In local mode,
LocalAuthGuardtrusts all loopback IPs (127.0.0.1,::1)
Dev mode installation
Dev mode connects to an external backend without API key authentication. Only use for plugin development and testing.Start the backend server
Clone the Manifest repo and start the backend:The backend runs on
http://localhost:38238 with an orange Dev badge.Install the plugin
Install Manifest from local source (for development):Or install from npm (for testing):
Configure dev mode
Point the plugin to your local backend:Dev mode sends
Authorization: Bearer dev-no-auth to the backend. The OtlpAuthGuard accepts any non-mnfst_* token from loopback IPs in local mode.Configuration reference
All configuration is stored in~/.openclaw/openclaw.json under plugins.entries.manifest.config:
| Field | Type | Default | Description |
|---|---|---|---|
mode | "cloud" | "local" | "dev" | "cloud" | Determines where telemetry is sent |
apiKey | string | "" | API key for cloud mode (starts with mnfst_) |
endpoint | string | "https://app.manifest.build/otlp" | OTLP endpoint URL |
port | number | 2099 | Port for local mode embedded server |
host | string | "127.0.0.1" | Bind address for local mode server |
Environment variables
You can override configuration via environment variables:| Variable | Overrides | Example |
|---|---|---|
MANIFEST_API_KEY | apiKey | mnfst_abc123... |
MANIFEST_ENDPOINT | endpoint | https://custom.example.com/otlp |
MANIFEST_MODE | mode | local |
MANIFEST_TELEMETRY_OPTOUT | Product analytics opt-out | 1 |
Example configurations
Upgrading
Upgrade to the latest version:- Patch (0.0.x) — Bug fixes, pricing updates
- Minor (0.x.0) — New features, backward-compatible changes
- Major (x.0.0) — Breaking changes to config or API
Check the changelog before upgrading to see what’s new.
Uninstalling
Remove the plugin:- SQLite database (
manifest.db) - Local API key (
config.json) - Any cached telemetry data
Troubleshooting
Plugin installation fails
Symptom:npm ERR! during openclaw plugins install manifest
Fixes:
- Check Node.js version:
node --version(must be 18.x or later) - Clear npm cache:
npm cache clean --force - Try manual installation:
Duplicate OTel registration error
Symptom:diagnostics-otel plugin:
Cloud mode: Connection check failed
Symptom:[manifest] Connection check failed: Unauthorized
Fixes:
-
Verify API key:
Must start with
mnfst_. - Rotate API key in dashboard if compromised
-
Check network connectivity:
Local mode: Port already in use
Symptom:-
Find the process using the port:
-
Or change the port:
Local mode: Database migration fails
Symptom:Dashboard shows no data
Symptom: Dashboard loads but all charts are empty. Fixes:- Send a test message to your agent
- Wait 30 seconds for OTLP batch export
- Check gateway logs for export errors:
- Verify agent is using a configured model (not
manifest/autowithout provider setup)
Routing not working
Symptom: All requests go to the same model despite usingmanifest/auto.
Fixes:
-
Verify model is set:
Should return
manifest/auto. -
Check provider configuration:
- Cloud mode: Dashboard → Routing → Configure provider keys
- Local mode: Dashboard → Routing → Configure provider keys
- Ensure at least one provider key is set for each tier (fast, balanced, premium)
-
Check gateway logs for routing resolution:
Need more help?
Discord community
Get live support from the team and community members.
GitHub issues
Report bugs, request features, and search existing issues.
Discussions
Ask questions and share feedback with the community.
Contributing guide
Learn how to contribute code, tests, and documentation.