Skip to main content
Your agent’s handler code runs in your own app. Novu routes each inbound message to your bridge - an HTTP endpoint such as /api/novu - and delivers your reply back to the connected channel. Getting to production means running that bridge somewhere Novu can reach it, in three stages:
If you followed the Quickstart with npx novu connect, your local setup is already wired - the bridge route, .env.local credentials, and a dev:novu script are in place. Start with the Local tab below.
Run the bridge on your machine and expose it to Novu with a dev tunnel.
  1. Start your app with the tunnel:
This runs your app alongside a Novu dev tunnel. The CLI discovers the agents on your bridge route, opens the tunnel, and registers the tunnel URL as the agent’s dev bridge automatically - you never paste a URL for local work.
  1. Message your agent on the connected channel. Your local handler code runs and replies in the thread.
npm run dev starts the app without the tunnel. Use npm run dev:novu whenever you want Novu to reach your machine.

Set up the tunnel manually

If you wired the bridge yourself instead of using npx novu connect, first follow Connecting your app to add the bridge route, register agents with serve(), and set your Novu credentials. Then start a tunnel with:
This creates the tunnel and registers the discovered agents, the same way dev:novu does.
If you created the agent in the dashboard without the CLI tunnel, open the agent’s overview page and set the connection mode to Local before messaging it.

Next steps

Conversation observability

View agent conversations, lifecycle, and signal activity in the dashboard.

Connecting your app

Bridge route, serve(), and environment variables.

Update an agent bridge API

Set the bridge URL programmatically after deployment.