Operations

Local Development

dnsmasq setup, hot reload, and service URLs for local development.

Local development uses dnsmasq for wildcard DNS resolution and hot-reload for all services.

DNS Setup (dnsmasq)

# Install dnsmasq
sudo apt install dnsmasq    # Linux
brew install dnsmasq         # macOS

# Configure wildcard for *.fimula.local
echo "address=/fimula.local/127.0.0.1" | sudo tee /etc/dnsmasq.d/fimula.conf
sudo systemctl restart dnsmasq

Service URLs

ServiceURL
Frontendhttp://ubios.fimula.local
APIhttp://api.ubios.fimula.local
Agnohttp://agno.fimula.local:8001 (internal)
LiteLLM Proxyhttp://ubios.fimula.local:4000
Difyhttp://dify.fimula.local:5001
Metabasehttp://metabase.fimula.local:3000
MinIOhttp://minio.fimula.local:9001
Mailpithttp://mail.fimula.local:8025
Uptime Kumahttp://ubios.fimula.local:3001
Dozzlehttp://ubios.fimula.local:8080

Hot Reload

All three application services support hot reload:

ServiceHow it worksTrigger
Nuxt (app)Vite HMRFile save in app/
Laravel (api)Octane auto-reloadsFile save in api/
Agno (agno)Uvicorn --reloadFile save in services/agno/

Changes appear within 1–2 seconds. No manual restart needed.

Debugging Per Service

Laravel

# Tinker REPL
docker exec -it ubios_api php artisan tinker

# Tail logs
docker compose -f docker-compose.dev.yml logs -f api

# Check routes
docker exec -it ubios_api php artisan route:list

Nuxt

# Shell access
docker exec -it ubios_app sh

# Check build errors
docker compose -f docker-compose.dev.yml logs -f app

Agno

# Shell access
docker exec -it ubios_agno bash

# Health check
curl http://ubios.fimula.local:8001/health

# Test a query directly
curl -X POST http://ubios.fimula.local:8001/query \
  -H "X-Agno-Key: dev-key" \
  -H "Content-Type: application/json" \
  -d '{"question": "What is our revenue?", "user_id": "test"}'

PostgreSQL

# Direct query
docker exec -it ubios_api bash -c '
  PGPASSWORD=331331331 psql -U postgres -h ubios_postgres -d ubios
'

# Check schema
\d ubios_semantic.entities
\d ubios_config.llm_routing

Info

If you don't want to set up dnsmasq, use the IP Testing approach instead — it works on any machine with just an IP address.