Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,11 @@ AppClaw:

```bash
npm install -g @appclaw/cli
appclaw doctor # preflight: Node, .env, LLM key, appium-mcp, devices
appclaw "open the settings app and turn on airplane mode"
```

You'll need **Node.js 22+**, a connected device / emulator / simulator, and an **LLM API key** (Anthropic, OpenAI, Google, Groq, or local Ollama). Full setup → **[appclaw.in](https://appclaw.in)**.
You'll need **Node.js 22+**, a connected device / emulator / simulator, and an **LLM API key** (Anthropic, OpenAI, Google, Groq, or local Ollama). `appclaw doctor` checks all of this in seconds and prints fix hints for anything missing (`--full` also spawns appium-mcp for a real handshake). Full setup → **[appclaw.in](https://appclaw.in)**.

## What it can do

Expand Down
9 changes: 7 additions & 2 deletions packages/cli/bin/appclaw.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
#!/usr/bin/env node

// `appclaw init` scaffolds a project; `appclaw test ...` routes to the runner
// CLI; everything else falls through to the main interactive/flow/report entry.
// `appclaw init` scaffolds a project; `appclaw doctor` runs the environment
// preflight; `appclaw test ...` routes to the runner CLI; everything else
// falls through to the main interactive/flow/report entry.
if (process.argv[2] === 'init') {
const { runInit } = await import('../dist/cli/init.js');
const code = await runInit(process.argv.slice(3));
process.exit(code);
} else if (process.argv[2] === 'doctor') {
const { runDoctor } = await import('../dist/cli/doctor.js');
const code = await runDoctor(process.argv.slice(3));
process.exit(code);
} else if (process.argv[2] === 'test') {
// Spec/config files (appclaw.config.ts, *.spec.ts) are TypeScript, loaded via
// dynamic import() inside the runner. Node can't import .ts directly, so we
Expand Down
Loading
Loading