What is opendesk
opendesk is an open-source helpdesk with shared email inboxes, live chat, a knowledge base and a public API.
opendesk is an open-source helpdesk. It brings your support email, live chat and help center into one shared inbox, and every change shows up live for everyone on the team. It ships as a hosted service at opendesk.sh and as a self-hosted install, and the two run the same code.
What you get
Section titled “What you get”- Shared inbox. Every conversation is a ticket with a status, priority, assignee, team, tags and an SLA. Agents reply, add internal notes, merge, snooze and bulk edit. See Inbox and tickets.
- Mailboxes. Bring support addresses in by forwarding, IMAP and SMTP, or by connecting a Google or Microsoft account. Replies go out through your own mailbox, so customers see your address. See Mailboxes.
- Live chat. An embeddable widget with optional identity verification, typing indicators and live delivery. See Live chat widget.
- Knowledge base and help center. Collections and articles, published to a public help center your widget can link to. See Knowledge base.
- Automations and SLAs. Rules that run on ticket events, and response and resolution targets per priority. See Automations and SLA policies.
- Reports and CSAT. Volume, response times, resolution times, SLA breaches and satisfaction scores. See Reports.
- AI, optional. Draft replies, summaries, triage, translation and chat answers from your knowledge base, with any Anthropic or OpenAI-compatible provider, including local models. See AI features.
- A public API. The web app uses exactly the documented REST API, plus signed webhooks and a realtime socket. See API overview.
How it is built
Section titled “How it is built”| Part | What it does | Hosted at |
|---|---|---|
| API and workers | One Go binary. Serves the REST API, runs background jobs, relays events. OPENDESK_ROLE selects all, api or worker. |
api.opendesk.sh |
| Realtime gateway | An Elixir and Phoenix service that pushes events, presence and typing over WebSockets. It holds no database connection. | gateway.opendesk.sh |
| Web app | A React app, plus the help center and the chat widget. | app.opendesk.sh |
| Postgres | The only datastore. Neon in the cloud, stock Postgres when self-hosted. |
Every change that someone else should see is written as an event in the same database transaction as the change. A relay publishes events to NATS, the gateway pushes them to browsers, and webhooks deliver them to your endpoints. Background jobs run on Postgres. There is no Redis and no Kafka. The events catalog draws the whole path.
When you self-host, NATS runs embedded in the opendesk binary, and the whole stack (opendesk, the realtime gateway and Postgres) sits behind Caddy on one domain:
The hosted service splits the same binary into API and worker roles on AWS, with the web app on Cloudflare Pages. See Cloud architecture.
Next steps
Section titled “Next steps”Cloud
Use opendesk.sh
Nothing to install or run.
- Create your account
- Name your workspace
- Connect a mailbox
- Add the chat widget to your site
- Invite your team
Self-host
Run it on your own server
Free forever, one command to install.
- Get a server with Docker
- Point a domain at it
- Run the install script
- Create the first account
- Set up email