CLI Reference · For developers

The foxdog command-line tool.

One command connects your coding agent (Claude Code or Codex) to the FoxDog guided launch. No SDK, no key to paste — your agent calls FoxDog's tools over an authenticated MCP connection, and FoxDog drives the build-to-store path.

Quickstart

Start a plan (or redeem an invite code), then from your app's project directory:

Terminal
# 1. authorize this machine (opens a browser — no key to copy)
npx foxdog login

# 2. add FoxDog to your agent, once
claude mcp add foxdog -- npx -y foxdog mcp

# 3. tell your agent: "let's launch my app with FoxDog"
#    it runs `npx foxdog status`, then the FoxDog conductor drives the launch

That's the whole setup. Everything after — scaffold, icon & screenshots, build, TestFlight, store forms, submit — is driven by FoxDog's tools, step by step.

Install & requirements

There's nothing to install. npx fetches foxdog from npm on demand and always runs the latest version. (A global install is optional: npm i -g foxdog.)

  • Node.js 18+ — ships with npx. You already have it if you run Claude Code or Codex.
  • An active FoxDog plan (or invite code) — the framework is served only to active subscribers.
  • For iOS: a Mac with Xcode. For Android: Android Studio (the Android SDK) — works on macOS, Windows, or Linux.

Commands

npx foxdog statusPrint connection + plan state as JSON. Your agent runs this first.
npx foxdog startLog in, connect your agent, and set up this project in one step (recommended).
npx foxdog loginBrowser device-flow login. Caches a per-machine key in ~/.foxdog.
npx foxdog logoutRemove this machine's cached key.
npx foxdog whoamiShow login status.
npx foxdog mcpRun the MCP proxy (stdio ↔ https). Your agent launches this — you don't run it by hand.

Connect to Claude Code

One time, from your project:

Claude Code
claude mcp add foxdog -- npx -y foxdog mcp

This registers FoxDog as an MCP server. The -y auto-accepts the npx fetch so the agent can launch it unattended.

Connect to Codex

Add an MCP server to ~/.codex/config.toml pointing at the same command:

~/.codex/config.toml
[mcp_servers.foxdog]
command = "npx"
args = ["-y", "foxdog", "mcp"]

(npx foxdog start can write this for you.)

The agent contract

Agents should run npx foxdog status first and branch on the JSON — don't improvise the launch with raw xcodebuild/fastlane, which skips FoxDog's tooling and gives a worse result.

npx foxdog status
{
  "connected": false,
  "plan_active": false,
  "next_action": "Run `npx foxdog login` to connect FoxDog…"
}
  • connected: false → run npx foxdog login, then add the MCP server. Don't touch the build.
  • connected: true, plan_active: false → point the user to a plan or invite code. Don't ship manually.
  • connected: true, plan_active: true → call the foxdog_start MCP tool and follow it one step at a time.

Before connection, the only safe action is a quick read-only review of the project — everything that does something runs through FoxDog's tools after connecting.

How auth works

  • Device-flow login (RFC 8628). npx foxdog login opens a browser, you sign in, and this machine is authorized — there's no key to copy or paste.
  • Per-machine key. A machine-scoped license key is cached locally at ~/.foxdog/credentials.json and sent as a Bearer token to the MCP. Each device gets its own key, individually revocable from the dashboard.
  • Live entitlement. Every MCP request re-checks your subscription. An active plan serves the framework; a paused/canceled plan returns a "reactivate" message instead of content.
  • Zero key custody. Your Apple .p8 and Google Play service-account JSON, and your app source, never leave your machine. FoxDog orchestrates; your Mac does the work.

Environment variables

FOXDOG_API_URLAPI base. Default https://api.foxdog.ai.
FOXDOG_MCP_URLMCP endpoint. Default https://mcp.foxdog.ai/mcp.

You won't normally set these — they exist for development and self-host testing.

Troubleshooting

command not found / npx can't find foxdog

Make sure Node 18+ is installed (node -v). npx ships with Node.

"Your FoxDog plan is not active"

Your subscription isn't active. Start or reactivate a plan at foxdog.ai/dashboard, or redeem an invite code. The connection resumes automatically once the plan is active.

The agent tries to build the app by hand

Tell it to run npx foxdog status first and to use the foxdog_start tool — see the agent contract. The bootstrap prompt in the docs sets this up for you.

Sign this machine out

npx foxdog logout, or revoke the device key from your dashboard.