{
  "artifact_version": 1,
  "generated_at": "2026-06-10T16:30:16.360Z",
  "checked_at": "2026-06-10T16:30:16.359Z",
  "route": "/setup",
  "viewer_mode": "public",
  "host": "hosted.dashclaw.io",
  "verification": {
    "overall": "needs_attention",
    "label": "Needs attention",
    "summary": "DashClaw can partially verify this instance, but some follow-up is required before normal use is trustworthy.",
    "ready": false,
    "fully_verified": false,
    "readiness_status": "needs_attention"
  },
  "runtime": {
    "node_version": "v24.14.1",
    "node_env": "production"
  },
  "categories": [
    {
      "id": "application",
      "title": "Core Readiness",
      "status": "pass",
      "summary": "DashClaw responded to the verification request.",
      "what_was_checked": "The /setup page rendered and the server runtime reported process metadata.",
      "evidence_summary": "Behavior verified: the app process responded and exposed runtime metadata.",
      "pending_proof": "",
      "checks": [
        {
          "id": "app_reachable",
          "label": "Verify surface reachable",
          "status": "pass",
          "detail": "The Setup & Verify page rendered successfully.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "runtime",
          "label": "Runtime metadata",
          "status": "pass",
          "detail": "Application runtime is available.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        }
      ]
    },
    {
      "id": "database",
      "title": "Database Verification",
      "status": "pass",
      "summary": "Database connection and core schema checks passed.",
      "what_was_checked": "DATABASE_URL presence, a live connection from this deployment, and all required core tables.",
      "evidence_summary": "Database verified: connection succeeded and required core tables were present.",
      "pending_proof": "",
      "checks": [
        {
          "id": "database_url",
          "label": "DATABASE_URL",
          "status": "pass",
          "detail": "DATABASE_URL is present.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "db_connection",
          "label": "Connection test",
          "status": "pass",
          "detail": "Database connection succeeded.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "db_schema",
          "label": "Core schema",
          "status": "pass",
          "detail": "All 6 required tables are present.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        }
      ]
    },
    {
      "id": "configuration",
      "title": "Configuration",
      "status": "pass",
      "summary": "Required and recommended settings are present.",
      "what_was_checked": "Presence of required and advisory environment variables. Values are never shown here.",
      "evidence_summary": "Configuration presence checks passed for required and recommended settings.",
      "pending_proof": "",
      "checks": [
        {
          "id": "database_url",
          "label": "DATABASE_URL",
          "status": "pass",
          "detail": "DATABASE_URL is present.",
          "sub_detail": "Postgres connection string",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "nextauth_secret",
          "label": "NEXTAUTH_SECRET",
          "status": "pass",
          "detail": "NEXTAUTH_SECRET is present.",
          "sub_detail": "Session signing secret",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "nextauth_url",
          "label": "NEXTAUTH_URL",
          "status": "pass",
          "detail": "NEXTAUTH_URL is present.",
          "sub_detail": "Public URL of this DashClaw instance",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "dashclaw_api_key",
          "label": "DASHCLAW_API_KEY",
          "status": "pass",
          "detail": "DASHCLAW_API_KEY is present.",
          "sub_detail": "Default API key for agent authentication",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "cron_secret",
          "label": "CRON_SECRET",
          "status": "pass",
          "detail": "CRON_SECRET is present.",
          "sub_detail": "Secret token protecting /api/cron/* routes from unauthorized invocation",
          "likely_cause": "",
          "next_action": ""
        }
      ]
    },
    {
      "id": "auth",
      "title": "Auth Readiness",
      "status": "warn",
      "summary": "DashClaw cannot be signed into normally until auth setup is completed.",
      "what_was_checked": "Whether at least one complete sign-in method exists and whether agent API authentication has a configured path.",
      "evidence_summary": "Auth is still inferred as incomplete because no sign-in method is fully configured.",
      "pending_proof": "",
      "checks": [
        {
          "id": "signin_methods",
          "label": "Sign-in readiness",
          "status": "warn",
          "detail": "No complete sign-in method is configured yet.",
          "sub_detail": "",
          "likely_cause": "No dashboard sign-in method is configured. Set DASHCLAW_LOCAL_ADMIN_PASSWORD for solo access, or configure GitHub, Google, or OIDC.",
          "next_action": "Configure DASHCLAW_LOCAL_ADMIN_PASSWORD for local access, or finish GitHub, Google, or OIDC setup."
        },
        {
          "id": "auth_local_password",
          "label": "Local admin password",
          "status": "warn",
          "detail": "Local password login is not configured.",
          "sub_detail": "",
          "likely_cause": "Local admin password has not been set for this deployment.",
          "next_action": "Set DASHCLAW_LOCAL_ADMIN_PASSWORD if you want password-based setup access without OAuth."
        },
        {
          "id": "agent_api_access",
          "label": "Agent API access",
          "status": "pass",
          "detail": "Agent API authentication appears configured.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        }
      ]
    },
    {
      "id": "deploy",
      "title": "Deploy Readiness",
      "status": "warn",
      "summary": "Deploy configuration has recommendations.",
      "what_was_checked": "NEXTAUTH_URL vs current host, realtime backend on serverless.",
      "evidence_summary": "Deploy checks passed.",
      "pending_proof": "",
      "checks": [
        {
          "id": "nextauth_url",
          "label": "NEXTAUTH_URL matches deployment host",
          "status": "pass",
          "detail": "Configured host matches current request.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "realtime_backend",
          "label": "Live stream requires Redis on serverless",
          "status": "warn",
          "detail": "Running in-memory mode. Each serverless invocation has a fresh event bus — Mission Control will not show live decisions.",
          "sub_detail": "",
          "likely_cause": "The deployment is running on Vercel without Redis or Upstash configured for shared realtime state.",
          "next_action": "Create a free Upstash Redis instance at upstash.com and add UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN to Vercel environment variables."
        }
      ]
    },
    {
      "id": "sdk",
      "title": "SDK and Integration Verification",
      "status": "warn",
      "summary": "Finish core verification first, then run live SDK checks.",
      "what_was_checked": "This section does not execute SDK calls. It verifies whether a live validation path is available and documents the exact next commands.",
      "evidence_summary": "Live SDK proof is pending because core instance verification is not complete yet.",
      "pending_proof": "Use the \"Run test\" button above to validate your API key and capture proof.",
      "checks": [
        {
          "id": "sdk_live_proof",
          "label": "Live validation proof",
          "status": "warn",
          "detail": "No live validation proof has been captured yet.",
          "sub_detail": "On the Settings page, paste your API key into the \"Test your connection\" panel and click \"Run test\" to capture proof and upgrade to verified.",
          "likely_cause": "",
          "next_action": ""
        },
        {
          "id": "sdk_gate",
          "label": "Core verification gate",
          "status": "warn",
          "detail": "Core verification is still incomplete, so validation should wait.",
          "sub_detail": "",
          "likely_cause": "Database, required configuration, or auth readiness still needs attention.",
          "next_action": "Fix the blocked or warning checks above first."
        },
        {
          "id": "sdk_api_key_gate",
          "label": "API key available",
          "status": "pass",
          "detail": "An API authentication path is available.",
          "sub_detail": "",
          "likely_cause": "",
          "next_action": ""
        }
      ]
    }
  ],
  "workflow": [
    {
      "id": "core_instance",
      "title": "Core instance verification",
      "status": "pass",
      "summary": "DashClaw rendered, required config is present, and database checks completed.",
      "proof": "Verified by page reachability, config presence checks, database connectivity, and core schema inspection.",
      "next_action": ""
    },
    {
      "id": "auth_operator",
      "title": "Operator and auth verification",
      "status": "warn",
      "summary": "Normal operator sign-in still needs setup.",
      "proof": "Only inferred as incomplete because no complete sign-in method was found.",
      "next_action": "Finish local password or OAuth setup before relying on dashboard access."
    },
    {
      "id": "sdk_live",
      "title": "SDK and integration verification",
      "status": "pending",
      "summary": "Open the Settings page and use the \"Test your connection\" panel — paste your API key and click \"Run test\" — to capture live proof.",
      "proof": "Use the \"Test your connection\" panel on the Settings page to prove authenticated API access.",
      "next_action": "On the Settings page, paste your API key into the \"Test your connection\" panel and click \"Run test\" to validate and capture proof."
    },
    {
      "id": "proof_artifact",
      "title": "Verification proof artifact",
      "status": "pass",
      "summary": "A structured JSON artifact is available for the current verification view.",
      "proof": "The artifact records timestamp, mode, overall state, categories checked, per-check status, and next steps.",
      "next_action": "Download the proof artifact once you are ready to share or archive the current verification state."
    }
  ],
  "recommended_next_steps": [
    {
      "id": "configure_auth",
      "title": "Configure a sign-in method",
      "variant": "warn",
      "summary": "Operators need at least one complete sign-in method before normal dashboard access will work.",
      "details": [
        "What failed: no complete operator sign-in path is configured.",
        "Likely cause: neither local password login nor a fully configured OAuth provider is available yet.",
        "Next action: set DASHCLAW_LOCAL_ADMIN_PASSWORD for solo access, or finish GitHub, Google, or OIDC setup."
      ],
      "code": "DASHCLAW_LOCAL_ADMIN_PASSWORD=<set-a-strong-password>",
      "note": ""
    },
    {
      "id": "run_sdk_validation",
      "title": "Validate your connection",
      "variant": "info",
      "summary": "Core verification passed. On the Settings page, use the \"Test your connection\" panel to validate and capture proof.",
      "details": [
        "What this proves: real API ingress, authentication, and a live request path.",
        "Next action: open the Settings page, paste your API key into the \"Test your connection\" panel, and click \"Run test\"."
      ],
      "code": "",
      "note": ""
    }
  ],
  "sdk_validation": {
    "base_url": "https://hosted.dashclaw.io",
    "node_command": "node ./dashclaw-platform-intelligence/scripts/validate-integration.mjs \\\n  --base-url https://hosted.dashclaw.io \\\n  --api-key <api-key> \\\n  --full \\\n  --capture-setup-proof",
    "python_command": "pip install dashclaw\npython -c \"from dashclaw import DashClaw; dc = DashClaw(base_url='https://hosted.dashclaw.io', api_key='<api-key>'); print(dc.ping())\"",
    "live_proof": null,
    "note": "These commands are guidance for live validation. The artifact does not claim they have already been executed."
  },
  "notice": "This page is intentionally safe to open before login. Some operator details stay hidden until you sign in."
}