{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tidbyt-status",
    "name": "Tidbyt Status Display",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/MrScoutsHub/tidbyt-status",
    "canonicalUrl": "https://clawhub.ai/MrScoutsHub/tidbyt-status",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tidbyt-status",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tidbyt-status",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "install.sh",
      "scripts/status_server.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/tidbyt-status"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/tidbyt-status",
    "agentPageUrl": "https://openagent3.xyz/skills/tidbyt-status/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tidbyt-status/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tidbyt-status/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Tidbyt Status - Scout Display",
        "body": "Complete integration for displaying Scout's status on Tidbyt 64x32 LED displays."
      },
      {
        "title": "Components",
        "body": "Status API Server (scripts/status_server.py) - Exposes Scout's status as JSON\nTidbyt App (scout_status.star) - Starlark app for rendering on Tidbyt"
      },
      {
        "title": "1. Start the Status API Server",
        "body": "cd ~/.openclaw/workspace/skills/tidbyt-status\npython3 scripts/status_server.py\n\nAPI available at http://localhost:8765/status"
      },
      {
        "title": "2. Install Pixlet (Tidbyt Development Tool)",
        "body": "macOS:\n\nbrew install tidbyt/tidbyt/pixlet\n\nLinux:\nDownload from GitHub releases"
      },
      {
        "title": "3. Test Locally",
        "body": "Update the IP address in scout_status.star (line 10):\n\nDEFAULT_API_URL = \"http://YOUR-LOCAL-IP:8765/status\"\n\nRender and serve:\n\npixlet serve scout_status.star\n\nVisit http://localhost:8080 to preview."
      },
      {
        "title": "4. Push to Your Tidbyt",
        "body": "First, login and get your device ID:\n\npixlet login\npixlet devices\n\nRender the app:\n\npixlet render scout_status.star\n\nPush to your Tidbyt:\n\npixlet push --installation-id Scout <YOUR-DEVICE-ID> scout_status.webp"
      },
      {
        "title": "Display Features",
        "body": "Agent name + emoji (🦅) at top with animated face\nStatus-specific faces:\n\nCHAT (green) - Casual chatting, eyes moving\nWORK (yellow) - Working hard, yellow face with purple focused eyes\nTHINK (blue) - Thinking/processing, eyes blinking\nSLEEP (gray) - Idle/sleeping, closed eyes\n\n\nTask count - Number of concurrent sub-agent tasks\nRecent activity - Scrolling text showing current activity"
      },
      {
        "title": "API Response Format",
        "body": "The status server returns JSON:\n\n{\n  \"agent\": \"Scout\",\n  \"emoji\": \"🦅\",\n  \"status\": \"chatting|working|thinking|sleeping\",\n  \"timestamp\": \"2026-02-06T14:30:00\",\n  \"active_tasks\": 0,\n  \"last_activity\": \"2026-02-06T14:25:00\",\n  \"recent_activity\": \"Chatting with user...\"\n}\n\nStatus Types:\n\nchatting - Main session active, no background tasks\nworking - Sub-agent sessions running (processing tasks)\nthinking - Some activity but unclear\nsleeping - No activity for >1 hour"
      },
      {
        "title": "Custom API Port",
        "body": "PORT=9000 python3 scripts/status_server.py"
      },
      {
        "title": "Custom API URL in Tidbyt App",
        "body": "When pushing to Tidbyt, configure via the mobile app:\n\nTap the Scout installation\nSettings → API URL\nEnter your full URL"
      },
      {
        "title": "systemd (Linux)",
        "body": "Create /etc/systemd/system/scout-status.service:\n\n[Unit]\nDescription=Scout Status API for Tidbyt\nAfter=network.target\n\n[Service]\nType=simple\nUser=<username>\nWorkingDirectory=/home/<username>/.openclaw/workspace/skills/tidbyt-status\nExecStart=/usr/bin/python3 scripts/status_server.py\nRestart=always\nEnvironment=\"PORT=8765\"\n\n[Install]\nWantedBy=multi-user.target\n\nEnable and start:\n\nsudo systemctl daemon-reload\nsudo systemctl enable scout-status\nsudo systemctl start scout-status"
      },
      {
        "title": "Manual Background",
        "body": "nohup python3 scripts/status_server.py > /tmp/scout-status.log 2>&1 &"
      },
      {
        "title": "Network Configuration",
        "body": "For Tidbyt to access the API:\n\nFind your local IP:\nhostname -I | awk '{print $1}'\n\n\n\nUpdate firewall (if needed):\nsudo ufw allow 8765/tcp\n\n\n\nTest from another machine:\ncurl http://YOUR-IP:8765/status"
      },
      {
        "title": "Status Detection Logic",
        "body": "The server monitors ~/.openclaw/agents/main/sessions/*.jsonl:\n\nActive: Any session modified within last 5 minutes\nIdle: No recent activity\nActive tasks: Count of sub-agent sessions (excludes main session)\nRecent activity: Shows time since last activity when idle"
      },
      {
        "title": "Change the Emoji",
        "body": "Edit scripts/status_server.py line 16:\n\n\"emoji\": \"🦅\",  # Change to any emoji"
      },
      {
        "title": "Adjust Activity Threshold",
        "body": "Edit scripts/status_server.py line 34 (default 300 seconds):\n\nif age_seconds < 300:  # Change threshold here"
      },
      {
        "title": "Modify Display Colors",
        "body": "Edit scout_status.star lines 39-40:\n\nstatus_color = \"#00FF00\" if status == \"active\" else \"#888888\""
      },
      {
        "title": "Troubleshooting",
        "body": "API returns error:\n\nCheck if OpenClaw is running\nVerify ~/.openclaw/agents/main/sessions/ exists\n\nTidbyt shows \"API Error\":\n\nVerify API URL is accessible from Tidbyt's network\nCheck firewall settings\nTest with: curl http://YOUR-IP:8765/status\n\nDisplay doesn't update:\n\nTidbyt apps refresh every ~30 seconds (see ttl_seconds in code)\nCheck if the status API server is still running"
      },
      {
        "title": "Files",
        "body": "SKILL.md - This documentation\nscripts/status_server.py - HTTP API server\nscout_status.star - Tidbyt Starlark app\ntidbyt-status.skill - Packaged skill file"
      }
    ],
    "body": "Tidbyt Status - Scout Display\n\nComplete integration for displaying Scout's status on Tidbyt 64x32 LED displays.\n\nComponents\nStatus API Server (scripts/status_server.py) - Exposes Scout's status as JSON\nTidbyt App (scout_status.star) - Starlark app for rendering on Tidbyt\nQuick Start\n1. Start the Status API Server\ncd ~/.openclaw/workspace/skills/tidbyt-status\npython3 scripts/status_server.py\n\n\nAPI available at http://localhost:8765/status\n\n2. Install Pixlet (Tidbyt Development Tool)\n\nmacOS:\n\nbrew install tidbyt/tidbyt/pixlet\n\n\nLinux: Download from GitHub releases\n\n3. Test Locally\n\nUpdate the IP address in scout_status.star (line 10):\n\nDEFAULT_API_URL = \"http://YOUR-LOCAL-IP:8765/status\"\n\n\nRender and serve:\n\npixlet serve scout_status.star\n\n\nVisit http://localhost:8080 to preview.\n\n4. Push to Your Tidbyt\n\nFirst, login and get your device ID:\n\npixlet login\npixlet devices\n\n\nRender the app:\n\npixlet render scout_status.star\n\n\nPush to your Tidbyt:\n\npixlet push --installation-id Scout <YOUR-DEVICE-ID> scout_status.webp\n\nDisplay Features\nAgent name + emoji (🦅) at top with animated face\nStatus-specific faces:\nCHAT (green) - Casual chatting, eyes moving\nWORK (yellow) - Working hard, yellow face with purple focused eyes\nTHINK (blue) - Thinking/processing, eyes blinking\nSLEEP (gray) - Idle/sleeping, closed eyes\nTask count - Number of concurrent sub-agent tasks\nRecent activity - Scrolling text showing current activity\nAPI Response Format\n\nThe status server returns JSON:\n\n{\n  \"agent\": \"Scout\",\n  \"emoji\": \"🦅\",\n  \"status\": \"chatting|working|thinking|sleeping\",\n  \"timestamp\": \"2026-02-06T14:30:00\",\n  \"active_tasks\": 0,\n  \"last_activity\": \"2026-02-06T14:25:00\",\n  \"recent_activity\": \"Chatting with user...\"\n}\n\n\nStatus Types:\n\nchatting - Main session active, no background tasks\nworking - Sub-agent sessions running (processing tasks)\nthinking - Some activity but unclear\nsleeping - No activity for >1 hour\nConfiguration\nCustom API Port\nPORT=9000 python3 scripts/status_server.py\n\nCustom API URL in Tidbyt App\n\nWhen pushing to Tidbyt, configure via the mobile app:\n\nTap the Scout installation\nSettings → API URL\nEnter your full URL\nRunning the API Server as a Service\nsystemd (Linux)\n\nCreate /etc/systemd/system/scout-status.service:\n\n[Unit]\nDescription=Scout Status API for Tidbyt\nAfter=network.target\n\n[Service]\nType=simple\nUser=<username>\nWorkingDirectory=/home/<username>/.openclaw/workspace/skills/tidbyt-status\nExecStart=/usr/bin/python3 scripts/status_server.py\nRestart=always\nEnvironment=\"PORT=8765\"\n\n[Install]\nWantedBy=multi-user.target\n\n\nEnable and start:\n\nsudo systemctl daemon-reload\nsudo systemctl enable scout-status\nsudo systemctl start scout-status\n\nManual Background\nnohup python3 scripts/status_server.py > /tmp/scout-status.log 2>&1 &\n\nNetwork Configuration\n\nFor Tidbyt to access the API:\n\nFind your local IP:\n\nhostname -I | awk '{print $1}'\n\n\nUpdate firewall (if needed):\n\nsudo ufw allow 8765/tcp\n\n\nTest from another machine:\n\ncurl http://YOUR-IP:8765/status\n\nStatus Detection Logic\n\nThe server monitors ~/.openclaw/agents/main/sessions/*.jsonl:\n\nActive: Any session modified within last 5 minutes\nIdle: No recent activity\nActive tasks: Count of sub-agent sessions (excludes main session)\nRecent activity: Shows time since last activity when idle\nCustomization\nChange the Emoji\n\nEdit scripts/status_server.py line 16:\n\n\"emoji\": \"🦅\",  # Change to any emoji\n\nAdjust Activity Threshold\n\nEdit scripts/status_server.py line 34 (default 300 seconds):\n\nif age_seconds < 300:  # Change threshold here\n\nModify Display Colors\n\nEdit scout_status.star lines 39-40:\n\nstatus_color = \"#00FF00\" if status == \"active\" else \"#888888\"\n\nTroubleshooting\n\nAPI returns error:\n\nCheck if OpenClaw is running\nVerify ~/.openclaw/agents/main/sessions/ exists\n\nTidbyt shows \"API Error\":\n\nVerify API URL is accessible from Tidbyt's network\nCheck firewall settings\nTest with: curl http://YOUR-IP:8765/status\n\nDisplay doesn't update:\n\nTidbyt apps refresh every ~30 seconds (see ttl_seconds in code)\nCheck if the status API server is still running\nFiles\nSKILL.md - This documentation\nscripts/status_server.py - HTTP API server\nscout_status.star - Tidbyt Starlark app\ntidbyt-status.skill - Packaged skill file"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/MrScoutsHub/tidbyt-status",
    "publisherUrl": "https://clawhub.ai/MrScoutsHub/tidbyt-status",
    "owner": "MrScoutsHub",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tidbyt-status",
    "downloadUrl": "https://openagent3.xyz/downloads/tidbyt-status",
    "agentUrl": "https://openagent3.xyz/skills/tidbyt-status/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tidbyt-status/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tidbyt-status/agent.md"
  }
}