BlogHono

How to deploy a Hono app.

A Hono app runs on Antideploy as a Node server. If it was written for Cloudflare Workers, it needs one small adapter.

How the Agent API works
  • Hono detectedFrom your package.json
  • A Node serverThrough @hono/node-server
  • PORTRead it and listen on 0.0.0.0
  • From WorkersOne adapter, one start script

The short answer

To deploy a Hono app, give your coding agent the sentence below. Antideploy detects Hono in your package.json and runs your start script. Hono itself does not listen on a port, so your project needs a Node server around it, usually @hono/node-server, and a start script that runs it. The server must read the PORT variable.

Say this to your coding agent

Set this project up to deploy on Antideploy. Fetch https://antideploy.com/agent.md and follow it.

What Antideploy detects

  • Hono. Detected from the hono dependency, like Express, Fastify, Koa, NestJS and hapi.
  • The start command. A Procfile web: line wins. Otherwise it runs your start script with npm run start.
  • The port. It starts your app with PORT set.
  • Earlier hosts. If your project has a wrangler.toml, Antideploy notes that it was set up for Cloudflare before. That file is ignored.

A Hono server for Node

src/index.ts
import { serve } from "@hono/node-server";
import { Hono } from "hono";

const app = new Hono();

app.get("/", (c) => c.text("Hello"));

serve({
  fetch: app.fetch,
  port: Number(process.env.PORT) || 3000,
  hostname: "0.0.0.0",
});
package.json
{
  "scripts": {
    "build": "tsc",
    "start": "node dist/index.js"
  },
  "dependencies": {
    "@hono/node-server": "latest",
    "hono": "latest"
  }
}

Replace latest with the versions you use. If you write TypeScript, compile it in the build script and run the compiled file in start. A start script that needs a tool kept only in devDependencies, such as tsx, can fail, because development dependencies are removed from the image after the build.

Moving from Cloudflare Workers

A Hono app written for Workers usually ends with export default app. That works on Workers, which supply the server. It does not start a server on its own. To run it on Antideploy, keep the app as it is, add the Node adapter above, and add a start script. Code that uses Workers features, such as D1 or KV bindings, needs a replacement, for example Postgres through DATABASE_URL.

Step by step

  1. Add the adapter and the start script

    Install @hono/node-server, add the serve call and a start script.

  2. Paste the sentence and approve one link

    Your agent creates the app, and a database if your code needs one.

  3. Deploy and open the link

    Antideploy installs, builds, starts your script and checks that the app answers. Your agent tells you the address.

01Before you commit

Here's where it stops.

A platform that only tells you what it is good at is one you find the edges of in production. These are the ones to know before your first deploy.

  1. Apps sleep when idle

    On every plan, an app nobody is using goes to sleep and the next visit wakes it. The first request took 2.9 to 13.9 seconds in our measurements, depending on the stack. There are no always-on workers, so use a cron job or a webhook for background work.

  2. One instance, no previews

    Each app is one instance with 1 shared vCPU and 1 GB of memory, and a Java app gets 1 dedicated vCPU and 2 GB. There are no preview deployments and no per-branch URLs.

  3. The disk forgets

    Anything written to local disk is gone on the next deploy. Apps that speak S3 get a bucket instead.

02Questions

Hono questions, answered.

Anything else? Write to us and a person answers.

support@antideploy.com
Does Hono work with WebSockets?

A Node server supports them through Hono's Node WebSocket helper. Each app is one long-running process, and Antideploy sets no time limit of its own on a connection.

Can I keep using Cloudflare bindings like KV or D1?

No. Those exist only on Workers. Use Postgres through DATABASE_URL and a bucket for files.

What does it cost?

A Hono server counts as one live app. The Free plan includes 1 live app with a server and 1 Postgres database.

Why does my deploy say it cannot tell how to run the app?

There is no start script and no Procfile. Add a start script that runs your server.

Deploy something. Start with one sentence.

Paste one sentence into your coding agent, click Approve once, and get a live link. No card, no trial clock.

Start from GitHub or a folder
Prompt copied Paste it into Claude Code, Codex or Cursor and press Enter.