People are finding products through AI instead of search engines. Sonde helps you understand how your brand, product, or service appears in those responses. Across multiple models, over time.
Sonde tracks:
- Visibility – Are you being mentioned?
- Sentiment – How are you described?
- Ranking – How do you compare against competitors?
Instead of guessing whether your content or SEO efforts are working, Sonde gives you a concrete KPI to measure and optimize.
Sonde is designed to run via Docker Compose.
- Docker
- Docker Compose v2 (
docker compose) - Git
Verify:
docker --version
docker compose versiondeploy user, assign it all files in the folder (chown -R deploy:deploy .) and switch to it before running services (su deploy).
Clone the repository:
git clone https://github.com/compiuta-origin/sonde.git
cd sonde/dockerCreate your environment file:
cp .env.example .envGenerate secure secrets:
./utils/generate-keys.shThis will overwrite secret values inside .env with secure random keys.
Edit .env to fill in the required external service credentials:
SYSTEM_OPENROUTER_KEY
STRIPE_API_KEYSTRIPE_PUBLISHABLE_KEYSTRIPE_WEBHOOK_SECRET
SMTP_HOSTSMTP_PORTSMTP_USERSMTP_PASSWORDSMTP_ADMIN_USER
For production, also configure:
SITE_URLAPI_EXTERNAL_URL
From the docker/ directory:
docker compose up -dYou can now access both Sonde's UI and Supabase Studio:
- App:
SITE_URL(defaulthttp://app.localhost) - Supabase Studio:
API_EXTERNAL_URL(defaulthttp://api.localhost). When accessing it, you'll be prompted for a user/password pair:- Default user:
supabase - Password: see generated
.env
- Default user:
SELECT vault.create_secret('your-service-role-key-value','service_role_key')where your-service-role-key-value is the value associated to SERVICE_ROLE_KEY in your .env file.
You can double check the currently stored secred at any time with:
SELECT * from vault.decrypted_secretsdocker compose downTo remove volumes (
docker compose down -vcd sonde
git pull
cd docker
docker compose pull
docker compose up -d --buildThe generate-keys.sh script creates:
- JWT secrets
- Database passwords
- Service keys
Never reuse these between environments. Never commit .env, store it in a safe place.
Only expose:
- 80 (HTTP)
- 443 (HTTPS)
- 22 (SSH)
Your database and internal services must not be publicly accessible.
If on Ubuntu, you can use ufw (Uncomplicated Firewall).
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpsudo ufw enableCheck status:
sudo ufw statusYou should see:
22/tcp ALLOW
80/tcp ALLOW
443/tcp ALLOW
For those who'd rather trade a small monthly fee for the convenience of a managed service, we offer a hosted version.
GNU AGPLv3.
