A Heroku alternative built for Kenya
Most apps that deploy to Heroku deploy here unchanged: your Procfile, version files and PORT handling all work. Connect GitHub, push, and you’re live on two replicas with a managed database.
$ git push origin main
▸ Found a Procfile: web: gunicorn app.wsgi
▸ Detected Python: requirements.txt
▸ Installing packages from requirements.txt
▸ Starting the web process from Procfile
✓ Live on 2 replicas: https://my-app.live.chajio.cloud
Compatible
What carries over from Heroku
Your Procfile
The web: line starts your app, exactly as it does on Heroku.
No Dockerfile needed
Node.js, Python, PHP, Ruby, .NET, Go and Java apps are detected and built the way Heroku builds them, from the same files.
PORT
Your app reads its port from PORT, as it does on Heroku. Nothing to change.
Version files
engines in package.json, .python-version, composer.json, the Ruby version in Gemfile.lock and global.json pick runtime versions the same way.
Config vars
Become environment variables on the Environment tab. heroku config -s prints them ready to copy.
DATABASE_URL
A managed database hands your app its address in the variable you name, so DATABASE_URL code written for Heroku Postgres connects as it is.
Differences
What works differently
- Deploys come from GitHub: connect a repository and every push to your branch goes live. There is no
git push heroku. - Every app runs as two copies behind a load balancer, on every plan, including the Free one.
- A managed PostgreSQL, MariaDB or MongoDB database is part of every plan, not an add-on, with its own standby replica.
- A
Dockerfilein your repository is built as written. Noheroku.ymlneeded. - Prices in Kenyan shillings, M-Pesa payments and a support team in Nairobi.
- App Hosting runs your web process. A
release:command can move to the start of yourweb:line, as inbin/rails db:prepare && bin/rails server. If your app relies on worker dynos, Heroku Scheduler or add-ons such as Redis, talk to us before you move.
Moving
Move from Heroku in five steps
Put your code on GitHub
If you deploy with
git push heroku main, push the same repository to GitHub.Create a project
Sign in, connect GitHub and pick your repository and branch. Your Procfile and stack are detected.
Copy your config vars
Run the command below and add the values on the Environment tab. Leave out
DATABASE_URL: your new database sets its own.Your Heroku config vars, one per lineheroku config -s --app your-appAdd a database
Create a PostgreSQL database named
DATABASE_URL, as on Heroku, so your code doesn’t change. Need your data moved? Contact us and we’ll help.Deploy, then switch your domain
Check your app on its free .live.chajio.cloud address, then add your domain on the Domains tab and point its DNS at us.
Every plan
Included on every plan
2 replicas of every app
Two copies behind a load balancer, so a restart or a failed machine never takes you offline.
A managed database
PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.
Deploy on every push
Connect GitHub once; every push to your branch builds and goes live.
One-click rollbacks
Go back to any earlier successful deployment from the Deployments tab.
Free SSL, your domain
Certificates issued and renewed for you, plus a free .live.chajio.cloud address.
Build and runtime logs
Watch builds as they run, and see what your app prints as it serves visitors.
CPU, memory and network
Metrics for every app, from the last 15 minutes to the last 30 days.
Zero-downtime deploys
A new version takes visitors only once its health check passes.
Pricing
Plans that replace your dynos
Free Plan
5GB DB Storage · 2GB RAM
Then Ksh 350/mo
- 2 vCPU
- 2 Apps
- 1 Database
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Growth Plan
10GB DB Storage · 2GB RAM
- 3 vCPU
- 4 Apps
- 2 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Business Plan
20GB DB Storage · 4GB RAM
- 4 vCPU
- 6 Apps
- 3 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Pro Plan
30GB DB Storage · 8GB RAM
- 8 vCPU
- 10 Apps
- 5 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
FAQ
Questions about moving from Heroku
Most will. Apps without a Dockerfile are detected and built the way Heroku builds them: your Procfile’s web line starts the app, version files pick the runtime, and the port arrives in PORT. What does not carry over is anything outside your repository: add-ons, worker dynos, the release phase and Scheduler jobs.
Yes. Your Procfile’s web: line is how your app starts here too. If you have no Procfile, the stack is detected and started the way Heroku would start it.
A few, mostly because of Rails 8’s defaults rather than Heroku: production uses one database for the app, cache, queue and cable, background jobs run inside Puma with SOLID_QUEUE_IN_PUMA=true, and the health check path is /up. Apps that rely on Sidekiq need Redis and a worker process, which are not offered.
A managed PostgreSQL database included in your plan, with a standby replica on another machine. Give it the variable name DATABASE_URL and code written for Heroku Postgres connects without changes. MariaDB and MongoDB are available too.
Instead of choosing dyno sizes, you choose a plan. The Free plan comes with 2 vCPU, 2GB RAM and 2 apps, larger plans add more, and every app runs as 2 replicas for high availability.
You can start on the Free plan: free for your first month, then Ksh 350 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.
Yes. We accept M-Pesa, Visa, Mastercard, PayPal, and bank transfers, and every plan is priced in Kenyan shillings. M-Pesa is the quickest option for Kenyan customers.
No. Heroku is a trademark of Salesforce, Inc., and Chajio Cloud is not affiliated with Heroku or Salesforce. Heroku is named on this page only to describe compatibility.
By language
Setup notes for your stack
Bring your app over today
Your first month is on us. Connect GitHub and see your Heroku app live in minutes.