Attendees scan a code and, from their phones, react, chat, raise hands, send pacing feedback, ask questions and answer live polls. The presenter watches a calm real-time dashboard; an moderator runs the room — without ever interrupting the talk. Start free in the cloud, or self-host it.
Skim what it does and the roles. Pulse is for in-person and hybrid presentations where you want real engagement, not a passive audience.
Sign up at nowpresenting.net, create a workspace, and run an event in minutes — nothing to install. Prefer to host it yourself? Self-host in Docker.
Hand each person their card in Role training — a goal, the steps, and what "good" looks like for admin, organizer, presenter, moderator, and attendee.
Everything an attendee needs lives on their phone in one page. Everything a moderator needs lives on one screen. The presenter's view is read-only by design.
Emoji that float on the room's screens, plus "slow down / speed up / repeat" — aggregated with time-decay so stale signals fade.
Written Q&A with upvoting and moderation, plus a Zoom-style room chat. Answer privately to one asker or to everyone.
Authored in advance, launched on cue. Per-question result visibility: live, on-close, or staff-only. Quizzes reveal the answer at the end.
Multi-speaker bios attendees browse in-app; the moderator marks who's on stage and reveals supporting links section by section.
Lock the room, pause all interaction, clear hands, and mute or boot an individual — with a live roster of who's doing what.
Rating, choice and free-text questions attendees answer as they leave; results aggregate for staff with CSV export.
The hosted product at nowpresenting.net is the same Pulse this guide describes, run for you. You get a workspace, first-party accounts for your staff, plan limits and usage, and a support backoffice — all without touching a server. (Want to run it on your own infrastructure instead? Jump to Self-host Pulse.)
Go to nowpresenting.net and sign up with your email and a workspace name. You're signed in immediately; a welcome email lands to confirm your address (click it to verify — it also works as a one-tap sign-in link). You can also sign in any time with a magic link or a password.
A workspace holds your events, staff, branding, and event defaults. Set your brand name and colors, and pin event defaults — lock a default (e.g. anonymous feedback on, guest access off) to enforce it on every event your team runs.
Create a session, author its content, and Go live — the full flow is in Run an event below. Attendees join from the code or link with no app and no account.
From People, invite teammates by email and give each a role — owner, organizer, moderator, or presenter. They get a branded invite email; roles are enforced on the server for every action. Membership is per-workspace, so people only see the workspaces they belong to.
The Plan tab shows your limits — concurrent live sessions, attendees per event, and content retention — alongside live usage. The free plan is generous; limits are visible up front so nothing surprises you mid-event.
Roles are enforced on the server for every action, so scanning a join code can never grant more than attendee access. On nowpresenting.net the staff roles are per-workspace memberships you assign from People; self-hosted, they come from your directory (SSO/proxy) or a shared host key.
The person who installs Pulse and decides what "production" means for your environment — the deployment mode and how people sign in. Usually IT or whoever owns the container.
Sets everything up ahead of time on one page, then hands the live controls to an moderator. Creates the session and authors its content.
The person at the front. Their dashboard is read-mostly by design — it updates itself so they never have to touch the app mid-talk.
The moderator. Does everything live so the presenter doesn't have to — triage, launch, and take control if needed.
Anyone in the audience — physically present or joining the link from anywhere. No app to install: they scan the code (or open the link) and everything is one mobile page. In-room and remote attendees have the exact same abilities.
You don't have to use nowpresenting.net — the exact same Pulse ships as a single Docker image you can run yourself. Everything below runs on a laptop with only Docker installed; the same image deploys unchanged to any container host. (Self-hosting uses persona/host-key/proxy auth; the hosted product adds first-party accounts and workspaces.)
From the app/ folder, one command builds and runs it.
# from app/ — builds the image and serves at http://localhost:5170
docker compose up --buildBrowse to http://localhost:5170. In the default Demo mode you'll see a persona picker and a seeded sample event — good for exploring every role in separate browser tabs.
Deployment is two independent settings — the data mode and the sign-in method. Production is not tied to any cloud; pick the auth that fits.
| Setting | Values | What it controls |
|---|---|---|
PULSE_MODE | Demo · Production | Seed data, the persona picker, and the "Demo" badge. |
PULSE_AUTH | Personas · HostKey · Proxy | How identity is established (see below). |
| Auth | Who it's for | How staff sign in |
|---|---|---|
| Personas | Evaluation only | Anyone picks a role. Not for real events. |
| HostKey | Self-hosted, no SSO | Attendees join freely; staff enter a shared key. No identity provider needed. |
| Proxy | Behind any SSO | A reverse proxy (Azure Easy Auth, oauth2-proxy, Cloudflare Access, Authelia, nginx…) forwards the signed-in identity. Azure is just one option. |
Production mode with a host key: attendees join freely, only the host can present or moderate, and there's no "Demo" badge.
PULSE_MODE=Production PULSE_AUTH=HostKey PULSE_HOST_KEY=your-secret \
docker compose up --buildThe bundled tunnel profile exposes the local container on a public HTTPS URL (Cloudflare Tunnel; ngrok or Tailscale Funnel work too), so remote attendees can join from anywhere.
TUNNEL_TOKEN=your-tunnel-token docker compose --profile tunnel updeployment.env.example to .env to set all of this in one place. For a company deployment behind SSO, set PULSE_AUTH=Proxy and point it at your proxy's identity headers — the deploy.sh script wires the Azure Entra path for you if that's your environment.From Organizer → New session, then Set up, one page holds everything you prepare before the room fills.
Everything happens here so the presenter never touches the app.
Open Present on the podium laptop. It updates itself; you never click during the talk.
Scan the code or open the link. No install; in-room and remote are identical.
Room-wide controls sit in the moderator's Session panel; per-person controls are in the People roster.
Copy any card into your LMS or a one-pager. Each is written for the person doing that job, in the order they'll do it.
Goal: a running, correctly-secured instance.
app/ run docker compose up --build.deployment.env.example to .env; set PULSE_MODE=Production.PULSE_AUTH: HostKey (set a secret) for self-hosted, or Proxy behind your SSO.Goal: an event that's ready before anyone arrives.
Goal: read the room without operating anything.
Goal: keep the room engaged and safe, invisibly.
Goal: take part from your phone in seconds.