Installation
Prerequisites
Section titled “Prerequisites”Agent One requires two things to run:
- Go 1.22+ — the agent compiles to a single static binary
- LiteLLM — a self-hosted OpenAI-compatible proxy that routes to any LLM provider
Install Go
Section titled “Install Go”Download from go.dev/dl or use your package manager:
# macOSbrew install go
# Ubuntu/Debiansudo apt install golang-go
# Verifygo version # should print go1.22 or higherInstall LiteLLM
Section titled “Install LiteLLM”LiteLLM is a Python proxy that exposes a single OpenAI-compatible endpoint and routes to 100+ LLM providers. Agent One talks only to LiteLLM — never directly to a provider.
pip install litellmCreate a litellm_config.yaml:
model_list: - model_name: cheap litellm_params: model: deepseek/deepseek-chat api_key: os.environ/DEEPSEEK_API_KEY
- model_name: medium litellm_params: model: anthropic/claude-haiku-4-5 api_key: os.environ/ANTHROPIC_API_KEY
- model_name: smart litellm_params: model: anthropic/claude-sonnet-4-6 api_key: os.environ/ANTHROPIC_API_KEYStart the proxy:
litellm --config litellm_config.yaml# Runs on http://localhost:4000Build from Source
Section titled “Build from Source”git clone https://github.com/emutis/agent-one.gitcd agent-onego build -o agent-one ./cmd/agentThis produces a single static binary with no external dependencies.
First Run
Section titled “First Run”# Run with the CLI channel (interactive terminal)./agent-one
# Or run with the Bubbletea TUI./agent-one --tui
# Or specify a custom config path./agent-one --config /path/to/config.yamlOn first run, Agent One creates a config.yaml in the current directory (if one doesn’t exist) and initializes a SQLite database for memory at ./data/memory.db.
Development Mode
Section titled “Development Mode”During development, you can skip the build step:
go run ./cmd/agent # CLI modego run ./cmd/agent --tui # TUI modeVerify the Setup
Section titled “Verify the Setup”Once running, type a message in the CLI:
> Hello, are you working?If LiteLLM is running and configured, the agent responds. If not, you’ll see an error in the logs pointing to the connection issue.