Complete without being complex.
The open-source helpdesk for modern teams. Everything you need, nothing you don't.
Open Helpdesk is a full-featured, multi-tenant helpdesk system built for teams that want powerful support tools without the complexity of enterprise solutions.
Why Open Helpdesk?
- Simple — clean, modern interface anyone understands in minutes
- Open — self-host with full control, or use our managed cloud
- Complete — all the features your team needs, ready out of the box
- Affordable — generous free tier, transparent pricing, no per-agent surprises
- Ticket Management — Full lifecycle: create, assign, track, resolve, discard. Priority, categories, custom fields
- Reports & CSAT — Resolution metrics, agent performance, charts, and customer satisfaction surveys
- Canned Responses — Predefined replies with "/" quick inserter for faster agent responses
- Custom Fields — 6 field types (text, number, select, multi-select, date, checkbox) per workspace
- Audit Log — Track every action across your workspace with detailed metadata
- Roles & Permissions — 20+ granular permissions across 3 roles (Admin, Agent, Reporter)
- Workspaces — Multi-tenant isolation with custom color palettes and branding
- Invitations — Invite team members by email with batch support and auto-accept on signup
- Comments & Mentions — Mention teammates with autocomplete. XSS-sanitized content
- Email Notifications — Configurable per-event with SMTP support
- In-App Notifications — Real-time polling, mark as read, per-event preferences
- File Attachments — S3-compatible storage, drag & drop, clipboard paste, image lightbox
- Tags — Color-coded tags per workspace for flexible organization
- Dark Mode — 5 theme options: System, Light, Light Border, Dark, Dark Deep
- i18n — Full English and Spanish translations, including email templates
| Layer | Technology |
|---|---|
| Backend | NestJS, TypeORM, PostgreSQL |
| Frontend | React 19, Vite, Tailwind CSS 4 |
| Storage | S3-compatible (AWS, MinIO, Hetzner) |
| SMTP / Postmark | |
| Auth | JWT with refresh tokens |
| Deploy | Docker, Coolify |
| Repository | Description |
|---|---|
| open-helpdesk-backend | NestJS API — clean architecture, domain services, unit tests |
| open-helpdesk-client | React SPA — custom UI components, i18n, dark mode |
Sign up at openhelpdesk.dev and get a free workspace in 30 seconds. No credit card required.
git clone https://github.com/Hyzokaaa/open-helpdesk.git
cd open-helpdesk
cp .env.example .env
docker compose up -dThat's it. Open localhost for the app, API runs on port 3000.
Default admin: admin@admin.com / admin1234 — change these in .env before going to production.
All settings are in .env. The defaults work out of the box for local use. For production, you should change:
| Variable | Description |
|---|---|
JWT_SECRET |
Secret key for authentication tokens |
ADMIN_EMAIL / ADMIN_PASSWORD |
Initial admin credentials |
DB_PASSWORD |
Database password |
SMTP_* |
Email server for notifications |
FRONTEND_URL |
Public URL of your deployment |
VITE_API_URL |
Backend URL the client connects to |
See .env.example for all available options.
The backend follows clean architecture with strict layer separation:
src/
<module>/
domain/ # Entities, repositories (interfaces), services (business logic)
application/ # Commands and queries (use case orchestration)
infrastructure/ # Controllers, TypeORM models, repository implementations
- Domain services contain all business logic — no framework dependencies
- Commands/Queries orchestrate use cases — no entity mutation, no framework imports
- Controllers are pure wiring — inject dependencies, instantiate commands, return results
Contributions are welcome! Open Helpdesk is licensed under AGPL-3.0, which means:
- You can use, modify, and self-host freely
- If you offer a modified version as a service, you must publish your changes
- The copyright holder can grant commercial exceptions
To contribute:
- Fork the relevant repository (backend or client)
- Create a feature branch
- Follow the architecture conventions described above
- Submit a pull request
AGPL-3.0 © 2026 Luis Miguel (Hyzokaaa)