Getting Started
Install otto and start coding with AI in under a minute.
Install
Recommended: One-Liner
curl -fsSL https://install.ottocode.io | shDetects your OS and architecture, downloads the prebuilt binary, and installs to ~/.local/bin.
Pin a specific version:
OTTO_VERSION=v0.1.175 curl -fsSL https://install.ottocode.io | shAlternative: npm or Bun
bun install -g @ottocode/installThe postinstall script downloads the correct binary for your platform.
Supported platforms: macOS (x64, ARM64), Linux (x64, ARM64)
From Source
Requires Bun v1.0+.
git clone https://github.com/nitishxyz/otto.git
cd otto
bun install
bun run compile # builds to dist/ottoSetup
1. Configure a Provider
otto setupWalks you through provider selection and authentication interactively.
Or set API keys via environment variables:
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export GOOGLE_GENERATIVE_AI_API_KEY="..."
export OPENROUTER_API_KEY="sk-or-..."2. Start Using otto
otto # start interactive TUI (default)
otto --web # start server + web UI (opens browser)
otto ask "explain this error" # one-shot question
otto ask "write tests" --agent build
otto ask "follow up" --last # continue last session3. Verify Installation
otto --version # check version
otto doctor # check configuration
otto agents # list available agents
otto models # list available modelsHow It Works
When you run otto, it:
- Starts a local HTTP server for the otto API
- Launches the interactive TUI in your terminal
- With
otto --weborotto serve, opens the web UI in your browser
All AI interactions, session storage, and tool execution happen locally on your machine.
For one-shot usage (otto ask "question"), it starts the server in the background, sends the prompt, streams the response, and exits.
Server Mode
otto serve # start on a random port, open browser
otto serve --port 3000 # specific port
otto serve --network # bind to 0.0.0.0 for LAN access
otto serve --no-open # don't open browserThe server exposes:
- API on the specified port (e.g.,
http://localhost:3000) - Web UI on port + 1 (e.g.,
http://localhost:3001)
Troubleshooting
otto not found after installation
echo $PATH | tr ':' '\n' | grep local
# If not present, add it:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrcProvider authentication issues
otto auth login # reconfigure credentials
otto doctor # check what's configuredBinary not executable
chmod +x $(which otto)