Personal AI assistant — chat interface with web search, URL fetching, and conversation history.
lefthook install # wire up git hooks (once, after cloning)
cp .env.example .env # fill in your own values (see Secrets below)
tilt up # start Postgres, run migrations, API (4201) + web (4200)Open http://localhost:4200.
.kamal/secrets— local secrets for manual Kamal deploys (gitignored)- GitHub repo secrets — used by CI deploy jobs
- Never commit plaintext secrets
Pre-commit runs Biome (lint + format) on staged files automatically via Lefthook.
Hosted on a Hetzner VPS, deployed with Kamal. Push to main → CI auto-deploys.
kamal setup -c config/deploy.api.yml # First-time: install proxy, boot postgres, deploy API
kamal setup -c config/deploy.web.yml # First-time: deploy web
kamal deploy -c config/deploy.api.yml # Subsequent deploys (API)
kamal deploy -c config/deploy.web.yml # Subsequent deploys (Web)ssh root@<IP> 'bash -s' < scripts/setup-vps.shInstalls ufw firewall, fail2ban, and SSH hardening.
| Service | Domain | Port |
|---|---|---|
| Web (React/Vite) | evee.worldwidewebb.co | 80/443 |
| API (Hono/Bun) | api.worldwidewebb.co | 80/443 |
| Postgres | internal | — |