Quickstart

Milo treats the directory where it starts as its workspace. Once it is installed, open a terminal in an existing project and start a session.

Run your first task

$ cd path/to/your/project
$ milo

> explain how authentication works in this repository

On the first launch, Milo asks for the API key used by the active provider. OpenRouter is the default. The key is stored in the OS keychain when available and is never printed in the transcript.

Start read-only

Press shift+tab until the status bar says Plan, or type /plan, before asking Milo to investigate without changing the project.

Let it make a change

In the interactive app, type the task at the prompt. Milo reads the relevant code, makes exact edits, runs checks, and reports what changed. Review the resulting diff in your normal workflow.

> add a health check endpoint at /api/health

Choose how much it does on its own

  • Manual — safe commands run immediately; anything else waits for your approval. Denied actions stay blocked.
  • YOLO — actions that would ask in Manual run automatically. Built-in denials still apply.
  • Plan — only a read-only allowlist can run; edits and other mutating commands are refused.

Cycle through the modes with shift+tab. For a one-off non-interactive task, use milo run:

$ milo run --plan "explain how the settings module is structured"
$ milo run --yolo "add tests for the settings parser"

Undo if you need to

Use /undo to restore the working tree to its state before Milo’s last task. Use /redo if you change your mind. Snapshots require git and do not cover ignored files or files outside the repository.

Choose your model

Milo does not silently switch models. Open /model to search the active provider’s catalogue, or enter a model id directly. See Models and providers.