Hosting not per project: why one balance

ohmyho.st (ohmyhost) prices hosting per organization, not per project. One balance funds every project: Free gives 200 credits a month, Paid is $10 a month for 1,000 credits, and each project draws what it uses. No per-project base fee, no deploy dashboard, and an export that works without asking. Rates are the provider's cost plus a small margin.

Short version: I got tired of paying five bills for two live projects and seven parked ones. ohmyho.st buys hosting, Postgres, domains and transactional mail from the providers underneath, adds a small margin, and meters what your projects actually use from one prepaid balance. This page is the reasoning, so you can decide whether it fits you before you connect an agent.

Buy in bulk, sell at cost plus a little

Every credit you spend is priced by one formula: the provider's list cost times 1.15, divided by 0.0035. That is the whole business model. It is published as a rate card in the pricing reference, and your agent can read the active cards through organization_credits_get. One credit is $0.01 of nominal value. $10 a month buys 1,000 credits that expire at period end. A top-up buys 100 credits per dollar and never expires; the part of a checkout above the first hundred dollars earns 125 per dollar. Consumption rates never change with how much you buy.

The card reads like a receipt: 98.571429 credits per 1,000,000 requests, 10 credits per 256 MiB for one awake hour, 6.571429 credits per 1 deployed script for a 744-hour month. One active database hour at 512 MiB RAM costs 20.00 credits; the 256 MiB size available on Free costs 10.00 credits. The database size includes its disk and seven-day backups; there is no separate database CPU, network or connection charge.

What the formula rules out matters as much as what it charges. There is no minimum charge on any meter. Bandwidth from Workers costs the provider nothing, so it costs you nothing. SQL exports are free. A failed or unperformed provider action is never charged. And the trade-off, stated plainly: provider free tiers stay with the platform, and you pay the list-cost rate from the first unit. That allowance, plus fifteen percent, is the margin, and it is written down.

Why a formula and not tiers: a plan has to guess your usage, and the guess is priced so that most customers overpay. A formula does not guess. It also stops me from hiding a price rise. When a provider changes its list cost, a new dated card is published before it takes effect, and the old card stays published because a published card is immutable.

No per-project fee

Hosting is usually priced per project, per seat or per service. That punishes the person with nine side projects and two live ones. Supabase Pro starts at $25 a month, and each additional project's Micro instance is $10 a month. Vercel Pro is $20 a month, and each developer seat is $20. Put five side projects on Vercel Pro, Supabase Pro and Resend Pro and the list price is $105 a month before you serve one request.

Here every project draws from the organization's one balance. There is no fixed project-count limit and no base fee per project. Every project gets a Dev and a Prod address on check.omh.st; a customer-owned hostname needs Paid or, on Free, a project that shows the “Powered by ohmyho.st” flag. It uses credits at 32.857143 credits per 1 paid custom hostname for a 744-hour month, nothing while the flag shows. What a parked project keeps paying is exactly what it keeps: its deployed script and any customer files. A sleeping database stops charging for RAM, and its disk and seven-day backups are included. This is a quiet side project for one month:

Item Credits
2 build minutes 2.41
5,000 requests 0.49
50,000 CPU-ms 0.33
1 active database hour at 256 MiB RAM, including disk and seven-day backups 10.00
1 deployed script 6.57
Total: A quiet side project for one month about 19.80

About $0.20 of credit value at the standard rate.

A project can carry a monthly budget if you want a ceiling: continue, which warns and keeps going, or stop. A budget is a limit, not a second wallet. A zero balance starts a 7-day grace period instead of a surprise invoice; funded services keep running, and afterwards only unfunded services suspend. Automatic recharge stays off unless the Owner turns it on, so your balance never refills without you. The budgets guide has the exact rules.

List prices checked on 2026-09-28 — Vercel pricing. List prices checked on 2026-09-28 — Supabase pricing. List prices checked on 2026-09-28 — Resend pricing.

No dashboard runs your deploys

There is no deploy dashboard. Your coding agent deploys through MCP: 130 tools, listed in the tool catalog. It continues the current managed or GitHub source, saves/links the selected version, plans with deployment_plan, and you confirm before deployment_create runs. Every expensive or destructive action is that same pair: promotion_plan then promotion_execute, rollback_plan then rollback_execute, delete_plan then delete_execute. A plan quotes its build before it starts, so what you confirm is a price and a list of effects, not a spinner.

Secrets never travel through the chat. A local agent uses stdin from secret_set_command; a supported remote connection uses the private portal input. Both keep values out of tool arguments and source. See secrets.

The portal at app.ohmyho.st shows projects, credits, budgets and API tokens. It is a place to look, not a place to deploy: see what a project spent, set a budget, create a token. I wanted the thing that runs your deploy to be the same thing that wrote the code, because that is where the context is. Every tool call is a discrete, readable step, and a stalled operation is diagnosed with operation_get and deployment_logs rather than by refreshing a page.

For a portfolio this is the whole point. Ten projects in a dashboard world means ten deploy flows to remember. Here it means one prompt per project and one balance to watch.

Unhappy? Take your database and go

Ask your agent for an export (project_export_create, then project_export_get) and you get a password-encrypted ZIP with a portable SQL dump. The password is yours: it is read from a private file on your machine and never enters the tool arguments. One accepted request per project per rolling 24 hours, a signed download link valid for 24 hours, and the archive is kept for seven days. SQL exports are free, and the Owner can request one at zero credits. There is no schedule and no bucket destination; it is on demand and asynchronous, and the plaintext SQL limit is 256 MiB. The steps are in the export Skill and the backups guide.

Restore the dump on any Postgres host. Nothing in it is ours: the schema is your migrations, applied from your GitHub repository, and the runtime binding is plain PostgreSQL. For a look without an export, database_access_create issues a time-bound, revocable Postgres login you can use with psql.

Your users stay yours too. Application auth is customer-owned: Better Auth and your own WorkOS AuthKit are the verified integrations, and the platform login is a separate thing. Move the dump, point your app at the new host, and the user table moves with it because it was never in a proprietary store. When you are done, delete_plan then delete_execute removes the project and its archives.

Honest about where others win

A single busy production app with serious traffic may still belong on Vercel and Supabase. Priced here, one busy production app for one month is about 36,533.15 credits, about $365.33 of credit value. Vercel Pro at $20, Supabase Pro from $25 and Resend Pro at $20 list at $65 together. If that usage fits inside their plans, they are cheaper. Metering wins when you have many small things; a plan wins when you have one big thing that fills it.

Vercel Hobby is $0 a month for one developer seat. If that is all your projects need, it beats any paid balance, and I will not pretend otherwise.

Railway, Fly.io and Render run any container. ohmyho.st runs Astro, Next.js, Vite/React and TanStack Start on Workers, deployed from a GitHub repository, and nothing else. Resend Pro is $20 for 50,000 emails a month; here mail is 0.18 credits per 1 sent recipient, counted per sent recipient, and it needs Paid plus a verified mail domain. Send more than about 10,000 recipients a month and Resend is the better price. Supabase gives you Auth, Storage, Realtime and Edge Functions in one console; here you bring Better Auth or WorkOS AuthKit and write plain SQL.

Every comparison page says where the other side wins, with list prices checked on a named date. List prices checked on 2026-09-28 — Vercel pricing. List prices checked on 2026-09-28 — Supabase pricing. List prices checked on 2026-09-28 — Resend pricing.

Dated prices as a principle

Every comparison page on this site carries the date its list prices were checked and links the page they came from. The line looks like this: List prices checked on 2026-09-28 — Vercel pricing.

The sources are screenshots in the repository, one per vendor, taken at a fixed viewport on that date. The filename records the host, the page and the size, for example evidence/free-tiers--vercel.com--pricing--1440x900@1--full.jpg. A number the screenshot does not show is not recorded, even when the live page states it. That is why some pages carry fewer competitor numbers than you might expect: I would rather leave a figure out than quote one I cannot show.

Prices move. When a vendor changes a plan, the date on our page goes stale before the number does, and the stale date is the signal. Nothing here is generated from a vendor's live page at build time. Every competitor number is typed once into one source file, and a page cannot quote a number that is not there; the build fails on a price typed by hand. The same rule applies to our own rates: a rate card is published with a date, is immutable once published, and every credit price on this site is computed from the card rather than repeated from memory.

— Sebastian Mertens, founder

FAQ

Is there a per-project fee on ohmyho.st?

No. Every project draws from the organization's one balance, and there is no fixed project-count limit. A project costs what it keeps and uses: customer files, a deployed script, requests, database active time, a linked hostname and the mail it sends. Mail needs Paid; a hostname needs Paid or the “Powered by ohmyho.st” flag and uses no domain credits while that flag shows. A parked project with a sleeping database keeps costing its scripts, any customer files and any metered hostname; database disk and seven-day backups are included.

What does a parked side project cost per month?

About 19.80 credits for the quiet project itemized above, including one active database hour and a retained script. Databases sleep after five idle minutes, with no active-RAM charge while asleep. Allocated disk and seven-day backups are included. Customer files and retained Worker scripts keep their separate rates. Bandwidth from Workers is not charged.

Can I leave with my data?

Yes. The Owner requests an on-demand export and receives a password-encrypted ZIP with a portable SQL dump: one accepted request per project per rolling 24 hours, downloaded through a signed link valid for 24 hours. Exports are free and available at zero credits. Restore the dump on any Postgres host; your auth provider stays yours.

Why is there no deploy dashboard?

Because the agent that wrote the code has the context a dashboard lacks. It deploys through 130 MCP tools, and every expensive or destructive action is a plan you confirm followed by an execute call. The portal at app.ohmyho.st shows projects, credits, budgets and API tokens, so you can watch spending without running anything.

Does choosing the EU region cost more?

No. Region is a per-project choice made once at project creation, and US is the default. New projects provision databases, new files and builds in their selected region. Existing projects moved to US with their owner's authorization use US databases; recorded R2 locations remain unchanged. Read database_compute_get for actual database location. Prices are identical in both regions. Transactional mail is sent and processed in the US regardless of the project's choice, so mail placement is not part of that decision.

How do I know a comparison price is still right?

Read the date on the line under each comparison. Prices were checked on 2026-09-28 from each vendor's own pricing page, and the screenshot is kept in the repository. If the date looks old, open the linked page and compare. If the vendor moved, the page is due for a re-check, and the stale date tells you so.

Sources

Cost breakdown · Compare Vercel · About · What Vercel, Supabase and Resend cost for five side projects