Vibehost

Getting started with Vibehost

You built an app with Bolt, Lovable, v0, Cursor, Claude Code or Replit. This guide takes it from your laptop (or your AI’s working folder) to a live site on your own domain with email, in about ten minutes. No servers, no Docker, no DNS archaeology.

Four ways to deploy

Every path ends in the same place: we store your code, detect the framework, build it, and put it online at a URL like https://my-shop.apps.e-biz.co.ke with SSL. Pick whichever matches how your app exists today.

1. Upload a zip

Export your project as a zip (Bolt and Lovable both have a download button; v0 has “Download code”). In the dashboard go to Apps → New app → Upload, drop the file in, give the app a name and click Deploy. You’ll see the build log live. Re-upload a new zip any time to redeploy; your domain and environment variables stay put.

Zips up to 200 MB are accepted. Don’t include node_modules; we install dependencies during the build.

2. Connect GitHub

Choose GitHub under New app, install the Vibehost GitHub App on your account or organisation, and pick the repository and branch. Every push to that branch deploys automatically (you can turn auto-deploy off per app). Lovable, Bolt and Replit can all sync your project to GitHub, which makes this the easiest “edit in the AI, see it live” loop.

3. Paste a public git URL

Have a public repository on GitHub, GitLab, Codeberg or anywhere else? Paste its https:// URL and a branch under Git URL. We mirror it and build it. Click Redeploy in the dashboard whenever you push new commits.

4. One command from your terminal (or your AI’s)

In the folder that contains your app, run npx vibehost deploy. The first time it opens your browser to authorize the machine; after that it zips the folder (respecting .gitignore), uploads it and streams the build log. This is the path for Cursor, Claude Code, Codex and Windsurf: tell the assistant to run it and it ships what it just wrote. See CLI & MCP below.

Terminalbash
cd my-app
npx vibehost deploy

How builds work

When your code arrives we look at it and decide how to build it: package.json scripts, a framework config file (next.config.*, vite.config.*, astro.config.*, svelte.config.*, nuxt.config.*), requirements.txt or pyproject.toml, a plain index.html, or a Dockerfile. From that we pick the install, build and start commands, the output folder for static sites, and the port. The result is shown on the app’s Settings tab where you can override any of it.

  • Server apps (Next.js, Express, FastAPI…) must listen on the PORT environment variable. Most frameworks do this already.
  • Static sites (Vite, Astro static, plain HTML) are served from the build output (dist/, build/ or out/) by a tiny web server with SPA fallback when we detect a router.
  • Dockerfiles are used as-is. Expose a port and we’ll route to it.
  • Builds run on Node 20 by default. Set "engines": { "node": "22" } in package.json to change it.

Environment variables

Open the app’s Environment tab, or run npx vibehost env set KEY=value. Variables are encrypted at rest and injected at build and run time. Anything that looks like a secret (…_KEY, …_SECRET, …_TOKEN) is masked in the dashboard. Public, build-time-only variables (for example NEXT_PUBLIC_* or VITE_*) are baked into the bundle, so redeploy after changing them.

Terminalbash
npx vibehost env set DATABASE_URL=postgres://...
npx vibehost env set NEXT_PUBLIC_SITE_URL=https://www.example.com
npx vibehost deploy

Custom domains

Custom domains are available on paid plans. There are two ways to get one on your app:

  1. Buy a domain here. Go to Domains → Buy a domain, search for a name, pay at checkout, and it’s added to your account with DNS already pointing at us. Nothing else to do.
  2. Bring a domain you own. Go to Domains → Add domain and enter it. We show you two nameservers to set at your registrar (GoDaddy, Namecheap, Hostinger…). Once they propagate, usually within an hour, the domain shows Active. If you’d rather keep your current DNS provider, choose External DNS and we’ll give you the exact A and CNAME records instead.

Then open your app, click Domains → Attach, pick the domain (or a subdomain like app.example.com) and optionally redirect www. We publish the DNS record and request an SSL certificate automatically; the app is reachable on both the custom domain and its apps.e-biz.co.ke address.

Or from the CLIbash
npx vibehost domains add example.com

Business email on your domain

With a domain active in your account, go to Email → Enable email on it. We create the mail domain, generate DKIM keys and publish MX, SPF, DKIM and DMARC records to DNS (if you use external DNS we list them for you to copy). When the records verify, create mailboxes like hello@example.com; each one gets a password shown once, webmail access, and IMAP/SMTP settings for Apple Mail, Outlook or your phone. Aliases (sales@, support@) can forward into any mailbox.

Mailbox counts depend on your plan; see Billing for your current limits.

CLI & MCP for AI tools

The vibehost CLI needs no install: npx vibehost … fetches it. Run npx vibehost login once per machine; it opens the browser, you approve the code shown in your terminal, and an API key scoped to your workspace is saved locally. In CI or unattended agents, set VIBEHOST_API_KEY (create a key under Settings → API keys) and VIBEHOST_API_URL=https://hosting.e-biz.co.ke instead.

Everyday commandsbash
npx vibehost login
npx vibehost deploy
npx vibehost logs
npx vibehost env set KEY=value
npx vibehost domains add example.com

MCP server

For Claude Code, Cursor, Windsurf and any other MCP-capable assistant, add the Vibehost MCP server. It exposes tools such as deploy_directory, get_logs, set_env, add_domain and create_mailbox, so you can say “deploy this and give me the URL” and it happens.

Claude Codebash
claude mcp add vibehost -e VIBEHOST_API_KEY=vh_your_api_key -e VIBEHOST_API_URL=https://hosting.e-biz.co.ke -- npx -y @vibehost/mcp
.cursor/mcp.jsonjson
{
  "mcpServers": {
    "vibehost": {
      "command": "npx",
      "args": [
        "-y",
        "@vibehost/mcp"
      ],
      "env": {
        "VIBEHOST_API_KEY": "vh_your_api_key",
        "VIBEHOST_API_URL": "https://hosting.e-biz.co.ke"
      }
    }
  }
}

Teach your agent once

Paste this into your project’s AGENTS.md or CLAUDE.md. Any agent that reads the repo will know how to deploy, set variables, read logs and attach a domain without you explaining it each time. Signed-in users get a personalised copy under Settings → Developers.

AGENTS.md / CLAUDE.mdmarkdown
## Hosting & deployment (Vibehost)

This project is deployed on Vibehost (https://hosting.e-biz.co.ke). Use the `vibehost` CLI from the project root; it is installed on demand via npx.

- **Deploy:** run `npx vibehost deploy` from the project root after making changes. It zips the working directory (respecting .gitignore), uploads it, auto-detects the framework, builds it and streams the build log. The app is live at https://<app>.apps.e-biz.co.ke and on any custom domain attached to it.
- **Environment variables:** set them with `npx vibehost env set KEY=value` (one per call), then run `npx vibehost deploy` again so the build picks them up. Never commit secrets to the repo.
- **Logs:** `npx vibehost logs` prints recent build and runtime logs. Use it to diagnose a failed deploy before changing code.
- **Custom domain:** `npx vibehost domains add example.com` attaches a domain and prints the DNS records the owner must set. SSL is issued automatically once DNS resolves.
- **Not logged in?** run `npx vibehost login`; it opens the browser so the human can approve this machine. If a VIBEHOST_API_KEY environment variable is present it is used instead.

Build notes: the platform detects Next.js, Vite/React, Astro, SvelteKit, Nuxt, Remix, Express/Node, Python (Flask/FastAPI/Django), static HTML and Dockerfiles. Apps must listen on the PORT environment variable. Static sites need a build that outputs to dist/, build/ or out/. If the build fails, read the log, fix the cause (missing dependency, wrong build command, hard-coded port) and deploy again.

Troubleshooting

The build failed.
Open the deployment and read the last lines of the log; the summary at the top usually names the cause (missing dependency, failing type check, wrong build command). Fix it locally, redeploy. Running npm run build on your machine first catches most of it.
It built but shows an application error.
Check Logs for runtime errors. The usual suspects are a missing environment variable or a server that listens on a hard-coded port instead of PORT.
My domain is stuck on “pending nameservers”.
Nameserver changes can take up to 24 hours, though most finish within the hour. Confirm the two nameservers at your registrar exactly match the ones shown, with no extras left over. Click Check now to re-verify.
Email isn’t arriving.
Open the mail domain’s DNS health panel. All of MX, SPF, DKIM and DMARC should be green; if you use external DNS, re-copy any record marked missing. Spam folders are the next place to look.
I hit a plan limit.
The dashboard and API return a clear “upgrade” message when you reach your plan’s apps, domains or mailboxes. Upgrade under Billing; new limits apply immediately.

Still stuck? Email kmnsmth4@gmail.com with your app name and we’ll take a look.