/\_/\ /\_/\ /\_/\
( o.o ) ( ^.^ ) ( -.- )
> ^ < > ^ < > ^ <
(_/ \_) (_/ \_) (_/ \_)
Otter will be the last thing
you ever install.
From then on, otter installs everything for you. π¦¦
Any software. Any system. One installer to rule them all.
Free Β· Open source Β· No account needed
$ curl -fsSL https://otter.utopiaia.com/install.sh | sh
Installs to ~/.local/bin/otter Β· Requires macOS 13+ Β·
All releases β
$ curl -fsSL https://otter.utopiaia.com/install.sh | sh
Supports x86_64 and arm64 Β· Linux kernel 4.19+ Β· All releases β
$ cargo install otter
Works on any platform where Rust compiles Β· Install Rust first β
PS> iwr https://otter.utopiaia.com/install.ps1 | iex
Windows 11 Β· Or install via Cargo: cargo install otter
See it in action
$ otter install postgresql 𦦠otter ollama βΊ qwen3.5:4b target postgresql ββ Installation plan ββ postgresql β³ 1. Search for latest PostgreSQL version β³ 2. Install via Homebrew β³ 3. Initialize database cluster β³ 4. Start PostgreSQL service β³ 5. Verify installation $ brew install postgresql@16 β postgresql@16 1.0_1 already installed $ brew services start postgresql@16 β Successfully started postgresql@16 $ psql --version β psql (PostgreSQL) 16.4 β postgresql installed successfully 5/5 steps done Β· 14 turns Β· 48 seconds
For developers
Make your software otter-ready
Drop an OTTER.md in your repo.
Anyone with otter installed can then install your software with a single command.
Create OTTER.md
Add an OTTER.md file to the root of your repo. Write plain English: what needs to be installed, what needs to be configured, what commands to run.
Push to GitHub
Commit and push. That's it. No CI pipeline, no package registry, no special tooling required.
Users install in seconds
Anyone with otter can run otter install github.com/you/your-repo and otter handles the rest autonomously.
# MyApp β Installation Guide ## Requirements - Node.js 20+ - PostgreSQL 15+ - An API key from example.com (free tier works) ## Install 1. Install dependencies: npm install 2. Copy the example env file and fill in the values: cp .env.example .env Set MYAPP_API_KEY to your key from example.com/dashboard 3. Create the database and run migrations: createdb myapp && npm run db:migrate 4. Start the server: npm start ## Verify Open http://localhost:3000 β you should see the login page. Run npm test to confirm everything works. ## Common Issues - EADDRINUSE: port 3000 is busy β kill the process with lsof -ti:3000 | xargs kill - Postgres connection error: make sure the postgresql service is running
Works for any kind of project
π¦ Rust CLI tool
## Install 1. cargo build --release 2. cp target/release/mytool ~/.local/bin/ 3. Reload shell: source ~/.zshrc ## Config Set MYTOOL_TOKEN in your env.
π Python service
## Install 1. python -m venv .venv && source .venv/bin/activate 2. pip install -r requirements.txt 3. cp .env.example .env ## Run uvicorn main:app --reload
π³ Docker app
## Install 1. cp .env.example .env and fill in secrets 2. docker compose up -d ## Verify docker compose ps β all services should be Up
β‘ Next.js app
## Install 1. npm install 2. cp .env.local.example .env.local ## Dev server npm run dev β http://localhost:3000
Users install your project with one command β otter reads the OTTER.md,
runs everything, handles errors, and verifies the install worked.
$ otter install github.com/you/your-repo