EthioDeploy/Docs
HomePricing
Overview

Overview

  • Getting started
  • How deploys work

Frameworks

  • Framework guides

Configuration

  • Web services & background workers
  • Environment variables
  • Addons
  • Database & Redis tools
  • Branch deployments
  • Custom domains
  • Analytics

Domains

  • Buying a domain

Agent mode

  • Agent mode
  • Agent plans & credit

Account

  • Team access
  • Billing

Help

  • Troubleshooting
  • Still stuck?
Deploy guides
  • Next.js
  • Node.js
  • Python
  • SvelteKit
Compare
  • AI coding agent
  • Hosting in Ethiopia
  • vs Vercel
  • vs Render
  • vs Railway
DocsConfiguration

Web services & background workers

The difference between a Web Service and a Background Worker on EthioDeploy, and how to configure each.

Last updated September 28, 2026

Every project is a Web Service by default: we expect it to serve HTTP on the port Nixpacks starts it on, we route <slug>.ethiodeploy.com(and any custom domain) to it, and every deploy waits for a health check to pass before switching traffic over — the old version keeps serving until the new one proves it's ready.

Some projects don't serve HTTP at all — a Telegram bot polling getUpdates, a queue consumer, any long-running background process. For those, set the project's Service Type to Background Worker — either when creating the project, or later from Settings → Build. A worker changes three things:

  • No domain routing and no HTTP health check — there's no port to check. A deploy is considered healthy once the new process stays running past a short startup grace period.
  • Deploys stop the previous instance before starting the new one, instead of running both briefly side by side. For most apps that overlap is harmless; for something holding a single long-poll connection open (like a Telegram bot), running two instances at once causes the provider to kill one of them with a conflict error. Sequential deploys mean a few seconds of downtime instead.
  • On the Free plan, a worker never sleeps when idle — there's no traffic to idle on in the first place, and the process needs to stay running to keep polling. It's still bound by the same monthly usage quota as everything else, so a worker that uses meaningfully more memory than a lightweight bot can trip that quota before the month is out.
PreviousFramework guidesNext Environment variables

Product

  • Pricing
  • Documentation
  • AI coding agent
  • Agent mode docs
  • Domains
  • Hosting in Ethiopia

Deploy guides

  • Next.js
  • Node.js
  • Python
  • SvelteKit

Compare

  • EthioDeploy vs Vercel
  • EthioDeploy vs Render
  • EthioDeploy vs Railway

Company

  • About
  • Support
  • Contact
  • Terms
  • Privacy

EthioDeploy: agentic first development and deployment, started in Ethiopia, built for developers everywhere.