AI-powered mobile automation agent — describe what you want in plain English, AppClaw reads the screen, reasons, and acts. LLM-agnostic, open-source, zero telemetry.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit be5f03d · analyzer v20 · 6h ago
skills & prompt files 6
- skillAppiumTestDistribution-AppClaw-be5f03d/.agents/skills/emil-design-eng/SKILL.md
- skillAppiumTestDistribution-AppClaw-be5f03d/.agents/skills/generate-appclaw-flow/SKILL.md
- skillAppiumTestDistribution-AppClaw-be5f03d/.agents/skills/review-changes/SKILL.md
- skillAppiumTestDistribution-AppClaw-be5f03d/.agents/skills/use-appclaw-agent-cli/SKILL.md
- skillAppiumTestDistribution-AppClaw-be5f03d/.agents/skills/use-appclaw-cli/SKILL.md
- agent-rulesAppiumTestDistribution-AppClaw-be5f03d/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 23
- fs AppiumTestDistribution-AppClaw-be5f03d/landing/capture-gif.mjs :8
import { mkdirSync, rmSync, existsSync, readdirSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/landing/capture-parallel-gif.mjs :12
import { mkdirSync, rmSync, existsSync, statSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/packages/appclaw-agent/src/client.ts :2
import { mkdir, readFile, rm, writeFile } from 'node:fs/promises'; - fs AppiumTestDistribution-AppClaw-be5f03d/packages/appclaw-agent/src/daemon.ts :2
import { chmod, mkdir, rm, writeFile } from 'node:fs/promises'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/agent-runtime/index.ts :8
import { writeFile } from 'node:fs/promises'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/appguides/index.ts :9
import { readFileSync, existsSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/device/session.ts :8
import { readFileSync, existsSync } from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/explorer/index.ts :14
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/flow/parse-yaml-flow.ts :37
import { readFileSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/flow/variable-resolver.ts :11
import { readFileSync, existsSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/index.ts :29
import { readFileSync, existsSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/logger.ts :5
import { writeFileSync, mkdirSync, existsSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/memory/procedures.ts :17
import { readFileSync, writeFileSync, mkdirSync, renameSync } from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/memory/store.ts :8
import { readFileSync, writeFileSync, mkdirSync, renameSync } from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/recording/recorder.ts :9
import { writeFileSync, mkdirSync, existsSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/recording/replayer.ts :11
import { readFileSync } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/report/server.ts :14
import * as fs from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/report/writer.ts :14
import * as fs from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/sdk/index.ts :13
import { promises as fs } from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/sdk/locator-cache.ts :16
import { readFileSync, writeFileSync, mkdirSync, renameSync } from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/src/version.ts :1
import { readFileSync } from 'node:fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/extension.ts :10
import * as fs from 'fs'; - fs AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/providers/flow-completion.ts :11
import * as fs from 'fs';
shell / exec 9
- shell AppiumTestDistribution-AppClaw-be5f03d/landing/capture-gif.mjs :7
import { execSync } from 'child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/landing/capture-parallel-gif.mjs :11
import { execSync } from 'child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/packages/appclaw-agent/src/client.ts :1
import { spawn } from 'node:child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/src/flow/run-yaml-flow.ts :52
import { exec } from 'child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/src/index.ts :474
import('child_process') - shell AppiumTestDistribution-AppClaw-be5f03d/src/mcp/keyboard.ts :13
import { exec } from 'child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/bridge.ts :6
import { ChildProcess, spawn } from 'child_process'; - shell AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/extension.ts :576
let reportServerProcess: ReturnType<typeof import('child_process').spawn> | undefined; - shell AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/views/devices-tree.ts :6
import { execSync } from 'child_process';
network 6
- net AppiumTestDistribution-AppClaw-be5f03d/packages/appclaw-agent/src/client.ts :3
import { connect } from 'node:net'; - net AppiumTestDistribution-AppClaw-be5f03d/packages/appclaw-agent/src/daemon.ts :3
import { createServer, type Server, type Socket } from 'node:net'; - net AppiumTestDistribution-AppClaw-be5f03d/src/flow/parallel-runner.ts :22
import * as net from 'net'; - net AppiumTestDistribution-AppClaw-be5f03d/src/report/server.ts :13
import * as http from 'node:http'; - net AppiumTestDistribution-AppClaw-be5f03d/src/sdk/mcp-session.ts :12
import * as net from 'net'; - net AppiumTestDistribution-AppClaw-be5f03d/vscode-extension/src/extension.ts :585
const resp = await fetch(`http://localhost:${port}/health`);
secrets 3
- secrets AppiumTestDistribution-AppClaw-be5f03d/src/mcp/client.ts :105
...(process.env.AI_VISION_API_KEY && { AI_VISION_API_KEY: process.env.AI_VISION_API_KEY }), - secrets AppiumTestDistribution-AppClaw-be5f03d/src/sdk/goal-export.ts :206
optionLines.push(` apiKey: process.env.LLM_API_KEY,`); - secrets AppiumTestDistribution-AppClaw-be5f03d/src/sdk/index.ts :7
* const app = new AppClaw({ provider: 'anthropic', apiKey: process.env.KEY })
declared dependencies 42
- @ai-sdk/anthropic@^1.0.0
- @ai-sdk/google@^3.0.43
- @ai-sdk/openai@^1.0.0
- @modelcontextprotocol/sdk@^1.22.0
- ai@^6.0.72
- ai-sdk-ollama@3.8.3
- appium-mcp@1.85.8
- boxen@^8.0.1
- chalk@^5.6.2
- cli-spinners@^3.4.0
- cli-table3@^0.6.5
- df-vision@1.1.79
- dotenv@^17.3.1
- fast-xml-parser@^4.5.0
- gradient-string@^3.0.0
- ink@^5.2.1
- ink-spinner@^5.0.0
- ink-text-input@^6.0.0
- marked@^15.0.12
- marked-terminal@^7.3.0
- mjpeg-consumer@2.0.0
- react@^18.3.1
- sharp@^0.33.5
- yaml@^2.8.3
- zod@^3.23.0
- @semantic-release/changelog@^6.0.3
- @semantic-release/commit-analyzer@^13.0.1
- @semantic-release/exec@^7.1.0
- @semantic-release/git@^10.0.1
- @semantic-release/github@^11.0.6
- @semantic-release/npm@^12.0.2
- @semantic-release/release-notes-generator@^14.1.0
- @types/bun@^1.1.0
- @types/gradient-string@^1.1.6
- @types/react@^18.3.31
- conventional-changelog-conventionalcommits@^9.3.1
- ink-testing-library@^4.0.0
- prettier@3.8.3
- semantic-release@^24.2.9
- tsx@^4.21.0
- typescript@^5.6.0
- vitest@^4.1.2