Skip to content

Run a goal in the terminal

Terminal window
uv run ios-agent # open it, decide later
uv run ios-agent "turn on bold text" # give it a goal
uv run ios-agent --pick "turn wi-fi off" # choose the device from a list
uv run ios-agent manual # drive it by hand, no model needed
uv run ios-agent devices # what is reachable

the terminal app, mid-run

It streams the model’s reasoning as it arrives, shows the digest the model is reading beside it, and keeps the numbers on screen while they climb: actions, observations, device tokens, cost.

/ command menu, filtered as you type
/device · ctrl+o switch phone or simulator mid-session
esc stop at the next step, with a complete report; again to abort
ctrl+r · ctrl+s re-read the screen · save the audit trail
drag to select copies the selection to the clipboard, no keystroke needed
--inline run in a short region under the prompt
--no-tui plain lines, for a pipe

manual mode needs no API key. It drives the agent’s nine verbs by hand, which is the fastest way to debug perception on an app nobody has pointed this at before.

The front end is held to one rule, asserted rather than argued: watching a run may not change what it costs. tests/tui/test_cost.py runs the same task wrapped and unwrapped and compares every counter by equality.

The provider is configuration, not a dependency. The loop builds through LangChain’s init_chat_model, so switching is two environment variables and an extra:

Terminal window
uv sync --extra openai
IOS_AGENT_PROVIDER=openai IOS_AGENT_MODEL=gpt-6.1-sol uv run ios-agent "..."

Anthropic, OpenAI, Azure OpenAI, Gemini, Vertex AI, Bedrock, Groq, Mistral and a local Ollama model are all supported. See agent/README.md.