Skip to content

Changelog

  • Command palette search. Press Cmd+K to search across projects, servers, and actions from anywhere in the dashboard.
  • Upgrade daemon from dashboard. Check for updates and upgrade the daemon directly from the web UI without SSH.
  • Dark mode. The dashboard now respects system color scheme preferences.
  • Zero downtime deploys. Deployments now wait for DNS propagation and port availability before routing traffic, eliminating brief 502 errors on new deploys.
  • Stale deployment cleanup. Orphaned deployment containers are now automatically cleaned up on daemon startup.
  • Better deployment timeout feedback. When a service fails to start, the output now shows which port was being waited on and for how long.
  • DNS verification before routing. Traffic is only sent to new services after both internal DNS resolution and port checks pass.
  • Docker log rotation. Container logs are now automatically rotated to prevent disk exhaustion on long-running services.
  • Disk usage in stats. The disco stats command now includes disk usage alongside CPU and memory.
  • Cron timeout configuration. Set custom timeouts for cron jobs via cronTimeout in disco.json.
  • Volume import through Cloudflare. Fixed volume imports failing when the server is behind a Cloudflare tunnel.
  • Health checks. Services can now define health check endpoints in disco.json, used to verify readiness before routing traffic.
  • Domain validation. Domain names are now validated before being added to prevent typos and invalid configurations.
  • Services panel. The dashboard now shows all running services for a project with their status and scale.
  • SSH keys with passphrases. disco init now supports SSH identity files that require a passphrase.
  • Volume export improvements. Better handling when exporting to terminal vs file, with clearer output messaging.
  • Multi-node cluster support. Add and remove nodes from your swarm via CLI (disco nodes:add, disco nodes:remove, disco nodes:list), with proper draining before removal.
  • Custom disco.json path. Set discoJsonPath in disco.json to point to your actual config file, helpful for monorepos.
  • Automatic Docker build cache pruning. Build cache is now cleared daily to prevent disk from filling up.
  • Search in log viewer. Search within deployment and runtime logs in the web dashboard.
  • Real-time dashboard updates. The dashboard now receives live updates via server-sent events when deployments finish, env vars change, or domains are added.
  • Stats command. New disco stats command shows CPU, memory, and network usage for all running services.
  • Service scale persistence. Scale settings are now remembered across deployments instead of resetting to 1.
  • Better error reporting. Command run failures now include the actual error output instead of generic messages.
  • Cancel deployments. Stop a running deployment with disco deploy:cancel or from the dashboard.
  • Deployment hooks. New hook:deploy:start:after runs after the service starts but before traffic is routed.
  • Postgres version selection. Specify which Postgres version to use when creating instances with --version.
  • Deployment number env var. DISCO_DEPLOYMENT_NUMBER is now available in your service environment.
  • List servers. New disco discos:list command shows all configured Disco servers.
  • Custom SSH identity file. Specify which SSH key to use during init with --identity-file.
  • Async deployment flow. Deployments are now fully async internally, improving reliability under load.
  • JWT authentication. The API now supports JWT Bearer tokens in addition to API keys.
  • CORS configuration. Set allowed origins for cross-origin requests to the API.
  • Easy mode. Simpler disco.json format that auto-detects your framework and generates the Dockerfile, just set type: easy and optionally a build command.
  • SSH tunnels. Access internal Postgres securely via disco postgres:tunnel.
  • Cloudflare Tunnel support. Run Disco behind a Cloudflare Tunnel with disco init --cloudflare-tunnel.
  • .env as build secret. Environment variables are now available during Docker builds as a secret at /run/secrets/.env.
  • Generator services. New service type that runs once during deployment to generate static files.
  • Branch tracking. Projects can now track a specific branch instead of always deploying the default branch.
  • Postgres addon. Managed Postgres with disco postgres:addon:install, including database creation, user management, and per-project attachment.
  • Domain management API. Add, remove, and list domains programmatically via the API and CLI.
  • GitHub Apps integration. Connect repos via GitHub Apps instead of deploy keys for better security and easier setup.
  • Volume scoping. Volumes are now scoped to projects, preventing accidental cross-project access.
  • API key usage tracking. See when each API key was last used to help identify unused keys.
  • Cron jobs. Schedule recurring tasks in disco.json with standard cron syntax, replacing the need for a separate worker.
  • API key invites. Generate invite links to let teammates add their own API keys without sharing credentials.
  • Volume import/export. Move data between servers with disco volumes:export and disco volumes:import.
  • GitHub webhook secrets. Webhook signatures are now verified to prevent unauthorized deployment triggers.
  • Flexible init command. Rewritten disco init supports Raspberry Pi, AWS EC2, and custom SSH configurations.
  • Static site support. Deploy static sites with automatic builds via type: static in disco.json.
  • Node scaling. Scale services across multiple nodes with disco scale:set.
  • Docker registry support. Push images to a private registry for multi-node deployments.
  • Pre-deploy hooks. Run commands before deployment starts with hook:deploy:start:before.
  • Better deployment output. Live streaming of build logs with clearer error messages when services fail to start.
  • Run commands. Execute one-off commands in your project’s container with disco run.
  • Project deletion. Remove projects cleanly, including their containers, networks, and Caddy config.
  • FastAPI migration. Rewrote the daemon from Pyramid to FastAPI for better async support and performance.
  • Server-sent events for logs. Replaced websockets with SSE for more reliable log streaming.
  • Build output streaming. Deployment logs now stream in real-time instead of appearing all at once.
  • Initial release. Core deployment engine with Docker Swarm, Caddy reverse proxy, and GitHub webhooks.
  • Multi-service projects. Run multiple services (web, worker, etc.) from a single disco.json.
  • Volumes. Persistent storage that survives deployments, with attach/detach support.
  • Environment variables. Set and manage env vars per project via the API.
  • Log streaming. Tail logs from any service with filtering by project and service name.
  • External syslog. Forward container logs to external syslog servers for aggregation.