A changelog you can follow by RSS#
Every change since the first deploy on July 23 is now listed on this page, newest first. Subscribe to the RSS feed to get new entries in your reader.
Features, improvements and fixes in EthioDeploy, every one since the first deploy.
Last updated
Showing all 69 entries
Every change since the first deploy on July 23 is now listed on this page, newest first. Subscribe to the RSS feed to get new entries in your reader.
This week's new pages cover more stacks and app builders, plus a guide to hosting a backend for free. There is now a blog with fixes for common deploy errors.
New projects and agent previews are now served at your-project.ethiodeploy.app, which keeps your apps on a different domain from the dashboard. Existing projects keep their ethiodeploy.com address, so custom domains, OAuth callbacks and webhooks that point there keep working.
Mark an environment variable as runtime only and it is left out of the build, so it never ends up in your app's image. Your app still gets it when it runs. Set it from the dashboard, the API, or the CLI with --runtime-only.
A new deploy now gets traffic only once it is ready, and the previous version keeps serving until traffic has moved over. If the switch fails, the version already serving your site stays up.
Small fixes in the dashboard and the DNS editor.
New guides for frameworks and app builders, plus side-by-side comparisons with other hosts.
Fixes for deploy health checks, sleeping apps, PHP apps and database addons.
PHP and Laravel projects now build on the official PHP image with nginx, so they get current PHP releases, including PHP 8.4. The PHP version is picked from your composer.json, and extensions come from its ext-* requirements.
ethiodeploy new creates a project from your GitHub repo, links the folder you're in, and follows the first deploy. Use --no-deploy if you want to set environment variables before the first build.
Node 22 builds now use Node 22.19, which fixes Vite 8 builds that failed with "Cannot find native binding". TanStack Start apps are detected and run as servers without a custom start command.
Postgres and MySQL addons now get scheduled, encrypted backups, and you can take a snapshot or restore one from the Backups tab. A MySQL restore takes a safety snapshot first and rolls back if anything fails.
MySQL 8.4 is now available as an addon alongside Postgres and Redis, with its connection details added to your project automatically.
For a domain you bought on EthioDeploy, you can now forward example.com to www.example.com from the DNS editor, even when the site itself is hosted somewhere else.
If your project is served on www.example.com, turn on Forward apex to www in project settings and visitors to example.com are redirected there. It works once the www domain is verified and example.com points at EthioDeploy.
Fixes for DNS records and checkout.
Install it with npm install -g ethiodeploy, log in through your browser, then deploy, follow build and runtime logs, and manage environment variables from the terminal. For CI, create an API token in Settings and every command takes --json for scripts.
Settings now has separate tabs for General, Plan and usage, Agent, Team and API tokens, so each one is easier to find.
Pasting KEY=VALUE into the Add variables form fills in both fields, and pasting a multi-line .env file adds one row per variable. Rows that fail to save stay in the form so you can fix them.
If you close the tab or lose your connection, the agent now finishes its turn and saves it, and sessions broken by an earlier dropped turn work again. Long sessions summarize older history so they keep going, and a turn stops before it spends more than your balance, with a notice when it ends early.
The dashboard stays more responsive while deploys run.
Agent previews load faster and start more reliably.
The docs are now split into one page per topic, with search, a table of contents and next/previous links. New pages cover buying domains, agent mode, agent plans and paying by card or bank transfer.
You can now pay for a domain by card in US dollars. Card-paid domains renew automatically each year, so they don't lapse while you aren't looking.
Hosting plans and agent plans can now be paid by card in US dollars, alongside bank transfer in Birr. The pricing and settings pages have a USD/ETB switch, with USD as the default. Changing plans updates your existing subscription: upgrades are charged right away and downgrades take effect at the next billing period.
Agent mode has three monthly plans: Starter ($5 or 950 ETB), Pro ($20 or 2,999 ETB) and Max ($50 or 8,999 ETB). Each includes agent credit that is used before your wallet balance. Every account also gets a one-time free trial of 100,000 tokens on the default model.
Each agent session can run your app's dev server and show it in a preview panel next to the chat, so you can check changes before applying them.
Agent mode opens a full-screen workspace where you chat with an AI agent that edits files and runs commands in a private copy of your project. Review the diff, then apply it: the changes are pushed to a new branch with a pull request, and you can choose to merge right away. Pick from Claude, GPT and other models, and resume earlier sessions from the sidebar.
Pro now costs 1,399 ETB a month, down from 2,499 ETB, and Business costs 4,999 ETB, down from 9,999 ETB. Existing subscribers pay the new price at their next renewal with nothing to do.
Environment variables now have their own tab. You can mark a variable as sensitive so its value can be replaced but never shown again, and paste a whole .env file to add many variables at once, with a preview before saving.
Branch deployments can now override any environment variable, so previews don't have to use your production secrets. Variables you don't override are still inherited from production.
More reliable HTTPS and routing for new projects and custom domains.
Fixes for sleeping projects, payments and domain management.
A domain you bought can now serve several projects: attach the root domain and any number of subdomains, each to a different project. You can also add DNS records that point a subdomain at a site hosted elsewhere, and each hostname shows whether its DNS is live yet.
Fixes for custom domain verification, domain search and Python builds.
Smaller fixes to payments, domain registration and failed deploys.
The DNS page has been redesigned with a project switcher, so you can move a domain to another project instead of only unlinking it. Records have copy buttons, and a sidebar shows when the domain was registered and when it expires. The My domains list now tells you when a domain needs a deploy before it starts serving your project.
Domain checkout has searchable country and phone-code pickers, and it checks your country before you pay. If a payment fails, the form keeps what you typed, and the success, failed and pending screens are clearer.
Smaller fixes to domain checkout and payments.
Search for a domain, buy it by bank transfer, and attach it to a project at checkout or later from project settings. You can edit A, AAAA, CNAME, TXT and MX records with an optional TTL, and see whether each record has propagated yet.
A batch of smaller fixes and polish from this week.
Choose Worker as the service type when you create a project, or later in Settings, to run bots, queue consumers and other processes that do not serve HTTP. Workers skip the web health check, never sleep, and stop the old instance before starting the new one so long-polling bots do not run twice.
In project settings you can now choose which path is checked before a deploy goes live and which status codes count as healthy. Apps whose root page returns something like a 401 can now deploy and wake from sleep normally.
A Cancel button now appears on deploys that are queued, building or deploying. A running build stops within a couple of seconds.
A new Network tab lists the HTTP requests reaching your app with method, path and status code. Bot and scanner traffic is hidden by default.
Project analytics now shows LCP, CLS and INP from real visits, rated Good, Needs improvement or Poor. New CPU and memory charts sit next to traffic, and deploy markers on the charts show which release a change lines up with.
Add a custom name.ethiodeploy.com address to any project, on every plan including Free. The original generated address keeps working.
A new Logs tab shows the live output of your running app, for production or any branch deployment, without needing server access.
Set a Root Directory when you create a project and EthioDeploy detects, builds and runs the app from that folder instead of the repository root.
Opening a pull request from a branch in the same repository now deploys a preview and posts a comment with its status and link. The preview is removed when the pull request closes, and you can turn this off per project.
The dashboard home now opens with a 24-hour traffic chart across all your projects, and project cards show live activity and more detail at a glance.
The docs now cover database addons, the SQL and Redis tools, branch deployments, analytics and team access.
Pro is now 2,499 ETB a month and Business is 9,999 ETB a month. Business also includes a larger monthly usage allowance of 4,500 GB-hours.
Projects with a Redis addon get a Redis tab with connection details, live stats such as memory, operations per second and hit rate, and a key browser where you can view, edit, delete and set expiry on keys.
Run queries, browse your schema as a diagram and edit rows in a table editor, all from the dashboard. You can also run the .sql files in your repository's migrations folder in order, with each file applied all or nothing. Teammates without admin access get read-only queries.
Create a managed Postgres or Redis addon from the project page. Its connection string is added to your app automatically as DATABASE_URL or REDIS_URL.
A batch of smaller fixes and polish from this week.
Project analytics now includes a world map and country list of visitors, a breakdown of response status codes, and a clearer page-view trend chart.
Top up a wallet by bank transfer to cover usage beyond your plan's monthly allowance instead of being blocked. If a renewal is late you now get a 2-day grace period before your plan drops to Free, and paying early adds to your current cycle instead of restarting it.
Pay for a paid plan in Birr with a CBE or telebirr transfer and submit the reference at checkout. The plan activates once the transfer is verified and covers 30 days.
Each project now runs on its own private network and with its own memory and CPU limits, so other projects cannot reach it or slow it down. Environment variables are now encrypted with a separate key for each project.
A batch of smaller fixes from the first week.
The docs now include a section with deploy steps for each supported framework.
On the Business plan, give other GitHub users access to your projects by username, with a Viewer, Developer or Admin role on each project. Pro and Business builds also get priority in the build queue when it is busy.
Plans now set how many branch deployments a project can have and how much monthly usage an account includes, with usage tracked in settings. Free projects and all branch deployments sleep after 30 minutes without traffic and wake on the next request; Pro and Business production stays always on.
Each project has an analytics page with page views, visitors and server usage, and you can filter it by branch.
Add a branch deployment to give another branch its own live URL that redeploys on every push. You can also switch the production branch, and an existing branch deployment is promoted without a rebuild.
Point a domain you own at a project with a DNS record and a TXT record to prove ownership. EthioDeploy checks the records and serves your site on the domain with HTTPS.
Sign in with GitHub, pick a repository and EthioDeploy builds and deploys it with no Dockerfile needed, then redeploys on every push. You can view build logs, set environment variables, redeploy any earlier commit and see a live preview of your site from the dashboard.