Expose your the agent dashboard publicly with one ngrok tunnel. Everything runs locally; ngrok creates a public URL.
Add to your .env:
DASHBOARD_PASSWORD=your-secret-password
When set, visitors get a browser login popup. Username can be anything; password must match. Leave unset for no auth (local dev only).
-
Build the dashboard (one-time, or after changes):
cd dashboard && npm run build
-
Start the API (serves dashboard + API on port 8000):
python -m src.agent.api
-
In another terminal, start ngrok:
ngrok http 8000
-
Open the ngrok URL (e.g. `https://your-subdomain.ngrok-free.app in your browser.
python scripts/start_public_dashboard.pyThis builds the dashboard and starts the API. Then run ngrok http 8000 in a second terminal.
cd dashboard && npm run build- Restart the API (Ctrl+C, then
python -m src.agent.api) - ngrok keeps running — no changes needed
When using ngrok, set in .env:
TELEGRAM_WEBHOOK_URL=https://your-subdomain.ngrok-free.app
Telegram will push updates to your server instead of long-polling. Zero API calls when idle.
- Your PC must stay on for the dashboard to be reachable.
- The API and dashboard are served from the same origin, so no CORS setup is needed.
- If you use ngrok's custom domain (Hobby plan), the URL stays the same across restarts.