Repository navigation
v0.8.0
Highlights
- Live task logs: follow a running task's output in the web UI, streamed from the agent (SSE) (#48, @laupernoe)
- Notifications: in-app bell plus Slack, Discord, generic webhook and e-mail channels, with per-event preferences (#49, @laupernoe)
- Web Push: browser notifications, even with the tab closed (#58, @laupernoe)
- Installable app (PWA): install orch from the browser, with an offline page and a "New version available" prompt (#54, @laupernoe)
- Usage page: weighted tokens, runs, success rate and project budgets over 7/30/90 days (#50, @laupernoe)
- Task history: search, filters and pagination over every task that ran (#51, @laupernoe)
- Task templates: reusable task skeletons with
{{placeholders}}, personal or shared with a project, plus 4 built-in ones (#60, @laupernoe)
Operations
- Observability: Prometheus
/metrics(internal network only),/readyz, optional OpenTelemetry traces and a ready-made Prometheus + Grafana stack indeploy/observability(#53, @laupernoe) - Scheduled backups: cron schedule, daily/weekly/monthly rotation, optional age encryption and S3-compatible upload, and
backup/restore.shto restore (#52, @laupernoe) - Rate limiting on every route family, with
429+Retry-Afterand a per-connection cap on agent messages (#55, @laupernoe) - Server image down from 904 MB to ~384 MB (#59, @laupernoe)
- Dispatcher loads one snapshot per tick instead of queries per task × member (#56, @laupernoe)
- Faster browser-test CI (#57, @laupernoe) and Renovate for dependency updates, every PR reviewed by hand (#47, @laupernoe)
Many thanks to @laupernoe, who wrote every pull request in this release.
New optional settings (deploy/server/.env)
Everything below is off or has a safe default; nothing needs to be set to upgrade.
| Feature | Variables |
|---|---|
| E-mail notifications | SMTP_HOST (enables the channel), SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM |
| Web Push | VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_SUBJECT (all three; generate the pair with docker run --rm node:22-alpine npx -y web-push generate-vapid-keys) |
| Metrics / tracing | METRICS_ENABLED, METRICS_TOKEN, OTEL_EXPORTER_OTLP_ENDPOINT; GRAFANA_ADMIN_PASSWORD for deploy/observability |
| Backups | BACKUP_SCHEDULE, BACKUP_KEEP_DAILY/WEEKLY/MONTHLY, BACKUP_VOLUME, BACKUP_AGE_RECIPIENT, BACKUP_S3_*, POSTGRES_MAJOR; ORCH_RESTORE_TMPDIR for restore.sh |
| Rate limits | RATE_LIMIT_ENABLED, RATE_LIMIT_WINDOW_SEC, RATE_LIMIT_{API,AUTH,WEBHOOK,MCP,HEAVY,STREAM,AGENT_CONNECT}_MAX, RATE_LIMIT_AGENT_MSG_PER_SEC (see docs/configuration.md) |
| Notification delivery | NOTIFY_MAX_ATTEMPTS, NOTIFY_RETRY_BASE_MS, NOTIFY_RETENTION_DAYS |
BACKUP_HOUR_UTC and BACKUP_RETENTION_DAYS still work (they map to BACKUP_SCHEDULE and BACKUP_KEEP_DAILY).
Upgrade
Server: set ORCH_VERSION=0.8.0 (or keep latest), then from deploy/server:
git pull
docker compose pull
docker compose up -d
docker compose up -d --build backup # the backup image is built locally and changed in this releaseFive additive migrations apply on start (notifications, task history index, Web Push subscriptions, task templates). The Caddy routes changed (/metrics and /readyz are never public, PWA files are revalidated), so git pull before up -d. Agents: orch update.
Optional: to collect metrics, set METRICS_ENABLED=true and start deploy/observability (see the Observability docs page).