droid CLI from Factory. Curl-installer from app.factory.ai.
Install
baseCLIPostCreate. Linux requires xdg-utils (also installed by Crewship’s apt step).
Auth
| Env var | Format |
|---|---|
FACTORY_API_KEY | fact_… / factory_… |
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:| API string | Tier | Notes |
|---|---|---|
claude-opus-4-7 / claude-opus-4-6 / claude-sonnet-4-6 | frontier | 1.2x–2x multiplier |
claude-opus-4-6-fast | frontier | 12x premium tier |
gpt-5.5 / gpt-5.4 / gpt-5.3-codex | frontier | Plus -fast variants |
gemini-3.1-pro-preview / gemini-3-flash-preview | frontier/fast | 0.2x-0.8x |
glm-5.1 / kimi-k2.6 / minimax-m2.7 | open-weight | Cheap tiers |
Command shape
exec— non-interactive subcommand--auto low(read-only,MINIMALprofile) |medium(file edits, default forCODING) |high(FULLprofile)-o stream-json— JSONL events--missionis NOT used — fails in headless containers per Factory issue #794
MCP
Configured at/output/<slug>/.factory/mcp.json:
type: stdio | http discriminator on every server (Crewship’s writer always emits it).
Memory
Canonical memory set includingAGENTS.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:| Event | Fields |
|---|---|
system (subtype: init) | cwd, session_id, tools, model |
message | role, id, text |
tool_call | camelCase: toolName, parameters, toolId, messageId |
tool_result | camelCase: value (NOT output), isError |
completion | camelCase: finalText, numTurns, durationMs |
result | snake_case: result, num_turns, duration_ms, is_error |
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).