Skip to content

v0.8.0

Choose a tag to compare

@Theroxat Theroxat released this 23 Oct 19:09
· 102 commits to main since this release

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 in deploy/observability (#53, @laupernoe)
  • Scheduled backups: cron schedule, daily/weekly/monthly rotation, optional age encryption and S3-compatible upload, and backup/restore.sh to restore (#52, @laupernoe)
  • Rate limiting on every route family, with 429 + Retry-After and 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 release

Five 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).