Skip to main content
droid CLI from Factory. Curl-installer from app.factory.ai.

Install

Pre-installed via Crewship’s baseCLIPostCreate. Linux requires xdg-utils (also installed by Crewship’s apt step).

Auth

Get the key from app.factory.ai/settings/api-keys. Free tier exists. droid login (browser OAuth) is NOT yet wired in Crewship — API key only.

Models

Bare provider model IDs (no namespace prefix). Droid multiplexes across providers:

Command shape

  • exec — non-interactive subcommand
  • --auto low (read-only, MINIMAL profile) | medium (file edits, default for CODING) | high (FULL profile)
  • -o stream-json — JSONL events
  • --mission is NOT used — fails in headless containers per Factory issue #794

MCP

Configured at /output/<slug>/.factory/mcp.json:
Droid REQUIRES type: stdio | http discriminator on every server (Crewship’s writer always emits it — stdio when command is set, http when url is set).
Crewship auto-injects two sidecar-hosted servers into .factory/mcp.json (injectMemoryMCP + injectRoutinesMCP): crewship-memory (http://127.0.0.1:9119/mcp/memory/<slug>) and crewship-routines (.../mcp/routines), both type: http. A user-declared server of the same name wins.

Memory

Canonical memory set including AGENTS.md (Droid’s primary discovery) and .factory/AGENTS.md (Droid alternate path). Droid exec has no --system-prompt flag and AGENTS.md only loads on the second invocation, so turn-1 parity is achieved by prepending the preamble inline with [SYSTEM]/[USER] delimiters; turn-2+ relies on the file.

Output stream

JSONL per docs.factory.ai/cli/droid-exec/overview. Note camelCase / snake_case inconsistency — Crewship’s parser accepts both:

Troubleshooting

droid: not found — installer needs xdg-utils on Linux. Check apt list --installed | grep xdg-utils. Failed to start factoryd — happens when running droid exec --mission headless (issue #794). Crewship’s adapter never passes --mission so this should not occur. Empty tool_result — pre-fix parser used output field; Droid emits value. Verify orchestrator on current schema (parser_droid_test.go).