Nubo

web apps & APIs

Bring your framework.
We bring everything else.

Node, Python, Go, Ruby, anything that fits in a container. You get a public URL on your domain with TLS handled, logs you can tail, replicas that grow with traffic, and a rollback button when a release goes sideways.

runtime, your call

If it runs in a container, it runs on Nubo.

Builds run on Paketo buildpacks with the Jammy Full builder, so the common stacks auto-detect from your repo. Need something else? Drop in a Dockerfile and we'll run that instead.

runtimes · auto-detected

frameworks

  • React
  • Next.js
  • Remix
  • SvelteKit
  • Nuxt
  • Astro
  • Express
  • Django
  • FastAPI
  • Flask
  • Rails
  • ASP.NET Core
  • Laravel

wired in, day one

The stuff you'd otherwise build into a server.

Nubo handles the nginx config, the certbot cron, and the log shipper for you. You write the app; we run the layer between your laptop and the public URL.

  • Custom domain + TLS

    Connect your domain, type the hostname, click save. We issue the cert and renew it.

  • Real-time logs

    Every request, every console.log, every error, streamed into the dashboard you deploy from.

  • One-click rollback

    Every deploy is saved. Bad release? Roll back to the last good one in seconds.

  • Secrets & env vars

    Encrypted at rest, scoped per Frame, never checked into your repo.

in the dashboard

Built-in for the boring parts.

Logs, rollbacks, domains, metrics. The whole set lives in one console, next to the deploys that produced them.

live logs

See what your app is doing.

Requests, console.logs, and errors stream into the same dashboard you deploy from, in real time. You can search, filter, and tail them. Logs persist across deploys, so yesterday's bug is still readable today.

web-app · logs live
10:42:18 INF server listening on :3000
10:42:19 REQ GET /api/posts 200 · 14ms
10:42:19 REQ GET /api/me 200 · 6ms
10:42:20 INF cache miss for slug=hello-world
10:42:20 REQ POST /api/posts 201 · 41ms
10:42:21 WRN slow query detected · 320ms
10:42:21 REQ GET / 200 · 8ms
10:42:22 REQ GET /api/posts/42 200 · 11ms
web-app · deployments error
  • v1.4.2 commit c0ffeebee · main
    failed
  • v1.4.1 commit 4b2a91e · main
  • v1.4.0 commit ae31fa2 · main
  • v1.3.9 commit 9f8de31 · main

one-click rollback

Shipped a bug?
Undo it.

Every deploy is saved. When a release goes sideways, click "Roll back" on the last good one. Traffic returns to it in seconds. No git surgery required.

custom domains

Your domain. HTTPS handled.

Connect your domain in the dashboard, paste the hostname, hit save. We issue the TLS cert, keep it renewed, and route traffic. The whole thing takes a minute.

web-app · custom domain

Hostname

  • Domain connected
  • TLS certificate issued
  • Routing live traffic
metrics live

Deploys today

11

Frames online

12/ 14

Build p95

42s

deploys · last 14 days peak 14/d
-13d -7d today

metrics

The numbers worth tracking.

Deploys per day, Frames online, build performance. The same fleet-wide view we use ourselves, available the moment your first Frame ships.

preview every PR

A live URL for every pull request.

Open a PR, get a Frame with its own URL. Share it with design, QA, or your boss before anything ships to production. Closed and merged PRs clean themselves up.

github · pull request #142

Add Stripe checkout webhook

@gabriel wants to merge into main

Nubo / checkout preview ready
pr-142-checkout.frames.nubo.app
built 14s · auto-expires on merge

replicas & regions

Scales as the traffic does.

Set a min and max on replicas and Nubo Cloud scales between them as your app gets busier. Pick a region close to your users, or run in two when one isn't enough.

checkout · production us-east-01

Replicas

3 / 10

RPS

428

p95

38ms

load · last 5 minutes scaled to 3 replicas at 14:42

the rest of your stack

Plays well with the rest of your stack.

Connect to managed Postgres, Redis, or any external API the same way you would on a server. Drop the URL into secrets and ship.

env · production checkout · 4 keys
  • DATABASE_URL =
  • REDIS_URL =
  • STRIPE_SECRET_KEY =
  • SENTRY_DSN =

stop reading

Got an idea?
Ship it tonight.

Sign up with GitHub, pick a repo, and we'll take it from there. Seven days on the house, no card and no sales call required.