selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

ResolveHQ logo

Self-host ResolveHQ

v0.3.4

Cloudflare-native helpdesk for small support teams

BetaSource AvailableOther
Updatedlast week
LanguageTypescript
Setup difficultyModerate
MobileResponsive
ThemeDark mode
Stars
208
Requires
Cloudflare D1, Cloudflare Email Routing, Cloudflare Queues, Cloudflare R2
Install with Cloudflare Workers
Three-pane inbox showing ticket queue, conversation thread, and customer detailsReports page with ticket volume and response-time charts and CSV export buttonPublic help center page listing knowledge base articles for a workspaceMobile ticket view with status, priority, assignee fields, conversation, and bottom navigation

What is ResolveHQ?

ResolveHQ is a helpdesk for small support teams that runs on your Cloudflare account as a single Worker. It provides a three-pane inbox with ticket management, RFC 5322 email threading, attachments in R2, saved replies, AI drafts, a public help center, automation rules, SLA tracking with business hours, satisfaction ratings, GDPR export and erasure, workspace backups, webhooks, Slack and Telegram notifications, a scoped REST API, and a read-only MCP server. Deploy via one-click button or Wrangler. Requires Cloudflare account with domain for Email Routing, R2, and optionally Resend. Source-available license permits internal use only.

Should you self-host ResolveHQ?

ResolveHQ scores 40/100 on selfhost.directory (how scoring works) and ranks #8 of 9 in Helpdesk. It has 208 GitHub stars.

It shipped 6 stable releases in the past year. The latest, v0.3.4, came out on 28 September 2026. New versions land roughly every 2 days.

Setup is moderate: expect some configuration beyond a single command. It is Other-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is chatwoot (84/100, 38 501 stars). It scores higher overall, so compare the two before you pick. See ResolveHQ vs chatwoot side by side.

Features

  • AI AssistanceOff by default; requires admin to enable in Settings
  • Automations
  • Data export & erasure
  • Email Threading
  • Knowledge base & help center
  • MCP server (read-only)Read-only; write tools planned for later
  • Multi-workspace & roles
  • Reports & CSV export
  • REST API with scoped keys
  • Satisfaction ratings
  • Shared inbox
  • SLAs with working hours
  • Snooze tickets
  • Webhooks & notificationsPayloads carry IDs and statuses, never message text
  • Workspace backupsNo restore button; restore is a manual runbook

ResolveHQ README

How to install ResolveHQ

Install ResolveHQ with Cloudflare Workers

Environment variables
SESSION_PEPPER (required, 32+ chars), RESEND_API_KEY, RESEND_WEBHOOK_SECRET, SYSTEM_MAIL_FROM, APP_URL, TICKET_RETENTION_DAYS, TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY, OUTBOUND_REPLY_TOKEN, WORKERS_AI_MODEL, AI_GATEWAY_ID, OPENAI_API_KEY, OPENAI_MODEL, EMAIL_EVENTS_QUEUE_NAME

Deploy to Cloudflare

The deployment flow reads wrangler.jsonc and provisions everything ResolveHQ needs:

  • D1 database resolvehq
  • R2 bucket resolvehq-attachments
  • Queues resolvehq-inbound-mail, resolvehq-outbound-mail, and resolvehq-maintenance, plus their dead-letter queues and their drain consumers
  • Rate limit namespaces 1001 (auth, 10 requests/minute) and 1002 (writes, 120 requests/minute)
  • A cron trigger that runs every 5 minutes

Requires Cloudflare account with domain for Email Routing, R2 activation, and optionally Resend account

How to configure ResolveHQ

  • AI_GATEWAY_IDOptional. Routes Workers AI calls through an AI Gateway.

    Optional. Routes Workers AI calls through an AI Gateway.

  • APP_URLOptional. Overrides the request origin for CSRF validation, cookie security, and links in emails.

    Optional. Overrides the request origin for CSRF validation, cookie security, and links in emails.

  • DEV_MAIL_MODEdisabledOptional. Set to 'capture' locally to record outgoing mail in Settings instead of sending it. Production defaults to 'disabled'.

    Optional. Set to 'capture' locally to record outgoing mail in Settings instead of sending it. Production defaults to 'disabled'.

    values: capture, disabled

  • EMAIL_EVENTS_QUEUE_NAMEresolvehq-email-eventsOptional. Set only if you name the Cloudflare Email Sending events queue something other than 'resolvehq-email-events'.

    Optional. Set only if you name the Cloudflare Email Sending events queue something other than 'resolvehq-email-events'.

  • OPENAI_API_KEYOptional. OpenAI API key for AI assistance when Workers AI is not configured.

    Optional. OpenAI API key for AI assistance when Workers AI is not configured.

  • OPENAI_MODELgpt-4o-miniOptional. Overrides the default OpenAI model.

    Optional. Overrides the default OpenAI model.

  • OUTBOUND_REPLY_TOKENOptional. Set to 'enabled' to send a signed Reply-To address on outgoing mail for better threading.

    Optional. Set to 'enabled' to send a signed Reply-To address on outgoing mail for better threading.

    values: enabled

  • RESEND_API_KEYOptional. Required to actually send outbound mail.

    Optional. Required to actually send outbound mail.

  • RESEND_WEBHOOK_SECRETOptional. Required to verify Resend delivery webhooks.

    Optional. Required to verify Resend delivery webhooks.

  • SESSION_PEPPERRequired. At least 32 random characters; used to pepper password and token hashes.

    Required. At least 32 random characters; used to pepper password and token hashes.

  • SYSTEM_MAIL_FROMOptional. Sender for system mail; defaults to no-reply@<your app host>.

    Optional. Sender for system mail; defaults to no-reply@<your app host>.

  • TICKET_RETENTION_DAYSOptional. Set a whole number of days (1–3650) to automatically delete resolved and closed tickets older than that window, including attachments.

    Optional. Set a whole number of days (1–3650) to automatically delete resolved and closed tickets older than that window, including attachments.

    values: 1-3650

  • TURNSTILE_SECRET_KEYOptional. Secret key for Turnstile verification. Both site key and secret key must be set together.

    Optional. Secret key for Turnstile verification. Both site key and secret key must be set together.

  • TURNSTILE_SITE_KEYOptional. Adds a Cloudflare Turnstile challenge to sign-in, sign-up, and forgot-password. Both site key and secret key must be set together.

    Optional. Adds a Cloudflare Turnstile challenge to sign-in, sign-up, and forgot-password. Both site key and secret key must be set together.

  • WORKERS_AI_MODEL@cf/meta/llama-4-scout-17b-16e-instructOptional. Overrides the default Workers AI text model.

    Optional. Overrides the default Workers AI text model.

ResolveHQ releases & version history

FAQ

How do I report a security issue?

Use GitHub private vulnerability reporting on the repository. Details are in SECURITY.md.

How do customers rate support?

Resolving replies get three rating links appended. Ratings are stored in your database and shown in Reports next to the number of responses, so a score is never presented without its sample size. No tracking pixels are used.

Does it really run on the Cloudflare Free plan?

For small deployments, yes. Requests, D1, Queues, and R2 all have free tiers that a team of a few agents will not exhaust. Password hashing at sign-in is close to the Free plan CPU limit per request, so if sign-ins start failing under load, Workers Paid removes that ceiling.

Can I use my own domain?

Yes. Attach a custom domain to the Worker in the Cloudflare dashboard, and add an Email Routing rule for the support address on that domain. The public help center is served from the same domain at /help/<workspace>.

Is ResolveHQ open source?

No, it is source-available. You can read the code, deploy it for your own team or company, and modify it for your own use, but you cannot resell it, host it as a service for others, redistribute it, or rebrand it without written permission.

More in Helpdesk

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…