Skip to main content
Ship

Your team can just ship things.

A push-to-deploy PaaS for vibe-coded internal apps and PR previews. Your compute, your auth, a platform you don’t have to run.

How Ship works

1

Install Ship anywhere you deploy.

Machines join a shared compute pool you set up once with one command or your favorite IaC tooling. The daemon connects to Ship to receive workloads, deploy apps to the pool, and route inbound connections.

  • CLI
  • Kubernetes
  • Terraform
  • Argo CD
  • Flux
  • OAuth
Installing the Ship daemon to connect a machine to Ship's cloud
2

Connect your repo.

Ship detects your stack, builds your app's container, and deploys it across your compute. No Dockerfile required.

Connecting a git repository to Ship to build and deploy its container
3

Share your app. Control access.

Every app gets a URL that can be public to the world or private to your team.

An app URL that can be public to the world or private to a team
4

Push to deploy on your compute.

On every git push, Ship deploys your apps and spreads replicas across your compute pools by default. One provider's outage won't take your apps down.

Ship spreading app replicas across compute pools from multiple providers on git push
Why Ship

DevEx. Velocity. Control.

Everyone builds apps now. Let them ship quickly on compute you govern instead of your infra sprawling onto a PaaS.

Get push to deploy and PR previews

Your team wants the ergonomics of PaaS, you want infrastructure you control. Now everyone wins.

Know where everything runs

Every app lands in one place you can see, instead of on a personal VPS you find out about later.

You're not limited to PaaS primitives

Your team's apps can use S3, RDS, IAM roles—anything in your providers' catalogs.

Choose the best compute providers

Optimize for price, geography, GPU, or cross-provider redundancy without changing your deploy workflows.

Don't panic over every PaaS security incident

Breaches seem to happen with alarming frequency these days, don't they?

Operate one platform, not many

Keep using the observability and security tools you already standardized.

“A self-hosted PaaS in your VPC!”

We’ve heard that story before.
Ship is different.

You don’t host the control plane. Yes, your coding agent writes great Terraform, but with Ship, you only install a lightweight daemon and operationalize nothing. Nothing messes with your existing infra.

The gateway is built in. The agent connects your apps with secure tunnels and gives them URLs. Receive requests on any hardware without reconfiguring your network.

What will your team ship first?

No matter the app, public or private: one workflow covers the deployment, the URL, the access, and the routing.

  • https://mcp-server.acme.com
  • https://dashboard-pr-42-preview.internal
  • https://discord-bot.ngrok.app
  • https://n8n.internal
  • https://fastapi.acme.com
  • https://excalidraw.internal
  • https://vibe-coded-dashboard.ngrok.app
  • https://atlantis.acme.com
  • https://lunch-roulette.internal
  • https://nextjs-app.acme.com
  • https://slack-bot.ngrok.app
  • https://grafana.internal
  • https://docusaurus.acme.com
  • https://streamlit.ngrok.app
  • https://kafka-ui.internal
  • https://strapi.acme.com
  • https://go-api-rust-rewrite.internal
  • https://anything-with-a-dockerfile.ngrok.app
Works anywhere

New deployment targets just dropped.

Bring the compute you already run with Terraform, Argo CD, or Flux, or connect a provider and let Ship provision pools of VMs, GPUs, or Kubernetes clusters for you. Either way, apps land in shared pools your platform team owns, not one-off clusters people spin up and forget.

Ship provisioning VM pools, GPUs, and Kubernetes clusters across providers
Authentication

Auth the app author can't skip.

Set SSO, OAuth, OIDC, or IP restrictions at the platform level, and Ship enforces them in front of every app. Nobody has to remember auth, and no internal app sits on an open URL.

Access rules with OAuth, OIDC, and IP restrictions enforced in front of an app
CI preview

Preview environments the whole internet can't see.

Every pull request gets a preview with a .internal URL that's only available on your team's private network.

A pull request preview environment on a private .internal URL
Gateway

With a production-grade gateway built in.

Flip on auth, firewalls, bot-blocking from a single screen. Ship turns those choices into Traffic Policy and enforces them at ngrok's cloud, before requests reach your app. DDoS protection and global acceleration come standard.

Ship's Gateway configuration panel with controls for acceleration, authentication, bots and crawlers, DDoS protection, and firewall
Service-to-serviceComing soon

Services find each other by URL.

An app on a VM can call an API in your K8s cluster, no matter the networks or continents between them.

An app on a VM calling an API in a Kubernetes cluster by URL
Pricing

$0.001

per workload-hourplus Gateway traffic costs
See full pricing

Already have a gateway? Pay only for workload hours.

All the boxes you need to check to safely host apps from the vibe-coding masses.

SOC 2 Type II
Outbound-only daemon
HIPAA & BAA
Code stays on your compute
GDPR
SSO in front of every app
RBAC
Scoped, revocable credentials
Audit logs
WAF & DDoS protection

Frequently asked questions

We already ship with Ship.
Now try it yourself.

No upfront costs. No contact sales. Pay only for what you use.

Join the waitlist