DashClaw platform expert for integration, troubleshooting, and governance. Snapshot-based — prefer live queries via `python -m livingcode query`, or `GET {ba...
---
name: dashclaw-platform-intelligence
description: DashClaw platform expert for integration, troubleshooting, and governance. Snapshot-based — prefer live queries via `python -m livingcode query`, or `GET {baseUrl}/api/doctor` when Python/livingcode/the repo are unavailable.
---
# DashClaw Platform Intelligence
**Shape snapshot:** `sha1:22c84d9f7ccd4188bead232ffdde419e68578ba3`
**This file is auto-generated.** Do not edit by hand — regenerate with:
```bash
python -m livingcode emit skill --output <path-to-SKILL.md>
```
## Prefer Live Queries
The facts below are a snapshot. Before answering any question about DashClaw's current
structure, routes, env vars, or schema — run a live query:
```bash
python -m livingcode query summary # High-level shape
python -m livingcode query routes # Current API surface
python -m livingcode query env # Current env vars
python -m livingcode query tables # Current schema
python -m livingcode query all --json # Full machine-readable shape
```
If the snapshot below disagrees with a live query, **trust the live query**.
### Fallback: no Python, livingcode, or repo checkout
`python -m livingcode` only works where the livingcode package and the repo
checkout are present (e.g. a developer machine). In OpenClaw / the Claude app
neither exists. When you cannot run the queries above, fall back **in this order**:
1. **`GET {baseUrl}/api/doctor`** — live route/shape health straight from the running
instance. Requires the workspace API key (`x-api-key: <key>`); returns 401/403
without it. This is the authoritative live source when the CLI is unavailable.
2. **Read the committed static shape** if a repo checkout is reachable:
`app/lib/doctor/generated/shape.json` (full machine-readable shape) and
`docs/api-inventory.json` (route inventory). These are regenerated on every
`npm run livingcode:refresh`, so they track the same facts the queries return.
3. **Otherwise, treat the snapshot in this SKILL.md as authoritative** — it is the
best available source when neither the API nor the repo can be reached.
## At a Glance
- **226** active API routes across **57** categories
- **4** required + **137** optional environment variables
- **89** database tables
## API Surface
### `actions`
- `DELETE, GET, POST` `/api/actions`
- `GET, PATCH` `/api/actions/[actionId]`
- `GET` `/api/actions/[actionId]/artifacts`
- `GET` `/api/actions/[actionId]/graph`
- `GET` `/api/actions/[actionId]/messages`
- `GET, POST` `/api/actions/[actionId]/outcome`
- `GET` `/api/actions/[actionId]/trace`
- `GET` `/api/actions/costs`
- `GET, POST` `/api/actions/loops`
- `GET, PATCH` `/api/actions/loops/[loopId]`
- `GET` `/api/actions/stats`
### `activity`
- `GET` `/api/activity`
### `admin`
- `POST` `/api/admin/trigger-outcome-sweep`
### `agents`
- `GET` `/api/agents`
- `GET` `/api/agents/[agentId]`
- `GET` `/api/agents/[agentId]/profile`
- `GET, POST` `/api/agents/connections`
- `POST` `/api/agents/heartbeat`
### `analytics`
- `GET` `/api/analytics`
### `approvals`
- `POST` `/api/approvals/[actionId]`
### `artifacts`
- `GET, POST` `/api/artifacts`
- `DELETE, GET` `/api/artifacts/[artifactId]`
- `POST` `/api/artifacts/evidence-bundle`
### `assumptions`
- `GET, POST` `/api/assumptions`
- `GET, PATCH` `/api/assumptions/[assumptionId]`
### `auth`
- `-` `/api/auth/[...nextauth]`
- `GET` `/api/auth/config`
- `DELETE, POST` `/api/auth/local`
### `behavior`
- `GET, POST` `/api/behavior/recorder`
- `GET` `/api/behavior/samples`
- `POST` `/api/behavior/simulate`
- `GET, POST` `/api/behavior/suggestions`
### `billing`
- `POST` `/api/billing/checkout`
- `GET` `/api/billing/portal`
### `capabilities`
- `GET, POST` `/api/capabilities`
- `DELETE, GET, PATCH` `/api/capabilities/[capabilityId]`
- `GET, POST` `/api/capabilities/[capabilityId]/access`
- `DELETE` `/api/capabilities/[capabilityId]/access/[ruleId]`
- `GET` `/api/capabilities/[capabilityId]/access/check`
- `GET` `/api/capabilities/[capabilityId]/health`
- `GET` `/api/capabilities/[capabilityId]/history`
- `POST` `/api/capabilities/[capabilityId]/invoke`
- `POST` `/api/capabilities/[capabilityId]/test`
- `GET` `/api/capabilities/health`
### `code-sessions`
- `GET` `/api/code-sessions/alerts`
- `POST` `/api/code-sessions/alerts/read-all`
- `POST` `/api/code-sessions/ingest-jsonl`
- `POST` `/api/code-sessions/ingest-live`
- `GET` `/api/code-sessions/manifests/[manifestId]`
- `GET` `/api/code-sessions/memos`
- `POST` `/api/code-sessions/memos/regenerate`
- `GET` `/api/code-sessions/projects`
- `GET` `/api/code-sessions/projects/[projectId]/sessions`
- `GET` `/api/code-sessions/sessions/[sessionId]`
- `GET` `/api/code-sessions/sessions/[sessionId]/autopsy`
- `GET` `/api/code-sessions/sessions/[sessionId]/insights`
- `POST` `/api/code-sessions/sessions/[sessionId]/optimal-files/manifest`
- `POST` `/api/code-sessions/sessions/[sessionId]/optimal-files/merge-preview`
- `POST` `/api/code-sessions/sessions/[sessionId]/optimal-files/preview`
- `GET` `/api/code-sessions/subagent-roi`
### `compliance`
- `GET` `/api/compliance/evidence`
- `GET, POST` `/api/compliance/exports`
- `DELETE, GET` `/api/compliance/exports/[exportId]`
- `GET` `/api/compliance/exports/[exportId]/download`
- `GET` `/api/compliance/frameworks`
- `GET` `/api/compliance/gaps`
- `GET` `/api/compliance/map`
- `GET` `/api/compliance/report`
- `GET, POST` `/api/compliance/schedules`
- `DELETE, PATCH` `/api/compliance/schedules/[scheduleId]`
- `GET` `/api/compliance/trends`
### `cron`
- `GET` `/api/cron/code-session-cache-crater`
- `GET` `/api/cron/code-session-weekly-memo`
- `GET` `/api/cron/integration-health`
- `GET` `/api/cron/jti-sweep`
- `GET` `/api/cron/learning-episodes-backfill`
- `GET` `/api/cron/learning-recommendations`
- `GET` `/api/cron/memory-maintenance`
- `GET` `/api/cron/outcome-sweep`
- `GET` `/api/cron/policy-suggestions`
- `GET` `/api/cron/reset-meters`
- `POST` `/api/cron/routing-maintenance`
- `GET` `/api/cron/signals`
### `discord`
- `POST` `/api/discord/interactions`
### `docs`
- `GET` `/api/docs/raw`
### `doctor`
- `GET` `/api/doctor`
- `POST` `/api/doctor/fix`
### `drift`
- `GET, POST` `/api/drift/alerts`
- `DELETE, PATCH` `/api/drift/alerts/[alertId]`
- `GET` `/api/drift/metrics`
- `GET` `/api/drift/snapshots`
- `GET` `/api/drift/stats`
### `evaluations`
- `GET, POST` `/api/evaluations`
- `GET, POST` `/api/evaluations/runs`
- `GET, PATCH` `/api/evaluations/runs/[runId]`
- `GET, POST` `/api/evaluations/scorers`
- `DELETE, PATCH` `/api/evaluations/scorers/[scorerId]`
- `POST` `/api/evaluations/scorers/preview`
- `GET` `/api/evaluations/stats`
### `guard`
- `GET, POST` `/api/guard`
- `GET` `/api/guard/decisions`
### `handoffs`
- `GET, POST` `/api/handoffs`
- `GET` `/api/handoffs/[id]`
- `POST` `/api/handoffs/[id]/consume`
- `GET` `/api/handoffs/latest`
### `health`
- `GET` `/api/health`
### `hosted`
- `POST` `/api/hosted/cleanup`
- `GET, POST` `/api/hosted/workspaces`
- `DELETE, GET` `/api/hosted/workspaces/[workspaceId]`
### `identities`
- `GET, POST` `/api/identities`
- `DELETE` `/api/identities/[agentId]`
### `integrations`
- `GET` `/api/integrations/health`
- `POST` `/api/integrations/health/refresh`
### `integrity`
- `GET` `/api/integrity/jwks`
- `POST` `/api/integrity/verify`
### `invite`
- `GET, POST` `/api/invite/[token]`
### `keys`
- `DELETE, GET, POST` `/api/keys`
- `GET` `/api/keys/reveal`
### `knowledge`
- `GET, POST` `/api/knowledge/collections`
- `DELETE, GET, PATCH` `/api/knowledge/collections/[collectionId]`
- `GET, POST` `/api/knowledge/collections/[collectionId]/items`
- `POST` `/api/knowledge/collections/[collectionId]/search`
- `POST` `/api/knowledge/collections/[collectionId]/sync`
### `learning`
- `GET, POST` `/api/learning`
- `GET, POST` `/api/learning/analytics/curves`
- `GET` `/api/learning/analytics/maturity`
- `GET` `/api/learning/analytics/summary`
- `GET, POST` `/api/learning/analytics/velocity`
- `GET` `/api/learning/code-signals`
- `GET` `/api/learning/lessons`
- `GET, POST` `/api/learning/recommendations`
- `PATCH` `/api/learning/recommendations/[recommendationId]`
- `POST` `/api/learning/recommendations/events`
- `GET` `/api/learning/recommendations/metrics`
- `GET, POST` `/api/learning/suggestions`
### `marketing`
- `POST` `/api/marketing/event`
### `mcp`
- `POST` `/api/mcp`
### `messages`
- `GET, PATCH, POST` `/api/messages`
- `GET` `/api/messages/attachments`
- `GET, PATCH, POST` `/api/messages/threads`
- `GET` `/api/messages/threads/[threadId]`
### `model-strategies`
- `GET, POST` `/api/model-strategies`
- `DELETE, GET, PATCH` `/api/model-strategies/[strategyId]`
- `POST` `/api/model-strategies/[strategyId]/complete`
### `oauth`
- `GET, POST` `/api/oauth/authorize`
- `GET` `/api/oauth/metadata/authorization-server`
- `GET` `/api/oauth/metadata/protected-resource`
- `POST` `/api/oauth/register`
- `POST` `/api/oauth/token`
### `operations`
- `GET` `/api/operations/feed`
- `GET` `/api/operations/summary`
### `orgs`
- `GET, POST` `/api/orgs`
- `GET, PATCH` `/api/orgs/[orgId]`
- `DELETE, GET, POST` `/api/orgs/[orgId]/keys`
### `pairings`
- `GET, POST` `/api/pairings`
- `GET, PATCH` `/api/pairings/[pairingId]`
- `POST` `/api/pairings/[pairingId]/approve`
### `policies`
- `DELETE, GET, PATCH, POST` `/api/policies`
- `POST` `/api/policies/generate`
- `POST` `/api/policies/import`
- `GET` `/api/policies/proof`
- `POST` `/api/policies/simulate`
- `GET` `/api/policies/templates`
- `POST` `/api/policies/test`
### `prompts`
- `GET` `/api/prompts/agent-connect/raw`
- `POST` `/api/prompts/render`
- `GET` `/api/prompts/runs`
- `GET` `/api/prompts/sdk-coverage/raw`
- `GET` `/api/prompts/server-setup/raw`
- `GET` `/api/prompts/stats`
- `GET, POST` `/api/prompts/templates`
- `DELETE, GET, PATCH` `/api/prompts/templates/[templateId]`
- `GET, POST` `/api/prompts/templates/[templateId]/versions`
- `GET, POST` `/api/prompts/templates/[templateId]/versions/[versionId]`
### `scoring`
- `POST` `/api/scoring/calibrate`
- `GET, POST` `/api/scoring/profiles`
- `DELETE, GET, PATCH` `/api/scoring/profiles/[profileId]`
- `POST` `/api/scoring/profiles/[profileId]/dimensions`
- `DELETE, PATCH` `/api/scoring/profiles/[profileId]/dimensions/[dimensionId]`
- `GET, POST` `/api/scoring/risk-templates`
- `DELETE, PATCH` `/api/scoring/risk-templates/[templateId]`
- `GET, POST` `/api/scoring/score`
### `secrets`
- `GET, POST` `/api/secrets`
- `DELETE, PATCH` `/api/secrets/[id]`
- `GET` `/api/secrets/rotation-due`
### `security`
- `GET, POST` `/api/security/prompt-injection`
- `POST` `/api/security/scan`
- `GET` `/api/security/status`
### `session`
- `GET` `/api/session/effective`
### `sessions`
- `GET, POST` `/api/sessions`
- `GET, PATCH` `/api/sessions/[sessionId]`
- `GET` `/api/sessions/[sessionId]/events`
### `settings`
- `DELETE, GET, POST` `/api/settings`
- `GET` `/api/settings/llm-status`
- `POST` `/api/settings/test`
### `setup`
- `POST` `/api/setup/live-proof`
- `POST` `/api/setup/migrate`
- `POST` `/api/setup/ping`
- `GET` `/api/setup/proof`
- `GET` `/api/setup/status`
### `signals`
- `GET` `/api/signals`
### `skills`
- `POST` `/api/skills/scan`
- `GET` `/api/skills/scans/[id]`
### `stream`
- `GET` `/api/stream`
### `swarm`
- `GET` `/api/swarm/graph`
- `GET` `/api/swarm/link`
### `team`
- `GET` `/api/team`
- `DELETE, PATCH` `/api/team/[userId]`
- `DELETE, GET, POST` `/api/team/invite`
### `telegram`
- `POST` `/api/telegram/webhook`
### `usage`
- `GET` `/api/usage`
- `GET` `/api/usage/costs`
### `webhooks`
- `DELETE, GET, POST` `/api/webhooks`
- `GET` `/api/webhooks/[webhookId]/deliveries`
- `POST` `/api/webhooks/[webhookId]/test`
- `POST` `/api/webhooks/stripe`
### `workflows`
- `POST` `/api/workflows/draft`
- `GET, POST` `/api/workflows/templates`
- `DELETE, GET, PATCH` `/api/workflows/templates/[templateId]`
- `POST` `/api/workflows/templates/[templateId]/duplicate`
- `POST` `/api/workflows/templates/[templateId]/execute`
- `POST` `/api/workflows/templates/[templateId]/launch`
- `GET` `/api/workflows/templates/[templateId]/runs`
- `GET` `/api/workflows/templates/[templateId]/runs/[runActionId]`
- `POST` `/api/workflows/templates/[templateId]/runs/[runActionId]/cancel`
- `POST` `/api/workflows/templates/[templateId]/runs/[runActionId]/resume`
## Required Environment Variables
These must be set — DashClaw will fail to start without them.
- **`DASHCLAW_API_KEY`** - referenced in 56 file(s)
- **`DATABASE_URL`** - referenced in 87 file(s)
- **`ENCRYPTION_KEY`** - referenced in 4 file(s)
- **`NEXTAUTH_SECRET`** - referenced in 5 file(s)
## Optional Environment Variables
These have fallbacks or only activate specific features.
- `AGENT_ONLINE_WINDOW_MS` *(undocumented)*
- `AGENT_PRIVATE_KEY` *(undocumented)*
- `AGENT_PRIVATE_KEY_JWK` *(undocumented)*
- `ALERT_FROM_EMAIL` *(undocumented)*
- `ALLOWED_ORIGIN` *(undocumented)*
- `ANTHROPIC_API_KEY` *(undocumented)*
- `ANTHROPIC_MODEL` *(undocumented)*
- `API_INVENTORY_VERIFIED_DATE` *(undocumented)*
- `API_SECRET` *(undocumented)*
- `BASE_URL` *(undocumented)*
- `CI` *(undocumented)*
- `CONVERGENCE_BENCH_CONCURRENCY` *(undocumented)*
- `CONVERGENCE_BENCH_ITERATIONS` *(undocumented)*
- `CONVERGENCE_REPLAY_CONNECT_TIMEOUT_MS` *(undocumented)*
- `CONVERGENCE_RETRY_429_MAX` *(undocumented)*
- `CONVERGENCE_RETRY_429_WAIT_MS` *(undocumented)*
- `CONVERGENCE_SSE_SEND_COUNT` *(undocumented)*
- `CONVERGENCE_VERBOSE` *(undocumented)*
- `CRON_SECRET` *(undocumented)*
- `DASHCLAW_ACT_BINDING` *(undocumented)*
- `DASHCLAW_ACT_BINDING_TYP` *(undocumented)*
- `DASHCLAW_AGENT_ID` *(undocumented)*
- `DASHCLAW_ALERTS_DISCORD` *(undocumented)*
- `DASHCLAW_ALERTS_TELEGRAM` *(undocumented)*
- `DASHCLAW_ALLOWED_ISSUER` *(undocumented)*
- `DASHCLAW_API_KEY_ORG` *(undocumented)*
- `DASHCLAW_BASE_URL` *(undocumented)*
- `DASHCLAW_BEHAVIOR_SAMPLES_DIR` *(undocumented)*
- `DASHCLAW_BEHAVIOR_SAMPLES_ENABLED` *(undocumented)*
- `DASHCLAW_CLOSED_ENROLLMENT` *(undocumented)*
- `DASHCLAW_DB_DRIVER` *(undocumented)*
- `DASHCLAW_DB_POOL_MAX` *(undocumented)*
- `DASHCLAW_DISABLE_RATE_LIMIT` *(undocumented)*
- `DASHCLAW_GUARD_FALLBACK` *(undocumented)*
- `DASHCLAW_GUARD_UNAVAILABLE_POLICY` *(undocumented)*
- `DASHCLAW_HOSTED` *(undocumented)*
- `DASHCLAW_JTI_MAX_TTL_SECONDS` *(undocumented)*
- `DASHCLAW_JTI_REPLAY_PROTECTION` *(undocumented)*
- `DASHCLAW_JWT_AUDIENCE` *(undocumented)*
- `DASHCLAW_LOCAL_ADMIN_PASSWORD` *(undocumented)*
- `DASHCLAW_MAX_ORG_ATTACHMENT_BYTES` *(undocumented)*
- `DASHCLAW_MODE` *(undocumented)*
- `DASHCLAW_NEW_CONNECT_WEBHOOK` *(undocumented)*
- `DASHCLAW_PAIRING_TTL_MINUTES` *(undocumented)*
- `DASHCLAW_RATE_LIMIT_MAX` *(undocumented)*
- `DASHCLAW_RATE_LIMIT_WINDOW_MS` *(undocumented)*
- `DASHCLAW_SIGNING_KEY_JWK` *(undocumented)*
- `DASHCLAW_URL` *(undocumented)*
- `DISABLE_PROMPT_INJECTION_SCAN` *(undocumented)*
- `DISCORD_APPROVER_ORG_ID` *(undocumented)*
- `DISCORD_APPROVER_USER_ID` *(undocumented)*
- `DISCORD_BOT_TOKEN` *(undocumented)*
- `DISCORD_PUBLIC_KEY` *(undocumented)*
- `ENFORCE_AGENT_SIGNATURES` *(undocumented)*
- `GITHUB_CLIENT_ID` *(undocumented)*
- `GITHUB_CLIENT_SECRET` *(undocumented)*
- `GITHUB_ID` *(undocumented)*
- `GITHUB_REPO_NAME` *(undocumented)*
- `GITHUB_REPO_OWNER` *(undocumented)*
- `GITHUB_SECRET` *(undocumented)*
- `GITHUB_TOKEN` *(undocumented)*
- `GOOGLE_AI_API_KEY` *(undocumented)*
- `GOOGLE_CLIENT_ID` *(undocumented)*
- `GOOGLE_CLIENT_SECRET` *(undocumented)*
- `GOOGLE_ID` *(undocumented)*
- `GOOGLE_SECRET` *(undocumented)*
- `GUARD_LLM_BASE_URL` *(undocumented)*
- `GUARD_LLM_KEY` *(undocumented)*
- `GUARD_LLM_MODEL` *(undocumented)*
- `GUARD_WEBHOOK_SECRET` *(undocumented)*
- `HOSTED_CLEANUP_SECRET` *(undocumented)*
- `HOSTED_PROVISION_MAX_PER_IP_PER_DAY` *(undocumented)*
- `HOSTED_SMOKE_BASE_URL` *(undocumented)*
- `HOSTED_TRIAL_ACTION_CAP` *(undocumented)*
- `HOSTED_TRIAL_DAYS` *(undocumented)*
- `INTEGRATION_DATABASE_URL` *(undocumented)*
- `MOONSHOT_API_KEY` *(undocumented)*
- `NEXTAUTH_URL`
- `NEXT_PUBLIC_` *(undocumented)*
- `NEXT_PUBLIC_APP_URL` *(undocumented)*
- `NEXT_PUBLIC_DASHCLAW_MODE` *(undocumented)*
- `NEXT_PUBLIC_DASHCLAW_VERSION` *(undocumented)*
- `NEXT_PUBLIC_ENABLE_VERCEL_ANALYTICS` *(undocumented)*
- `NEXT_PUBLIC_PLUGIN_MANIFEST_VERSION` *(undocumented)*
- `NEXT_PUBLIC_SDK_NODE_VERSION` *(undocumented)*
- `NEXT_PUBLIC_SDK_PYTHON_VERSION` *(undocumented)*
- `NEXT_PUBLIC_TURNSTILE_SITE_KEY` *(undocumented)*
- `NODE_ENV` *(undocumented)*
- `OIDC_AUTHORIZATION_URL` *(undocumented)*
- `OIDC_CLIENT_ID` *(undocumented)*
- `OIDC_CLIENT_SECRET` *(undocumented)*
- `OIDC_DISPLAY_NAME` *(undocumented)*
- `OIDC_ISSUER_URL` *(undocumented)*
- `OIDC_TOKEN_URL` *(undocumented)*
- `OIDC_USERINFO_URL` *(undocumented)*
- `OPENAI_API_KEY` *(undocumented)*
- `ORG_ID` *(undocumented)*
- `PORT` *(undocumented)*
- `PW_BASE_URL` *(undocumented)*
- `PW_SMOKE_PORT` *(undocumented)*
- `PYTHON` *(undocumented)*
- `PYTHONPATH` *(undocumented)*
- `REALTIME_BACKEND` *(undocumented)*
- `REALTIME_ENFORCE_REDIS` *(undocumented)*
- `REALTIME_MAX_LISTENERS` *(undocumented)*
- `REALTIME_MEMORY_MAX_LISTENERS` *(undocumented)*
- `REALTIME_REDIS_URL` *(undocumented)*
- `REALTIME_REPLAY_MAX_EVENTS` *(undocumented)*
- `REALTIME_REPLAY_WINDOW_SECONDS` *(undocumented)*
- `REDIS_URL` *(undocumented)*
- `RESEARCH_API_KEY` *(undocumented)*
- `RESEARCH_API_URL` *(undocumented)*
- `RESEND_API_KEY` *(undocumented)*
- `S` *(undocumented)*
- `SERVICE_NAME` *(undocumented)*
- `STARTUP_SMOKE_BASE_URL` *(undocumented)*
- `STARTUP_SMOKE_INTERVAL_MS` *(undocumented)*
- `STARTUP_SMOKE_TIMEOUT_MS` *(undocumented)*
- `STRIPE_PRICE_BUSINESS` *(undocumented)*
- `STRIPE_PRICE_PRO` *(undocumented)*
- `STRIPE_SECRET_KEY` *(undocumented)*
- `STRIPE_WEBHOOK_SECRET` *(undocumented)*
- `TARGET_ENV` *(undocumented)*
- `TELEGRAM_ADMIN_CHAT_ID` *(undocumented)*
- `TELEGRAM_APPROVER_ORG_ID` *(undocumented)*
- `TELEGRAM_BOT_TOKEN` *(undocumented)*
- `TELEGRAM_WEBHOOK_SECRET` *(undocumented)*
- `TEST_BASE_URL` *(undocumented)*
- `TRUST_PROXY` *(undocumented)*
- `TURNSTILE_SECRET_KEY` *(undocumented)*
- `UPSTASH_REDIS_REST_TOKEN` *(undocumented)*
- `UPSTASH_REDIS_REST_URL` *(undocumented)*
- `VERCEL` *(undocumented)*
- `VERCEL_PROJECT_PRODUCTION_URL` *(undocumented)*
- `VERCEL_URL` *(undocumented)*
- `WEBHOOK_ALLOWED_DOMAINS` *(undocumented)*
- `X` *(undocumented)*
## Database Tables
All 89 tables defined in `schema/schema.js` (Drizzle ORM):
- `action_embeddings`
- `action_records`
- `activity_logs`
- `agent_connections`
- `agent_identities`
- `agent_messages`
- `agent_pairings`
- `agent_presence`
- `agent_schedules`
- `agent_sessions`
- `api_keys`
- `assumptions`
- `calendar_events`
- `code_optimal_file_manifests`
- `code_projects`
- `code_session_alerts`
- `code_session_handoffs`
- `code_session_memos`
- `code_session_messages`
- `code_session_signals`
- `code_session_tool_uses`
- `code_sessions`
- `compliance_snapshots`
- `contacts`
- `content`
- `context_entries`
- `context_points`
- `daily_totals`
- `decisions`
- `drift_alerts`
- `drift_baselines`
- `drift_snapshots`
- `entities`
- `eval_runs`
- `eval_scores`
- `executions`
- `feedback`
- `goals`
- `governed_secrets`
- `guard_decisions`
- `guard_policies`
- `guardrails_test_runs`
- `health_snapshots`
- `ideas`
- `interactions`
- `jwt_replay_log`
- `learning_curves`
- `learning_episodes`
- `learning_recommendation_events`
- `learning_recommendations`
- `learning_velocity`
- `message_threads`
- `milestones`
- `notification_preferences`
- `oauth_access_tokens`
- `oauth_authorization_codes`
- `oauth_clients`
- `open_loops`
- `organizations`
- `profile_scores`
- `prompt_runs`
- `prompt_templates`
- `prompt_versions`
- `risk_templates`
- `routing_agent_metrics`
- `routing_agents`
- `routing_decisions`
- `routing_tasks`
- `scheduled_jobs`
- `scoring_dimensions`
- `scoring_profiles`
- `server_signing_keys`
- `session_events`
- `shared_docs`
- `skill_scan_results`
- `snippets`
- `token_budgets`
- `token_snapshots`
- `topics`
- `usage_meters`
- `user_approaches`
- `user_moods`
- `user_observations`
- `user_preferences`
- `users`
- `waitlist`
- `webhook_deliveries`
- `webhooks`
- `workflows`
## Configuration Knobs
Per-org settings stored in the `settings` table. Set via `PUT /api/settings/:key` or the web Settings/Integrations UI. Keys marked sensitive are auto-encrypted at rest.
### AI Providers
- `OPENAI_API_KEY`
- `OPENAI_ORG_ID`
- `ANTHROPIC_API_KEY`
- `GROQ_API_KEY`
- `TOGETHER_API_KEY`
- `REPLICATE_API_TOKEN`
- `HUGGINGFACE_API_KEY`
- `PERPLEXITY_API_KEY`
- `ELEVENLABS_API_KEY`
- `ELEVENLABS_VOICE_ID`
### Databases
- `DATABASE_URL`
- `SUPABASE_URL`
- `SUPABASE_ANON_KEY`
- `SUPABASE_SERVICE_KEY`
- `PLANETSCALE_URL`
- `MONGODB_URI`
- `REDIS_URL`
- `PINECONE_API_KEY`
- `PINECONE_ENVIRONMENT`
### Communication
- `TELEGRAM_BOT_TOKEN`
- `TELEGRAM_ADMIN_CHAT_ID`
- `DASHCLAW_ALERTS_TELEGRAM`
- `DISCORD_BOT_TOKEN`
- `DISCORD_CLIENT_ID`
- `DISCORD_GUILD_ID`
- `SLACK_BOT_TOKEN`
- `SLACK_SIGNING_SECRET`
- `SLACK_APP_TOKEN`
- `TWILIO_ACCOUNT_SID`
- `TWILIO_AUTH_TOKEN`
- `TWILIO_PHONE_NUMBER`
- `RESEND_API_KEY`
- `SENDGRID_API_KEY`
### Productivity
- `GOOGLE_ACCOUNT`
- `GOOGLE_CREDENTIALS_PATH`
- `NOTION_API_KEY`
- `NOTION_PARENT_PAGE_ID`
- `LINEAR_API_KEY`
- `AIRTABLE_API_KEY`
- `AIRTABLE_BASE_ID`
- `CALENDLY_API_KEY`
### Development
- `GITHUB_TOKEN`
- `GITHUB_USERNAME`
- `VERCEL_TOKEN`
- `VERCEL_PROJECT_ID`
- `RAILWAY_TOKEN`
- `CLOUDFLARE_API_TOKEN`
- `CLOUDFLARE_ACCOUNT_ID`
- `SENTRY_DSN`
- `SENTRY_AUTH_TOKEN`
### Social
- `TWITTER_API_KEY`
- `TWITTER_API_SECRET`
- `TWITTER_ACCESS_TOKEN`
- `TWITTER_ACCESS_SECRET`
- `BRAVE_API_KEY`
- `MOLTBOOK_API_KEY`
### Payments
- `STRIPE_SECRET_KEY`
- `STRIPE_PUBLISHABLE_KEY`
- `STRIPE_WEBHOOK_SECRET`
- `LEMONSQUEEZY_API_KEY`
### Native governance alert settings
- `DASHCLAW_ALERTS_SLACK`
- `DASHCLAW_ALERTS_DISCORD`
- `DASHCLAW_ALERTS_LINEAR`
- `DASHCLAW_ALERTS_GITHUB`
- `DASHCLAW_ALERTS_EMAIL`
- `DASHCLAW_ALERT_EMAIL`
- `SLACK_CHANNEL_ID`
- `SLACK_WEBHOOK_URL`
- `DISCORD_WEBHOOK_URL`
- `GITHUB_REPO`
- `SENDGRID_DEFAULT_TO`
- `SENDGRID_FROM_EMAIL`
### webhooks + native adapters deliver a signal. Empty/unset = disabled.
- `DASHCLAW_ACTION_COST_THRESHOLD`
### System configuration
- `MODEL_PRICING`
- `ENFORCE_AGENT_SIGNATURES`
### Predictive risk scoring
- `PREDICTIVE_RISK_ENABLED`
- `PREDICTIVE_RISK_THRESHOLD`
### docs/architecture/durable-execution-finality.md.
- `DASHCLAW_OUTCOME_TIMEOUT_MINUTES`
### DASHCLAW_BEHAVIOR_SAMPLES_ENABLED env var still overrides them.
- `BEHAVIOR_RECORDER_ENABLED`
- `BEHAVIOR_RECORDER_UNTIL`
### content contains a detected secret/credential. Default (unset) = warn only.
- `DASHCLAW_AUTOSCAN_BLOCK`
## Realtime & Webhook Events
Every mutation that Mission Control reflects and every webhook delivery is keyed on these event strings. Subscribe via `GET /api/events` (SSE) or register a webhook with the matching `events: [...]` array.
| Constant | Event |
| --- | --- |
| `ACTION_COST_EXCEEDED` | `action.cost_exceeded` |
| `ACTION_CREATED` | `action.created` |
| `ACTION_UPDATED` | `action.updated` |
| `DECISION_CREATED` | `decision.created` |
| `GOAL_CREATED` | `goal.created` |
| `GOAL_UPDATED` | `goal.updated` |
| `GUARD_DECISION_CREATED` | `guard.decision.created` |
| `LOOP_CREATED` | `loop.created` |
| `LOOP_UPDATED` | `loop.updated` |
| `MESSAGE_CREATED` | `message.created` |
| `POLICY_UPDATED` | `policy.updated` |
| `SIGNAL_DETECTED` | `signal.detected` |
| `TASK_ASSIGNED` | `task.assigned` |
| `TASK_COMPLETED` | `task.completed` |
| `TOKEN_USAGE` | `token.usage` |
## Signal Types
These are the `type` strings emitted through `fireWebhooksForOrg` and `deliverNativeNotifications`. Webhooks can subscribe to any subset by putting the type in their `events: [...]` array (or use `['all']` for everything).
- `autonomy_spike`
- `branch_stale`
- `cost_exceeded`
- `green_insufficient`
- `integration_health_changed`
- `integration_mismatch`
- `lost_confirmation`
- `mcp_degraded`
- `stale_action`
- `test`
## Native Notification Adapters
Each adapter delivers `integration_mismatch`, `integration_health_changed`, and `cost_exceeded` signals when at least one of its required credential keys is configured. Per-channel opt-out via `DASHCLAW_ALERTS_<NAME>=false`.
| Adapter | Required credential (any one) |
| --- | --- |
| `org_id` | `DISCORD_WEBHOOK_URL` |
| `email` | `RESEND_API_KEY`, `SENDGRID_API_KEY` |
| `github` | `GITHUB_TOKEN` |
| `linear` | `LINEAR_API_KEY` |
| `slack` | `SLACK_BOT_TOKEN`, `SLACK_WEBHOOK_URL` |
## Detecting Drift
To check whether this snapshot matches the current codebase:
```bash
python -m livingcode diff
```
If the diff shows changes, this skill is stale — regenerate it.
don't have the plugin yet? install it then click "run inline in claude" again.