Changes:
- Add missing UsageConfig fields (last_plan, redirect_on_full, last_session_reset, last_weekly_reset, last_checked) to fix AttributeError crashes
- Add config migration layer in load_config() for v0.4.2 to v0.4.3+ configs
- Rename package guanaco to guanaco-llm-proxy to avoid PyPI collision
- Add Ollama API key validation during install.sh setup (fixes: use real key var, fix env file write, fix grep pattern)
- Add startup version sanity check detecting repo/venv mismatch
- Fix systemd service WorkingDirectory to repo checkout
- Add GUANACO_CONFIG_DIR env var to systemd service
- Heredoc now unquoted (<< SCRIPT) so INSTALL_DIR/VENV_DIR expand
at install time, producing correct absolute paths in the wrapper
- , , etc. properly escaped with $ so they resolve
at runtime, not install time
- Fixes 'guanaco: command not found' when running from a shell
that hasn't sourced .bashrc yet (the wrapper had literal $HOME)
- Fix API key env file: was writing literal '***' instead of the
actual key, and the grep pattern was broken. Now uses tmp file
approach that preserves existing env vars.
- Replace escaped string colors ('\033[') with $'\033[' syntax so
ANSI codes are actual escape chars, not literal backslash sequences
printing as raw text on some terminals
- Add helper functions: step(), info(), success(), warn(), fail()
for consistent, cleaner output formatting
- Simplify security warning (no Unicode box-drawing chars)
- Add 'oct' backward-compat alias alongside 'guanaco' binary
- Use heredoc SCRIPT (quoted) for wrapper scripts to prevent
variable expansion at install time
- Cleaner CLI command listing with printf column alignment
- Better systemd service status output formatting
- Bump to v0.3.1
The installer now writes the systemd unit file itself (no need for guanaco install
separately). Defaults to installing as a service so Ctrl+C won't kill it. Shows
dashboard URL and management commands after successful install.
- guanaco install: creates systemd unit, enables + starts service
- guanaco start: shows tip about 'guanaco install' if no systemd service exists
- Ctrl+C shutdown message suggests 'guanaco install' for background service
- install.sh: offers choice between foreground start or systemd install
- Auto-detects Tailscale IP, user, venv path, config dir
- Shows ~/.local/bin/guanaco start instead of bare guanaco start
- Tells user to source .bashrc to get guanaco in PATH
- Prompts 'Start Guanaco now? [Y/n]' at the end of install
- Uses full path to start so it works even before shell reload
- install.sh: detect Tailscale IP, show friendly message instead of scary warning
- cli.py setup: auto-detect Tailscale, suggest 0.0.0.0 as default when found
- Both: when Tailscale is active and binding to 0.0.0.0, Tailscale provides
the auth/encryption layer so no scary security warning needed
OpenAI-compatible LLM proxy that maximizes your Ollama Cloud subscription.
Features:
- /v1/chat/completions router with token tracking
- /v1/messages Anthropic proxy
- 8 search/scrape API emulators (Tavily, Exa, SearXNG, Firecrawl, Serper, Jina, Cohere, Brave)
- Automatic fallback to secondary providers with configurable timeouts
- Streaming support with first-chunk fast failover
- Web dashboard with analytics, config, and usage monitoring
- Caching layer (beta)
- CLI for setup, status, analytics, key management
- Docker and systemd deployment support
- Backward compatible with OCT (ollama-cloud-tools) installations