| name | oqto-setup |
| description | Guide users through Oqto platform setup, troubleshoot installation issues, and verify deployment configuration. Use when the user is installing Oqto, configuring the platform, or encountering setup-related problems. |
Oqto Setup Guide for AI Agents
Oqto is a self-hosted AI agent workspace platform with multiple deployment modes and configuration options.
Quick Reference
| Component | Required For | Check Command |
|---|
| Rust | Building | cargo --version |
| Bun | Frontend | bun --version |
| Git | Clone repos | git --version |
| Docker/Podman | Container mode | docker --version or podman --version |
| ttyd | Web terminal | ttyd --version |
| pi | Main chat | pi --version |
Required Repositories
Core Platform
| Repository | Purpose | Installation |
|---|
| oqto | Main platform (this repo) | git clone https://github.com/byteowlz/oqto |
Backend Services
| Repository | Purpose | Installation |
|---|
| hstry | Chat history storage (gRPC + SQLite) | cargo install --git https://github.com/byteowlz/hstry |
| mmry | Memory system with semantic search | cargo install --git https://github.com/byteowlz/mmry |
| trx | Issue and task tracking | cargo install --git https://github.com/byteowlz/trx |
Agent Runtime
| Repository | Purpose | Installation |
|---|
| pi | Main chat/LLM interface | cargo install --git https://github.com/byteowlz/pi |
| agntz | Agent toolkit (memory, issues, mail) | cargo install --git https://github.com/byteowlz/agntz |
Voice Mode (Optional)
| Repository | Purpose | Installation |
|---|
| eaRS | Speech-to-text (STT) service | cargo install --git https://github.com/byteowlz/ears |
| kokorox | Text-to-speech (TTS) service | cargo install --git https://github.com/byteowlz/kokorox |
Search Service (Optional)
Cross-Repo Tools
| Repository | Purpose | Installation |
|---|
| sx | External search via SearXNG | go install https://github.com/byteowlz/sx |
| scrpr | Get website content | go install https://github.com/byteowlz/scrpr |
Quick Install All Tools
cargo install --git https://github.com/byteowlz/agntz
agntz tools install all
agntz tools install mmry trx mailz sx
Setup Methods
1. Interactive Setup Script (Recommended)
./setup.sh
The script handles:
- OS detection and prerequisite installation
- User mode selection (single/multi)
- Backend mode selection (local/container)
- Dependency installation (Rust, Bun, shell tools)
- Building all components
- Configuration file generation
- Optional service installation
2. Non-Interactive Setup
OQTO_USER_MODE=single OQTO_BACKEND_MODE=local ./setup.sh --non-interactive
OQTO_DEV_MODE=false \
OQTO_HARDEN_SERVER=yes \
OQTO_SETUP_CADDY=yes \
OQTO_DOMAIN=oqto.example.com \
./setup.sh --non-interactive
3. Manual Setup
See SETUP.md for step-by-step manual installation.
Configuration Modes
User Modes
| Mode | Description | Use Case |
|---|
| Single-user | Shared workspace, no auth | Personal laptops, single dev |
| Multi-user | Isolated workspaces, auth required | Teams, shared servers |
Backend Modes
| Mode | Description | Requirements |
|---|
| Local | Native processes via oqto-runner | opencode, fileserver, ttyd, pi binaries |
| Container | Docker/Podman isolation | Docker/Podman runtime, oqto-dev image |
Note: macOS multi-user requires container mode.
Deployment Modes
| Mode | Auth | TLS | Use Case |
|---|
| Development | Dev users, no JWT | HTTP only | Local development |
| Production | JWT + invite codes | HTTPS via Caddy | Servers, production |
Common Setup Issues
Prerequisites Missing
./setup.sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
curl -fsSL https://bun.sh/install | bash
sudo apt-get install -y ttyd
brew install ttyd
Container Image Not Found
docker build -f deploy/docker/Dockerfile -t oqto:latest .
Port Already in Use
lsof -i :8080
lsof -i :3000
lsof -i :8888
Permission Denied (systemd)
- User services: Use
systemctl --user
- System services: Use
sudo or run as root
Build Failures
cargo clean
cd backend && cargo build --release
cd fileserver && cargo build --release
cd frontend && bun install && bun run build
Environment Variables Reference
| Variable | Default | Description |
|---|
OQTO_USER_MODE | single | single or multi |
OQTO_BACKEND_MODE | local | local or container |
OQTO_CONTAINER_RUNTIME | auto | docker, podman, or auto |
OQTO_INSTALL_DEPS | yes | Install dependencies |
OQTO_INSTALL_SERVICE | yes | Install systemd/launchd service |
OQTO_INSTALL_AGENT_TOOLS | yes | Install agntz, mmry, trx, mailz, sx |
OQTO_DEV_MODE | - | true for dev mode, false for production |
OQTO_LOG_LEVEL | info | error, warn, info, debug, trace |
OQTO_SETUP_CADDY | - | yes to install Caddy reverse proxy |
OQTO_DOMAIN | - | Domain for HTTPS |
OQTO_HARDEN_SERVER | - | yes to enable server hardening (Linux) |
Post-Setup Verification
which oqto && oqto --version
which fileserver && fileserver --version
which opencode && opencode --version
which ttyd && ttyd --version
which pi && pi --version
cat ~/.config/oqto/config.toml
oqto serve --local-mode
cd frontend && bun dev
open http://localhost:3000
Configuration Files
| File | Purpose |
|---|
~/.config/oqto/config.toml | Main server config |
~/.config/opencode/opencode.json | OpenCode agent config |
frontend/.env.local | Frontend environment |
/etc/caddy/Caddyfile | Reverse proxy config (if using Caddy) |
Service Management
Linux (systemd)
systemctl --user enable --now oqto
systemctl --user status oqto
journalctl --user -u oqto -f
sudo systemctl enable --now oqto
sudo systemctl status oqto
sudo journalctl -u oqto -f
macOS (launchd)
launchctl load ~/Library/LaunchAgents/ai.oqto.server.plist
launchctl list | grep oqto
Production Deployment Checklist
When to Use Each Setup Method
| Scenario | Method |
|---|
| First-time setup, development | ./setup.sh (interactive) |
| CI/CD automation | ./setup.sh --non-interactive |
| Production server with hardening | OQTO_DEV_MODE=false ./setup.sh |
| Multi-server deployment | Ansible playbook |
| Container-only deployment | Manual Docker setup |
Troubleshooting Commands
journalctl --user -u oqto -f
sudo journalctl -u oqto -f
oqto config show
oqtoctl status
localStorage.setItem("debug:ws", "1")
ss -tlnp | grep -E ':(8080|3000|8888)'
ls -la ~/.cargo/bin/oqto*
SearXNG Setup
For use with the sx search tool, you can install SearXNG natively (no Docker required).
Option 1: Installation Script (Recommended)
git clone https://github.com/searxng/searxng.git
cd searxng
sudo -H ./utils/searxng.sh install all
Option 2: Manual Step-by-Step
Ubuntu/Debian:
sudo apt-get install -y python3-dev python3-babel python3-venv \
uwsgi uwsgi-plugin-python3 git build-essential libxslt-dev \
zlib1g-dev libffi-dev libssl-dev redis-server
sudo useradd --shell /bin/bash --system \
--home-dir "/usr/local/searxng" \
--comment 'Privacy-respecting metasearch engine' \
searxng
sudo mkdir "/usr/local/searxng"
sudo chown -R "searxng:searxng" "/usr/local/searxng"
sudo -H -u searxng -i
git clone "https://github.com/searxng/searxng" \
"/usr/local/searxng/searxng-src"
cd /usr/local/searxng/searxng-src
python3 -m venv /usr/local/searxng/searx-pyenv
source /usr/local/searxng/searx-pyenv/bin/activate
pip install -e .
Configure: Edit /etc/searxng/settings.yml:
server:
port: 8888
bind_address: "127.0.0.1"
secret_key: "your-secret-key"
search:
formats:
- html
- json
Enable HTTP API:
By default SearXNG only serves HTML. To use the API with the sx tool, you must add json to the search.formats list in /etc/searxng/settings.yml.
Service: SearXNG runs via uWSGI:
sudo systemctl start searxng
sudo systemctl enable searxng
Test API:
curl 'http://localhost:8888/search?q=hello+world&format=json'
Configure sx tool:
export SEARXNG_URL=http://localhost:8888
sx config set searxng.url http://localhost:8888
Why SearXNG in 2026?
SearXNG remains the best FOSS meta-search engine:
- Aggregates results from 246+ search engines
- No tracking or profiling
- Active development and community
- Better than alternatives (Whoogle, LibreY) due to multi-engine aggregation
Getting Help
- Check logs:
journalctl --user -u oqto -f
- Verify config:
oqto config show
- Check SETUP.md for detailed instructions
- Check README.md for architecture overview
- Review backend/examples/config.toml for all options